private static void AssignIPAddressToNetDeviceService(NetworkDeviceService netDeviceService, ISystemRegistryHive systemRegistryHive, IPAddress ipAddress, IPAddress subnetMask, IPAddress defaultGateway) { var netCfgInstanceID = netDeviceService.NetCfgInstanceID; var adapterKeyName = @"Parameters\Adapters\" + netCfgInstanceID; var adapterIPConfig = @"Tcpip\Parameters\Interfaces\" + netCfgInstanceID; var interfaceKeyName = @"Parameters\Interfaces\" + netCfgInstanceID; // this is some kind of reference to where the actual TCP/IP configuration is located systemRegistryHive.SetServiceRegistryKey("Tcpip", adapterKeyName, "IpConfig", RegistryValueKind.MultiString, new[] { adapterIPConfig }); // DefaultGateway is not necessary for most people, but can ease the installation for people with complex networks systemRegistryHive.SetServiceRegistryKey("Tcpip", interfaceKeyName, "DefaultGateway", RegistryValueKind.MultiString, new[] { defaultGateway.ToString() }); // Extracurricular note: it's possible to use more than one IP address, but you have to specify subnet mask for it as well. systemRegistryHive.SetServiceRegistryKey("Tcpip", interfaceKeyName, "IPAddress", RegistryValueKind.MultiString, new[] { ipAddress.ToString() }); systemRegistryHive.SetServiceRegistryKey("Tcpip", interfaceKeyName, "SubnetMask", RegistryValueKind.MultiString, new[] { subnetMask.ToString() }); // Note related to GUI mode: // We already bind the device class instance to NetCfgInstanceID, and that's all that's necessary for TCP/IP to work during text-mode. // However, TCP/IP must be bound to NetCfgInstanceID as well, TCP/IP will work in GUI mode without it, but setup will fail at T-39 // with the following error: "setup was unable to initialize Network installation components. the specific error code is 2" // and in the subsequent screen: "LoadLibrary returned error 1114 (45a)" (related to netman.dll, netshell.dll) // The first component in one entry corresponds to the first component in the other entries: systemRegistryHive.SetServiceRegistryKey("Tcpip", "Linkage", "Bind", RegistryValueKind.MultiString, new[] { @"\DEVICE\" + netCfgInstanceID }); systemRegistryHive.SetServiceRegistryKey("Tcpip", "Linkage", "Export", RegistryValueKind.MultiString, new[] { @"\DEVICE\TCPIP_" + netCfgInstanceID }); // NetCfgInstanceID should be quoted, HiveSystemInf should take care of the use of quote characters (special character): systemRegistryHive.SetServiceRegistryKey("Tcpip", "Linkage", "Route", RegistryValueKind.MultiString, new[] { QuotedStringUtils.Quote(netCfgInstanceID) }); }
public Form1() { //deviceService = new NetworkDeviceService(); InitializeComponent(); serviceBus = ServiceBusFactory.New(cfg => { cfg.ReceiveFrom("rabbitmq://localhost/cqrs-poc"); cfg.UseRabbitMq(cf => { cf.ConfigureHost(new Uri("rabbitmq://localhost/cqrs-poc"), hc => { hc.SetUsername("petcar"); hc.SetPassword("?!Krone2009"); }); }); }); commandPublisher = new CommandPublisher(serviceBus); service = new NetworkDeviceService(commandPublisher); ndvb = new NetworkDeviceViewBuilder(); serviceBus.SubscribeHandler <HandlerNotification>(service.Handle); //service.ServiceResultRecieved += (sender, result) => //{ // var a = result; //}; service.ServiceResultRecieved += service_ServiceResultRecieved; GetDevices(); }
private void AssignIPAddressToNetDeviceService(NetworkDeviceService netDeviceService, IPAddress staticIP, IPAddress staticSubnet, IPAddress staticGateway) { if (null == staticIP || null == staticSubnet || null == staticGateway) { Console.WriteLine("Please select TCP/IP settings for '" + netDeviceService.DeviceDescription + "':"); Console.WriteLine("* Pressing Enter will default to 192.168.1.50 / 255.255.255.0 / 192.168.1.1"); if (null == staticIP) { staticIP = ReadValidIPv4Address("IP Address", new IPAddress(0xC0A832)); // 192.168.1.50 } if (null == staticSubnet) { staticSubnet = ReadValidIPv4Address("Subnet Mask", new IPAddress(0xFFFFFF00)); // 255.255.255.0 } if (null == staticGateway) { staticGateway = ReadValidIPv4Address("Default Gateway", new IPAddress(0xC0A80101)); // 192.168.1.1 } } AssignIPAddressToNetDeviceService(netDeviceService, _installation.SetupRegistryHive, staticIP, staticSubnet, staticGateway); AssignIPAddressToNetDeviceService(netDeviceService, _installation.HiveSystemInf, staticIP, staticSubnet, staticGateway); }
public DeviceController(NetworkDeviceViewBuilder deviceViews, NetworkDeviceService service, ICommandPublisher publisher) { _deviceViews = deviceViews; _service = service; _publisher = publisher; }
public DeviceController(NetworkDeviceViewBuilder deviceViews, NetworkDeviceService service, ICommandPublisher publisher) { _deviceViews = deviceViews; _service = service; _publisher = publisher; }
static void Main(string[] args) { Console.WriteLine("Sleeping for 3 seconds.."); IServiceBus serviceBus = ServiceBusFactory.New(cfg => { cfg.ReceiveFrom("rabbitmq://localhost/cqrs-poc"); cfg.UseRabbitMq(cf => { cf.ConfigureHost(new Uri("rabbitmq://localhost/cqrs-poc"), hc => { hc.SetUsername("petcar"); hc.SetPassword("?!Krone2009"); }); }); }); CommandPublisher commandPublisher = new CommandPublisher(serviceBus); NetworkDeviceService service = new NetworkDeviceService(commandPublisher); NetworkDeviceViewBuilder ndvb = new NetworkDeviceViewBuilder(); serviceBus.SubscribeHandler<HandlerNotification>(service.Handle); service.ServiceResultRecieved += (sender, result) => { Console.WriteLine( "CommandId: {0}, Result: {1}, Message: {2}, Exception: {3}", result.CommandId != default(Guid) ? result.CommandId : Guid.Empty, result.Success, result.Message, result.ExceptionMessage); }; Thread.Sleep(4000); //var id = Guid.NewGuid(); //service.CreateDevice(id, "SESM-1"); Random rnd = new Random(); for (int i = 0; i < 100; i++) { var r = rnd.Next(1000, 6000); Thread.Sleep(r); var devices = ndvb.GetDevices(); foreach (var device in devices) { var online = r % 2 == 0; service.SetDeviceStatus(device.Id, online); } } //Thread.Sleep(3000); //service.CreateDevice(id, "SESM-1"); //for (int i = 0; i < 100; i++) //{ // Thread.Sleep(500); // var id = Guid.NewGuid(); // service.CreateDevice(id, "SESM-" + i.ToString()); //} //foreach (var device in ndvb.GetDevices()) //{ // Console.WriteLine("{0}\t{1}\t{2}", device.Id, device.Hostname, device.Version); //} //Console.ReadKey(); //var id = Guid.NewGuid(); //service.CreateDevice(id, "SESM-1"); //Thread.Sleep(2000); ////service.CreateDevice(id, "SESM-1"); //foreach (var device in ndvb.GetDevices()) //{ // Console.WriteLine("{0}\t{1}\t{2}", device.Id, device.Hostname, device.Version); //} ////Thread.Sleep(2000); //Random rnd = new Random(); ////for (int i = 0; i < 2000; i++) ////{ //// Thread.Sleep(rnd.Next(1,20)); //// service.SetDeviceHostname(id, "SESM-" + i.ToString()); ////} //for (int i = 0; i < 100; i++) //{ // Thread.Sleep(rnd.Next(1, 200)); // service.SetDeviceHostname(id, "SESM-" + i.ToString()); //} //foreach (var device in ndvb.GetDevices()) //{ // Console.WriteLine("{0}\t{1}\t{2}", device.Id, device.Hostname, device.Version); //} ////service.CreateDevice(id, "SESM-1"); Console.ReadKey(); }
static void Main(string[] args) { Console.WriteLine("Sleeping for 3 seconds.."); IServiceBus serviceBus = ServiceBusFactory.New(cfg => { cfg.ReceiveFrom("rabbitmq://localhost/cqrs-poc"); cfg.UseRabbitMq(cf => { cf.ConfigureHost(new Uri("rabbitmq://localhost/cqrs-poc"), hc => { hc.SetUsername("petcar"); hc.SetPassword("?!Krone2009"); }); }); }); CommandPublisher commandPublisher = new CommandPublisher(serviceBus); NetworkDeviceService service = new NetworkDeviceService(commandPublisher); NetworkDeviceViewBuilder ndvb = new NetworkDeviceViewBuilder(); serviceBus.SubscribeHandler <HandlerNotification>(service.Handle); service.ServiceResultRecieved += (sender, result) => { Console.WriteLine( "CommandId: {0}, Result: {1}, Message: {2}, Exception: {3}", result.CommandId != default(Guid) ? result.CommandId : Guid.Empty, result.Success, result.Message, result.ExceptionMessage); }; Thread.Sleep(4000); //var id = Guid.NewGuid(); //service.CreateDevice(id, "SESM-1"); Random rnd = new Random(); for (int i = 0; i < 100; i++) { var r = rnd.Next(1000, 6000); Thread.Sleep(r); var devices = ndvb.GetDevices(); foreach (var device in devices) { var online = r % 2 == 0; service.SetDeviceStatus(device.Id, online); } } //Thread.Sleep(3000); //service.CreateDevice(id, "SESM-1"); //for (int i = 0; i < 100; i++) //{ // Thread.Sleep(500); // var id = Guid.NewGuid(); // service.CreateDevice(id, "SESM-" + i.ToString()); //} //foreach (var device in ndvb.GetDevices()) //{ // Console.WriteLine("{0}\t{1}\t{2}", device.Id, device.Hostname, device.Version); //} //Console.ReadKey(); //var id = Guid.NewGuid(); //service.CreateDevice(id, "SESM-1"); //Thread.Sleep(2000); ////service.CreateDevice(id, "SESM-1"); //foreach (var device in ndvb.GetDevices()) //{ // Console.WriteLine("{0}\t{1}\t{2}", device.Id, device.Hostname, device.Version); //} ////Thread.Sleep(2000); //Random rnd = new Random(); ////for (int i = 0; i < 2000; i++) ////{ //// Thread.Sleep(rnd.Next(1,20)); //// service.SetDeviceHostname(id, "SESM-" + i.ToString()); ////} //for (int i = 0; i < 100; i++) //{ // Thread.Sleep(rnd.Next(1, 200)); // service.SetDeviceHostname(id, "SESM-" + i.ToString()); //} //foreach (var device in ndvb.GetDevices()) //{ // Console.WriteLine("{0}\t{1}\t{2}", device.Id, device.Hostname, device.Version); //} ////service.CreateDevice(id, "SESM-1"); Console.ReadKey(); }
private void ProcessServiceInstallSection(PNPDriverINFFile pnpDriverInf, string sectionName, string serviceName) { Console.WriteLine("Registering service '" + serviceName + "'"); var serviceInstallSection = pnpDriverInf.GetSection(sectionName); var displayName = string.Empty; var serviceBinary = string.Empty; var serviceTypeString = string.Empty; var errorControlString = string.Empty; var loadOrderGroup = string.Empty; //string guiModeRelativeRoot = @"Services\" + serviceName; foreach (var line in serviceInstallSection) { var keyAndValues = INIFile.GetKeyAndValues(line); switch (keyAndValues.Key) { case "AddReg": { // http://msdn.microsoft.com/en-us/library/ff546326%28v=vs.85%29.aspx // AddReg will always come after ServiceBinaryServiceBinary var relativeRoot = @"Services\" + serviceName; foreach (var registrySectionName in keyAndValues.Value) { ProcessAddRegSection(pnpDriverInf, registrySectionName, relativeRoot); } break; } case "DisplayName": { displayName = INIFile.TryGetValue(keyAndValues.Value, 0); break; } case "ServiceBinary": { serviceBinary = INIFile.TryGetValue(keyAndValues.Value, 0); break; } case "ServiceType": { serviceTypeString = INIFile.TryGetValue(keyAndValues.Value, 0); break; } case "ErrorControl": { errorControlString = INIFile.TryGetValue(keyAndValues.Value, 0); break; } case "LoadOrderGroup": { loadOrderGroup = INIFile.TryGetValue(keyAndValues.Value, 0); break; } } } displayName = pnpDriverInf.ExpandToken(displayName); displayName = INIFile.Unquote(displayName); var fileName = serviceBinary.Replace(@"%12%\", string.Empty); var imagePath = PNPDriverINFFile.ExpandDirID(serviceBinary); var serviceType = PNPDriverINFFile.ConvertFromIntStringOrHexString(serviceTypeString); var errorControl = PNPDriverINFFile.ConvertFromIntStringOrHexString(errorControlString); var deviceDescription = pnpDriverInf.GetDeviceDescription(_hardwareID, _architectureIdentifier, _minorOSVersion, _productType); BaseDeviceService deviceService; if (pnpDriverInf.IsNetworkAdapter) { // this is a nic, we are binding TCP/IP to it // we need a unique NetCfgInstanceID that will be used with Tcpip service and the nic's class var netCfgInstanceID = "{" + Guid.NewGuid().ToString().ToUpper() + "}"; deviceService = new NetworkDeviceService(deviceDescription, serviceName, displayName, loadOrderGroup, serviceType, errorControl, fileName, imagePath, netCfgInstanceID); _deviceServices.Add(deviceService); } else { deviceService = new BaseDeviceService(deviceDescription, serviceName, displayName, loadOrderGroup, serviceType, errorControl, fileName, imagePath); _deviceServices.Add(deviceService); } }