Feat(Windows/Adapter): Add Wrapper Around Wifi Adapter
This commit is contained in:
@@ -27,6 +27,7 @@ impl Linux {
|
|||||||
/// Wifi interface for linux operating system.
|
/// Wifi interface for linux operating system.
|
||||||
/// This provides basic functionalities for wifi interface.
|
/// This provides basic functionalities for wifi interface.
|
||||||
impl WifiInterface for Linux {
|
impl WifiInterface for Linux {
|
||||||
|
/// Check if wireless network adapter is enabled.
|
||||||
fn is_wifi_enabled() -> Result<bool, WifiError> {
|
fn is_wifi_enabled() -> Result<bool, WifiError> {
|
||||||
let output = Command::new("nmcli")
|
let output = Command::new("nmcli")
|
||||||
.args(&["radio", "wifi"])
|
.args(&["radio", "wifi"])
|
||||||
@@ -39,6 +40,7 @@ impl WifiInterface for Linux {
|
|||||||
.contains("enabled"))
|
.contains("enabled"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Turn on the wireless network adapter.
|
||||||
fn turn_on() -> Result<(), WifiError> {
|
fn turn_on() -> Result<(), WifiError> {
|
||||||
let _output = Command::new("nmcli")
|
let _output = Command::new("nmcli")
|
||||||
.args(&["radio", "wifi", "on"])
|
.args(&["radio", "wifi", "on"])
|
||||||
@@ -48,6 +50,7 @@ impl WifiInterface for Linux {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Turn off the wireless network adapter.
|
||||||
fn turn_off() -> Result<(), WifiError> {
|
fn turn_off() -> Result<(), WifiError> {
|
||||||
let _output = Command::new("nmcli")
|
let _output = Command::new("nmcli")
|
||||||
.args(&["radio", "wifi", "off"])
|
.args(&["radio", "wifi", "off"])
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
mod linux;
|
mod linux;
|
||||||
#[cfg(target_os = "osx")]
|
#[cfg(target_os = "osx")]
|
||||||
mod osx;
|
mod osx;
|
||||||
#[cfg(target_os = "windows")]
|
// #[cfg(target_os = "windows")]
|
||||||
mod windows;
|
mod windows;
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
pub use self::linux::{Connection, Linux as WiFi};
|
pub use self::linux::{Connection, Linux as WiFi};
|
||||||
#[cfg(target_os = "osx")]
|
#[cfg(target_os = "osx")]
|
||||||
pub use self::osx::{Connection, Osx as WiFi};
|
pub use self::osx::{Connection, Osx as WiFi};
|
||||||
#[cfg(target_os = "windows")]
|
// #[cfg(target_os = "windows")]
|
||||||
pub use self::windows::{Connection, Windows as WiFi};
|
pub use self::windows::{Connection, Windows as WiFi};
|
||||||
|
|
||||||
use std::{fmt, io};
|
use std::{fmt, io};
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ impl Osx {
|
|||||||
/// Wifi interface for osx operating system.
|
/// Wifi interface for osx operating system.
|
||||||
/// This provides basic functionalities for wifi interface.
|
/// This provides basic functionalities for wifi interface.
|
||||||
impl WifiInterface for Osx {
|
impl WifiInterface for Osx {
|
||||||
|
/// Check if wireless network adapter is enabled.
|
||||||
fn is_wifi_enabled() -> Result<bool, WifiError> {
|
fn is_wifi_enabled() -> Result<bool, WifiError> {
|
||||||
let output = Command::new("networksetup")
|
let output = Command::new("networksetup")
|
||||||
.args(&["radio", "wifi"])
|
.args(&["radio", "wifi"])
|
||||||
@@ -39,6 +40,7 @@ impl WifiInterface for Osx {
|
|||||||
.contains("enabled"))
|
.contains("enabled"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Turn on the wireless network adapter.
|
||||||
fn turn_on() -> Result<(), WifiError> {
|
fn turn_on() -> Result<(), WifiError> {
|
||||||
let output = Command::new("networksetup")
|
let output = Command::new("networksetup")
|
||||||
.args(&["-setairportpower", "en0", "on"])
|
.args(&["-setairportpower", "en0", "on"])
|
||||||
@@ -48,6 +50,7 @@ impl WifiInterface for Osx {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Turn off the wireless network adapter.
|
||||||
fn turn_off() -> Result<(), WifiError> {
|
fn turn_off() -> Result<(), WifiError> {
|
||||||
let output = Command::new("networksetup")
|
let output = Command::new("networksetup")
|
||||||
.args(&["-setairportpower", "en0", "off"])
|
.args(&["-setairportpower", "en0", "off"])
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
use platforms::Config;
|
use platforms::Config;
|
||||||
// use platforms::WifiError;
|
use platforms::WifiError;
|
||||||
use platforms::WifiInterface;
|
use platforms::WifiInterface;
|
||||||
// use std::process::Command;
|
use std::process::Command;
|
||||||
|
|
||||||
|
const WINDOWS_INTERFACE: &'static str = "Wireless Network Connection";
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Connection {
|
pub struct Connection {
|
||||||
@@ -28,4 +30,54 @@ impl Windows {
|
|||||||
|
|
||||||
/// Wifi interface for windows operating system.
|
/// Wifi interface for windows operating system.
|
||||||
/// This provides basic functionalities for wifi interface.
|
/// This provides basic functionalities for wifi interface.
|
||||||
impl WifiInterface for Windows {}
|
impl WifiInterface for Windows {
|
||||||
|
/// Check if wireless network adapter is enabled.
|
||||||
|
fn is_wifi_enabled() -> Result<bool, WifiError> {
|
||||||
|
let output = Command::new("netsh")
|
||||||
|
.args(&[
|
||||||
|
"wlan",
|
||||||
|
"show",
|
||||||
|
"interface",
|
||||||
|
&format!("name= \"{}\"", WINDOWS_INTERFACE),
|
||||||
|
])
|
||||||
|
.output()
|
||||||
|
.map_err(|err| WifiError::IoError(err))?;
|
||||||
|
|
||||||
|
Ok(String::from_utf8_lossy(&output.stdout)
|
||||||
|
.replace(" ", "")
|
||||||
|
.replace("\n", "")
|
||||||
|
.contains("enabled"))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Turn on the wireless network adapter.
|
||||||
|
fn turn_on() -> Result<(), WifiError> {
|
||||||
|
let _output = Command::new("netsh")
|
||||||
|
.args(&[
|
||||||
|
"interface",
|
||||||
|
"set",
|
||||||
|
"interface",
|
||||||
|
&format!("name= \"{}\"", WINDOWS_INTERFACE),
|
||||||
|
"ENABLED",
|
||||||
|
])
|
||||||
|
.output()
|
||||||
|
.map_err(|err| WifiError::IoError(err))?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Turn off the wireless network adapter.
|
||||||
|
fn turn_off() -> Result<(), WifiError> {
|
||||||
|
let _output = Command::new("nmcli")
|
||||||
|
.args(&[
|
||||||
|
"interface",
|
||||||
|
"set",
|
||||||
|
"interface",
|
||||||
|
&format!("name= \"{}\"", WINDOWS_INTERFACE),
|
||||||
|
"DISABLED",
|
||||||
|
])
|
||||||
|
.output()
|
||||||
|
.map_err(|err| WifiError::IoError(err))?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user