summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-daemon/src/main.rs15
-rw-r--r--mullvad-daemon/src/settings.rs31
2 files changed, 30 insertions, 16 deletions
diff --git a/mullvad-daemon/src/main.rs b/mullvad-daemon/src/main.rs
index 505a9b41b0..bfaa1827c9 100644
--- a/mullvad-daemon/src/main.rs
+++ b/mullvad-daemon/src/main.rs
@@ -272,16 +272,11 @@ impl Daemon {
}
}
SetAccount(account_token) => {
- info!(
- "Changing account token from {} to {}",
- self.settings.account_token.as_ref().unwrap_or(&"[nothing]".to_owned()),
- account_token.as_ref().unwrap_or(&"[nothing]".to_owned())
- );
- self.settings.account_token = account_token;
+ self.settings.set_account_token(account_token);
self.save_settings();
}
GetAccount(tx) => {
- if let Err(_) = tx.send(self.settings.account_token.clone()) {
+ if let Err(_) = tx.send(self.settings.get_account_token()) {
warn!("Unable to send current account to management interface client");
}
}
@@ -387,10 +382,8 @@ impl Daemon {
);
let remote = self.remote_iter.next().unwrap();
let account_token = self.settings
- .account_token
- .as_ref()
- .ok_or(ErrorKind::InvalidSettings("No account token"))?
- .clone();
+ .get_account_token()
+ .ok_or(ErrorKind::InvalidSettings("No account token"))?;
let tunnel_monitor = self.spawn_tunnel_monitor(remote, &account_token)?;
self.tunnel_close_handle = Some(tunnel_monitor.close_handle());
self.spawn_tunnel_monitor_wait_thread(tunnel_monitor);
diff --git a/mullvad-daemon/src/settings.rs b/mullvad-daemon/src/settings.rs
index b22888e76e..589f02c8e6 100644
--- a/mullvad-daemon/src/settings.rs
+++ b/mullvad-daemon/src/settings.rs
@@ -35,7 +35,7 @@ static SETTINGS_FILE: &str = "settings.toml";
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub struct Settings {
- pub account_token: Option<String>,
+ account_token: Option<String>,
}
impl Settings {
@@ -70,6 +70,11 @@ impl Settings {
Ok(())
}
+ fn get_settings_path() -> Result<PathBuf> {
+ let dir = app_dirs::app_root(AppDataType::UserConfig, &APP_INFO)
+ .chain_err(|| ErrorKind::DirectoryError)?;
+ Ok(dir.join(SETTINGS_FILE))
+ }
fn read_settings(file: &mut File, path: PathBuf) -> Result<Settings> {
let mut data = Vec::new();
@@ -77,9 +82,25 @@ impl Settings {
toml::from_slice(&data).chain_err(|| ErrorKind::ParseError)
}
- fn get_settings_path() -> Result<PathBuf> {
- let dir = app_dirs::app_root(AppDataType::UserConfig, &APP_INFO)
- .chain_err(|| ErrorKind::DirectoryError)?;
- Ok(dir.join(SETTINGS_FILE))
+ pub fn get_account_token(&self) -> Option<String> {
+ self.account_token.clone()
+ }
+
+ pub fn set_account_token(&mut self, account_token: Option<String>) {
+ if account_token != self.account_token {
+ info!(
+ "Changing account token from {} to {}",
+ Self::format_account_token(&self.account_token),
+ Self::format_account_token(&account_token),
+ );
+ self.account_token = account_token;
+ }
+ }
+
+ fn format_account_token(account_token: &Option<String>) -> String {
+ match *account_token {
+ Some(ref account_token) => format!("\"{}\"", account_token),
+ None => "[none]".to_owned(),
+ }
}
}