Fix(Connectivity/Windows): Modify Profile Creation Args

This commit is contained in:
Tochukwu Nkemdilim
2018-06-14 11:38:05 +01:00
parent 1535d3d768
commit abfe0238b3
2 changed files with 31 additions and 28 deletions
+21 -14
View File
@@ -13,37 +13,44 @@ pub(crate) struct Windows {
impl Windows { impl Windows {
pub fn new(name: &str) -> Result<Self, io::Error> { pub fn new(name: &str) -> Result<Self, io::Error> {
let profile_file_name = format!("netsh wlan add profile filename=\"{}\"", name);
Command::new("cmd")
.args(&["/C", &profile_file_name[..]])
.output()?;
Ok(Windows { Ok(Windows {
name: String::from(name), name: String::from(name),
output_xml_path: OUTPUT_XML_FILE_PATH.into(), output_xml_path: OUTPUT_XML_FILE_PATH.into(),
}) })
} }
}
impl Network for Windows { pub(crate) fn add_profile(&self, password: &str) -> bool {
fn connect(&self, password: &str) -> bool {
{
let mut handler = NetworkXmlProfileHandler::new(); let mut handler = NetworkXmlProfileHandler::new();
handler.content = handler handler.content = handler
.content .content
.replace("{SSID}", &self.name) .replace("{SSID}", &self.name)
.replace("{password}", password); .replace("{password}", password);
// Write details to new xml file // Write details to new xml file
if let Err(err) = handler.to_file(&self.output_xml_path).map_err(|_err| false) { if let Err(_) = handler.to_file(&self.output_xml_path).map_err(|_err| false) {
return err; return false;
}
// Add the network profile
if let Err(_) = Command::new("netsh")
.args(&["wlan", "add", "profile", &format!("filename={}", self.output_xml_path)])
.output()
{
return false;
}
true
} }
} }
impl Network for Windows {
fn connect(&self, password: &str) -> bool {
if self.add_profile(password) == false {
return false;
}
let output = Command::new("netsh") let output = Command::new("netsh")
.args(&["wlan", "connect", &format!("name = \"{}\"", self.name)]) .args(&["wlan", "connect", &format!("name={}", self.name)])
.output(); .output();
match output { match output {
@@ -1,7 +1,5 @@
pub fn get_wifi_profile() -> String { pub fn get_wifi_profile() -> String {
String::from( String::from(r#"<?xml version="1.0"?>
r#"
<?xml version="1.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"> <WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
<name>{SSID}</name> <name>{SSID}</name>
<SSIDConfig> <SSIDConfig>
@@ -25,11 +23,9 @@ pub fn get_wifi_profile() -> String {
</sharedKey> </sharedKey>
</security> </security>
</MSM> </MSM>
<MacRandomization <MacRandomization xmlns="http://www.microsoft.com/networking/WLAN/profile/v3">
xmlns="http://www.microsoft.com/networking/WLAN/profile/v3">
<enableRandomization>false</enableRandomization> <enableRandomization>false</enableRandomization>
</MacRandomization> </MacRandomization>
</WLANProfile> </WLANProfile>"#,
"#,
) )
} }