Ejemplo n.º 1
0
        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) });
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 public DeviceController(NetworkDeviceViewBuilder deviceViews, NetworkDeviceService service, ICommandPublisher publisher)
 {
     _deviceViews = deviceViews;
     _service     = service;
     _publisher   = publisher;
 }
Ejemplo n.º 5
0
 public DeviceController(NetworkDeviceViewBuilder deviceViews, NetworkDeviceService service, ICommandPublisher publisher)
 {
     _deviceViews = deviceViews;
     _service = service;
     _publisher = publisher;
 }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
        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);
            }
        }