/// <summary> /// Clear registry /// </summary> private static async Task ClearSupervisorsAsync() { var logger = ConsoleOutLogger.Create(); var config = new IoTHubConfig(null); var registry = new IoTHubServiceHttpClient(new HttpClient(logger), config, logger); var query = "SELECT * FROM devices.modules WHERE " + $"properties.reported.{TwinProperty.Type} = '{IdentityType.Supervisor}'"; var supers = await registry.QueryAllDeviceTwinsAsync(query); foreach (var item in supers) { foreach (var tag in item.Tags.Keys.ToList()) { item.Tags[tag] = null; } foreach (var property in item.Properties.Desired.Keys.ToList()) { item.Properties.Desired[property] = null; } foreach (var property in item.Properties.Reported.Keys.ToList()) { if (!item.Properties.Desired.ContainsKey(property)) { item.Properties.Desired.Add(property, null); } } await registry.CreateAsync(item, true, CancellationToken.None); } }
/// <summary> /// Create supervisor module identity in device registry /// </summary> private static async Task MakeSupervisorAsync(string deviceId, string moduleId) { var logger = ConsoleOutLogger.Create(); var config = new IoTHubConfig(null); var registry = new IoTHubServiceHttpClient(new HttpClient(logger), config, logger); await registry.CreateAsync(new DeviceTwinModel { Id = deviceId, ModuleId = moduleId }, true, CancellationToken.None); var module = await registry.GetRegistrationAsync(deviceId, moduleId, CancellationToken.None); Console.WriteLine(JsonConvert.SerializeObject(module)); var twin = await registry.GetAsync(deviceId, moduleId, CancellationToken.None); Console.WriteLine(JsonConvert.SerializeObject(twin)); var cs = ConnectionString.Parse(config.IoTHubConnString); Console.WriteLine("Connection string:"); Console.WriteLine($"HostName={cs.HostName};DeviceId={deviceId};" + $"ModuleId={moduleId};SharedAccessKey={module.Authentication.PrimaryKey}"); }
/// <summary> /// Clear registry /// </summary> private static async Task ClearRegistryAsync() { var logger = ConsoleOutLogger.Create(); var config = new IoTHubConfig(null); var registry = new IoTHubServiceHttpClient(new HttpClient(logger), config, logger); var result = await registry.QueryAllDeviceTwinsAsync( "SELECT * from devices where IS_DEFINED(tags.DeviceType)"); foreach (var item in result) { await registry.DeleteAsync(item.Id, item.ModuleId, null, CancellationToken.None); } }
/// <summary> /// Test network scanning /// </summary> private static async Task TestNetworkScannerAsync() { var logger = ConsoleOutLogger.Create(); using (var cts = new CancellationTokenSource(TimeSpan.FromMinutes(10))) { var watch = Stopwatch.StartNew(); var scanning = new ScanServices(logger); var results = await scanning.ScanAsync(NetworkClass.Wired, cts.Token); foreach (var result in results) { Console.WriteLine($"Found {result.Address}..."); } Console.WriteLine($"Scan took: {watch.Elapsed}"); } }
/// <summary> /// Test port scanning /// </summary> private static async Task TestPortScannerAsync(string host, bool opc) { var logger = ConsoleOutLogger.Create(); var addresses = await Dns.GetHostAddressesAsync(host); using (var cts = new CancellationTokenSource(TimeSpan.FromMinutes(10))) { var watch = Stopwatch.StartNew(); var scanning = new ScanServices(logger); var results = await scanning.ScanAsync( PortRange.All.SelectMany(r => r.GetEndpoints(addresses.First())), opc?new ServerProbe(logger) : null, cts.Token); foreach (var result in results) { Console.WriteLine($"Found {result} open."); } Console.WriteLine($"Scan took: {watch.Elapsed}"); } }