/// <summary> /// Executes a disconnect on the interface and changes the Status of the Link_Action_Response. /// </summary> /// <param name="laresp">The Link_Action_Response for this action.</param> /// <param name="iface">The interface do disconnect the link from.</param> public static void Action_Disconnect(ref Link_Action_Response laresp, ref NativeWifi.WlanClient.WlanInterface iface) { if (iface != null) { iface.Disconnect(); Console.WriteLine("Disconnected b/c a Disconnect Link Action was received."); laresp.Status = STATUS.SUCCESS; laresp.Result = Link_Ac_Result.SUCCESS; } else { Console.WriteLine("Cannot disconnect a disabled interface."); laresp.Status = STATUS.REJECTED; laresp.Result = Link_Ac_Result.REFUSED; } }
/// <summary> /// Executes a Power Down (disable interface) on the interface and changes the Status of the Link_Action_Response. /// </summary> /// <param name="laresp">The Link_Action_Response for this action.</param> /// <param name="iface">The interface do disconnect the link from.</param> public static void Action_Power_Down(ref Link_Action_Response laresp, ref NativeWifi.WlanClient.WlanInterface iface) { Console.WriteLine("Disabling interface."); try { using (ManagementObjectSearcher mos = new ManagementObjectSearcher(@"SELECT * FROM Win32_NetworkAdapter WHERE GUID = '" + iface.InterfaceGuid.ToString() + "'")) { ManagementObject objMO = mos.Get().Cast<ManagementObject>().SingleOrDefault(); objMO.InvokeMethod("Disable", null); } laresp.Status = STATUS.SUCCESS; laresp.Result = Link_Ac_Result.SUCCESS; } catch (Exception) { laresp.Status = STATUS.UNSPECIFIED_FAILURE; laresp.Result = Link_Ac_Result.FAILURE; } }
/// <summary> /// Converting Byte value to ASCII for Wifi Name /// </summary> /// <param name="ssid">SSID</param> /// <returns>Wifi Name as String</returns> private string GetStringForSSID(NativeWifi.Wlan.Dot11Ssid ssid) { return Encoding.ASCII.GetString(ssid.SSID, 0, (int)ssid.SSIDLength); }
/// <summary> /// Issues a scan order on the interface and processes (and sends) the rest of the message when the scan is completed. /// </summary> /// <param name="laresp">The Link_Action_Response for this action.</param> /// <param name="iface">The interface to scan.</param> /// <param name="m">The message to be processed and sent when the scan is complete.</param> public static void Action_Scan(Link_Action_Response laresp, NativeWifi.WlanClient.WlanInterface iface, Message m) { if (iface != null) { if(!iface.ScanRequested) iface.Scan(); iface.ScanRequested = true; Console.Write("Waiting for scan results..."); Information.MiscData.PendingLinkActionResponses.Add(m, laresp); //Message sent at the WlanApi class, when a scan event occurs. } else { Console.WriteLine("Cannot scan a disabled interface."); laresp.Status = STATUS.REJECTED; } }
/// <summary> /// Check Network Connected /// </summary> /// <param name="client">Native Wifi Client object</param> /// <param name="connectionName">Wifi Connection Name</param> /// <returns>True/False Bool Value</returns> private bool chkConnected(NativeWifi.WlanClient client, string connectionName) { bool connectDisConnect = false; foreach (NativeWifi.WlanClient.WlanInterface wlanIface in client.Interfaces) { NativeWifi.Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (NativeWifi.Wlan.WlanAvailableNetwork network in networks) { if (connectionName == GetStringForSSID(network.dot11Ssid)) { connectDisConnect = (network.flags.ToString().Contains("Connected")) ? true : false; break; } } } return connectDisConnect; }
/// <summary> /// Get Cipher Algorithm Pattern /// </summary> /// <param name="client">Native Wifi Client object</param> /// <param name="connectionName">Wifi Connection Name</param> /// <returns>Cipher Algorithm Pattern as string format</returns> private string getCipherAlgorithm(NativeWifi.WlanClient client, string connectionName) { string cipherAlgorithm = string.Empty; foreach (NativeWifi.WlanClient.WlanInterface wlanIface in client.Interfaces) { NativeWifi.Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (NativeWifi.Wlan.WlanAvailableNetwork network in networks) { if (connectionName == GetStringForSSID(network.dot11Ssid)) { cipherAlgorithm = network.dot11DefaultCipherAlgorithm.ToString(); break; } } } return cipherAlgorithm; }
/// <summary> /// Check Network Connected /// </summary> /// <param name="client">Native Wifi Client object</param> /// <param name="connectionName">Wifi Connection Name</param> /// <returns>Connected /Disconnected Image in string format</returns> private string chkNetworkConnected(NativeWifi.WlanClient client, string connectionName) { string connectDisConnect = string.Empty; foreach (NativeWifi.WlanClient.WlanInterface wlanIface in client.Interfaces) { NativeWifi.Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (NativeWifi.Wlan.WlanAvailableNetwork network in networks) { if (connectionName == GetStringForSSID(network.dot11Ssid)) { connectDisConnect = (network.flags.ToString().Contains("Connected")) ? "<img src='assets/Content/img/wifiConnect.png' alt='' />" : "<img src='assets/Content/img/wifiDisconnect.png' alt='' />"; break; } } } return connectDisConnect; }
/// <summary> /// Get Channel Number /// </summary> /// <param name="client">Native Wifi Client object</param> /// <param name="connectionName">Wifi Connection Name</param> /// <returns>Getting Channel Number</returns> public uint getChannelNumber(NativeWifi.WlanClient client, string connectionName) { uint channel = 0; foreach (NativeWifi.WlanClient.WlanInterface wlanIface in client.Interfaces) { NativeWifi.Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList(); foreach (NativeWifi.Wlan.WlanBssEntry network in wlanBssEntries) { if (connectionName == GetStringForSSID(network.dot11Ssid)) { channel = getChannelFromFrequency(network.chCenterFrequency); break; } } } return channel; }
/// <summary> /// Get Wifi Signal Quality /// </summary> /// <param name="client">Native Wifi Client Object</param> /// <param name="connectionName">Wifi Connection Name</param> /// <returns>uint signal value</returns> private uint getSignalQuality(NativeWifi.WlanClient client, string connectionName) { uint i = 0; foreach (NativeWifi.WlanClient.WlanInterface wlanIface in client.Interfaces) { NativeWifi.Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (NativeWifi.Wlan.WlanAvailableNetwork network in networks) { if (connectionName == GetStringForSSID(network.dot11Ssid)) { i = network.wlanSignalQuality; } } } return i; }