public void SetWiFiPolicy() { Log.Info($"Setting WiFi Policy for Firewall"); try { WlanClient wlan = new WlanClient(); var intf = wlan.Interfaces.First(); var profilename = intf.CurrentConnection.profileName; var manager = new NetworkListManagerClass(); var connectedNetworks = manager.GetNetworks(NLM_ENUM_NETWORK.NLM_ENUM_NETWORK_CONNECTED).Cast <INetwork>(); foreach (var network in connectedNetworks) { var netname = network.GetName(); if (profilename == netname) { //network in profile list is same as network in wifi connection: var cat = network.GetCategory(); if (cat != NLM_NETWORK_CATEGORY.NLM_NETWORK_CATEGORY_PRIVATE) { network.SetCategory(NLM_NETWORK_CATEGORY.NLM_NETWORK_CATEGORY_PRIVATE); Log.Info($"Success setting WiFi Policy for Firewall to Private"); } } } } catch (Exception e) { Log.Error(e, $"Problem setting WiFi Policy"); } }
private void GetConnectedNetworkNames() { ConnectedNetworks = new List <string>(); var manager = new NetworkListManagerClass(); var connectedNetworks = manager.GetNetworks(NLM_ENUM_NETWORK.NLM_ENUM_NETWORK_CONNECTED).Cast <INetwork>(); foreach (var network in connectedNetworks) { ConnectedNetworks.Add(network.GetName()); } }
public static List <NetInfo> GetNetworks() { List <NetInfo> result = new List <NetInfo>(); try { var nets = NetworkInterface .GetAllNetworkInterfaces() .Where(n => n.OperationalStatus == OperationalStatus.Up) .Where(n => n.NetworkInterfaceType != NetworkInterfaceType.Loopback); foreach (NetworkInterface ni in nets) { NetInfo info = new NetInfo(); IPInterfaceProperties ipip = ni.GetIPProperties(); if (ipip.UnicastAddresses != null && ipip.UnicastAddresses.Count > 0) { info.IPAddress = ni.GetIPProperties().UnicastAddresses.Where(a => a.Address.AddressFamily == AddressFamily.InterNetwork).First().Address; if (ipip.GatewayAddresses != null && ipip.GatewayAddresses.Count > 0) { info.Gateway = ni.GetIPProperties().GatewayAddresses.Where(a => a.Address.AddressFamily == AddressFamily.InterNetwork).First().Address; } } result.Add(info); } var networks = new NetworkListManagerClass().GetNetworks(NETWORKLIST.NLM_ENUM_NETWORK.NLM_ENUM_NETWORK_CONNECTED).Cast <INetwork>(); foreach (var net in networks) { foreach (INetworkConnection netcon in net.GetNetworkConnections()) { string name = netcon.GetNetwork().GetName(); var ni = nets.FirstOrDefault(i => new Guid(i.Id) == netcon.GetAdapterId()); var niip = ni.GetIPProperties().UnicastAddresses.Where(a => a.Address.AddressFamily == AddressFamily.InterNetwork).FirstOrDefault(); if (niip != null && result.Any(a => a.IPAddress.Equals(niip.Address))) { NetInfo info = result.Find(a => a.IPAddress.Equals(niip.Address)); info.NetworkName = name; } else { continue; } } } } catch { } return(result); }
public NetworkCostManager() { try { var networkListManager = new NetworkListManagerClass(); networkListManager.ConnectionCostChanged += this.ConnectionCostChanged; networkListManager.NetworkConnectivityChanged += this.NetworkConnectivityChanged; this.networkListManager = networkListManager; } catch (COMException e) when(e.HResult == -2147220992) // 0x80040200 { // Expected if we're < Windows 8 logger.Info("Unable to load NetworkListManager: not supported"); } catch (Exception e) { logger.Error(e, $"Failed to load network list manager: {e.Message}"); } }
public NetworkCostManager() { try { var networkListManager = new NetworkListManagerClass(); networkListManager.ConnectionCostChanged += this.ConnectionCostChanged; networkListManager.NetworkConnectivityChanged += this.NetworkConnectivityChanged; this.networkListManager = networkListManager; } catch (COMException e) when (e.HResult == -2147220992) // 0x80040200 { // Expected if we're < Windows 8 logger.Info("Unable to load NetworkListManager: not supported"); } catch (Exception e) { logger.Error(e, $"Failed to load network list manager: {e.Message}"); } }
public static NetInfo GetDefaultGatewayWithNetName() { NetInfo netinfo = new NetInfo(); //get defauklt gateway var nets = NetworkInterface .GetAllNetworkInterfaces() .Where(n => n.OperationalStatus == OperationalStatus.Up) .Where(n => n.NetworkInterfaceType != NetworkInterfaceType.Loopback) .Where(n => n.GetIPProperties().GatewayAddresses != null); foreach (NetworkInterface ni in nets) { if (ni.GetIPProperties().GatewayAddresses.Count > 0) { netinfo.Gateway = ni.GetIPProperties().GatewayAddresses.Where(a => a.Address.AddressFamily == AddressFamily.InterNetwork).First().Address; netinfo.IPAddress = ni.GetIPProperties().UnicastAddresses.Where(a => a.Address.AddressFamily == AddressFamily.InterNetwork).First().Address; break; } } // get network name to the gateway var networks = new NetworkListManagerClass().GetNetworks(NETWORKLIST.NLM_ENUM_NETWORK.NLM_ENUM_NETWORK_CONNECTED).Cast <INetwork>(); foreach (var net in networks) { foreach (INetworkConnection netcon in net.GetNetworkConnections()) { string name = netcon.GetNetwork().GetName(); var ni = nets.FirstOrDefault(i => new Guid(i.Id) == netcon.GetAdapterId()); var niip = ni.GetIPProperties().GatewayAddresses.Where(a => a.Address.AddressFamily == AddressFamily.InterNetwork).FirstOrDefault(); if (niip != null && netinfo.Gateway.Equals(niip.Address)) { netinfo.NetworkName = name; return(netinfo); } } } return(new NetInfo()); }
public NetworkListManagerHelper() { this.manager = new NetworkListManagerClass(); }
private async void Monitor_DoWork(object sender, DoWorkEventArgs e) { try { //INIT: var Document = File.ReadAllText(DockerComposeFile); var input = new StringReader(Document); WebClient client = new TimeOutWebClient(); var KnownContainerCount = 0; // Load the stream var yaml = new YamlStream(); yaml.Load(input); var mapping = (YamlMappingNode)yaml.Documents[0].RootNode; foreach (var entry in mapping.Children) { if ((entry.Key as YamlScalarNode).Value == "services") { foreach (var service in (entry.Value as YamlMappingNode).Children) { KnownContainerCount++; } } } var wifi = new Wifi(); WlanClient wlan = new WlanClient(); while (true) { try { List <ContainerListResponse> containers = (await dockerclient.Containers.ListContainersAsync(new ContainersListParameters() { All = true, Filters = new Dictionary <string, IDictionary <string, bool> >() { ["status"] = new Dictionary <string, bool>() { { "running", true } }, ["label"] = new Dictionary <string, bool>() { { "com.docker.compose.project=bootleggerlocal", true } } } })).ToList(); //TODO: Check containers against the known list: if (containers.Count != KnownContainerCount) { if (!CurrentErrors.Contains(CONTAINEREXCEPTION)) { CurrentErrors.Add(CONTAINEREXCEPTION); } } else { CurrentErrors.Remove(CONTAINEREXCEPTION); } //CHECK WIFI CONNECTION: //CHECK IP //get ip information: ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection objMOC = objMC.GetInstances(); bool ipaddressok = false; //string actualip = "none found"; foreach (ManagementObject objMO in objMOC) { if ((bool)objMO["IPEnabled"]) { var ip = (objMO["IPAddress"] as string[]); if (ip?[0]?.Equals(IP) ?? false) { ipaddressok = true; //actualip = "10.10.10.1"; } } } if (!ipaddressok) { if (!CurrentErrors.Contains(IPEXCEPTION)) { CurrentErrors.Add(IPEXCEPTION); } } else { CurrentErrors.Remove(IPEXCEPTION); } //CHECK DISK SPACE: try { DriveInfo driveInfo = new DriveInfo(@"C:"); long FreeSpace = driveInfo.AvailableFreeSpace / 1024 / 1024; if (FreeSpace < 1000) { if (!CurrentErrors.Contains(DRIVESPACEXCEPTION)) { CurrentErrors.Add(DRIVESPACEXCEPTION); } } else { CurrentErrors.Remove(DRIVESPACEXCEPTION); } } catch (System.IO.IOException) { //Console.WriteLine(errorMesage); } //WIFI: if (wifi.ConnectionStatus != WifiStatus.Connected) { if (!CurrentErrors.Contains(WIFIEXCEPTION)) { CurrentErrors.Add(WIFIEXCEPTION); } } else { CurrentErrors.Remove(WIFIEXCEPTION); //wifi is connected, so check for public/private //check for network on right policy otherwise firewall rule wont work... if (CurrentInstallerType == InstallerType.HYPER_V) { var manager = new NetworkListManagerClass(); var connectedNetworks = manager.GetNetworks(NLM_ENUM_NETWORK.NLM_ENUM_NETWORK_CONNECTED).Cast <INetwork>(); var intf = wlan.Interfaces.First(); var profilename = intf.CurrentConnection.profileName; bool matchespolicy = false; foreach (var network in connectedNetworks) { //Console.WriteLine(network.GetName() + " "); if (profilename == network.GetName()) { //network in profile list is same as network in wifi connection: var cat = network.GetCategory(); if (cat == NLM_NETWORK_CATEGORY.NLM_NETWORK_CATEGORY_PRIVATE) { matchespolicy = true; } } } if (!matchespolicy) { if (!CurrentErrors.Contains(WIFIPOLICYEXCEPTION)) { CurrentErrors.Add(WIFIPOLICYEXCEPTION); } } else { CurrentErrors.Remove(WIFIPOLICYEXCEPTION); } } } OnRunWarning?.Invoke(CurrentErrors); //CHECK APPLICATION bool connected = false; try { var result = await client.DownloadStringTaskAsync($"http://{IP}:{PORT}/status"); connected = true; } catch { } if (!connected) { if (!CurrentErrors.Contains(SERVEREXCEPTION)) { CurrentErrors.Add(SERVEREXCEPTION); } } else { CurrentErrors.Remove(SERVEREXCEPTION); } } catch (Exception ex) { CurrentErrors.Add(new NamedException() { Name = "Unknown", Description = ex.Message }); } finally { OnRunWarning?.Invoke(CurrentErrors); } Thread.Sleep(5000); } } catch (Exception ex) { Log.Error(ex); Monitor_DoWork(sender, e); } }