summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2018-07-31 15:00:52 +0200
committerLinus Färnstrand <linus@mullvad.net>2018-08-06 11:27:39 +0200
commit33fef23d43fc560159e62ca01ec1c42ea5af7445 (patch)
treedbc51e5b1b7a3bcbeaecac566bf7242681325559
parent2cb76995ce9953e38fa50c17fc6fde521b1bfcef (diff)
downloadmullvadvpn-33fef23d43fc560159e62ca01ec1c42ea5af7445.tar.xz
mullvadvpn-33fef23d43fc560159e62ca01ec1c42ea5af7445.zip
use dirs instead of app_dirs
-rw-r--r--README.md16
-rw-r--r--mullvad-paths/Cargo.toml2
-rw-r--r--mullvad-paths/src/cache.rs27
-rw-r--r--mullvad-paths/src/lib.rs34
-rw-r--r--mullvad-paths/src/logs.rs24
-rw-r--r--mullvad-paths/src/rpc_address.rs15
-rw-r--r--mullvad-paths/src/settings.rs27
7 files changed, 67 insertions, 78 deletions
diff --git a/README.md b/README.md
index 916727c112..d6999fa2b8 100644
--- a/README.md
+++ b/README.md
@@ -278,9 +278,9 @@ The settings directory can be changed by setting the `MULLVAD_SETTINGS_DIR` envi
| Platform | Path |
|----------|------|
-| Linux | `/etc/mullvad-daemon/settings.json` |
-| macOS | `/etc/mullvad-daemon/settings.json` |
-| Windows | `%LOCALAPPDATA%\Mullvad\Mullvad VPN\settings.json`
+| Linux | `/etc/mullvad-vpn/` |
+| macOS | `/etc/mullvad-vpn/` |
+| Windows | `%LOCALAPPDATA%\Mullvad VPN\`
#### Logs
@@ -288,8 +288,8 @@ The log directory can be changed by setting the `MULLVAD_LOG_DIR` environment va
| Platform | Path |
|----------|------|
-| Linux | `/var/log/mullvad-daemon/` + systemd |
-| macOS | `/var/log/mullvad-daemon/` |
+| Linux | `/var/log/mullvad-vpn/` + systemd |
+| macOS | `/var/log/mullvad-vpn/` |
| Windows | `C:\ProgramData\Mullvad VPN\` |
#### Cache
@@ -298,9 +298,9 @@ The cache directory can be changed by setting the `MULLVAD_CACHE_DIR` environmen
| Platform | Path |
|----------|------|
-| Linux | `/var/cache/mullvad-daemon/` |
-| macOS | `/var/root/Library/Caches/mullvad-daemon/` |
-| Windows | `%LOCALAPPDATA%\Mullvad\Mullvad VPN\` |
+| Linux | `/var/cache/mullvad-vpn/` |
+| macOS | `/var/root/Library/Caches/mullvad-vpn/` |
+| Windows | `%LOCALAPPDATA%\Mullvad VPN\` |
#### RPC address file
diff --git a/mullvad-paths/Cargo.toml b/mullvad-paths/Cargo.toml
index 2b28fcf377..b08e19b947 100644
--- a/mullvad-paths/Cargo.toml
+++ b/mullvad-paths/Cargo.toml
@@ -14,4 +14,4 @@ error-chain = "0.12"
log = "0.4"
[target.'cfg(any(windows, target_os = "macos"))'.dependencies]
-app_dirs = "1.2"
+dirs = "1.0"
diff --git a/mullvad-paths/src/cache.rs b/mullvad-paths/src/cache.rs
index 3f0b7130f9..133d08df86 100644
--- a/mullvad-paths/src/cache.rs
+++ b/mullvad-paths/src/cache.rs
@@ -1,33 +1,28 @@
-use {ErrorKind, Result, ResultExt};
+use Result;
use std::env;
-use std::fs;
use std::path::PathBuf;
/// Creates and returns the cache directory pointed to by `MULLVAD_CACHE_DIR`, or the default
/// one if that variable is unset.
pub fn cache_dir() -> Result<PathBuf> {
- let dir = get_cache_dir()?;
- fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed(dir.clone()))?;
- Ok(dir)
+ ::create_and_return(get_cache_dir)
}
fn get_cache_dir() -> Result<PathBuf> {
match env::var_os("MULLVAD_CACHE_DIR") {
Some(path) => Ok(PathBuf::from(path)),
- None => get_default_cache_dir(),
+ None => get_default_cache_dir().map(|dir| dir.join(::PRODUCT_NAME)),
}
}
-#[cfg(target_os = "linux")]
fn get_default_cache_dir() -> Result<PathBuf> {
- Ok(PathBuf::from("/var/cache/mullvad-daemon"))
-}
-
-#[cfg(any(target_os = "macos", windows))]
-fn get_default_cache_dir() -> Result<PathBuf> {
- Ok(::app_dirs::get_app_root(
- ::app_dirs::AppDataType::UserCache,
- &::metadata::APP_INFO,
- )?)
+ #[cfg(target_os = "linux")]
+ {
+ Ok(PathBuf::from("/var/cache"))
+ }
+ #[cfg(any(target_os = "macos", windows))]
+ {
+ ::dirs::cache_dir().ok_or_else(|| ::ErrorKind::FindDirError.into())
+ }
}
diff --git a/mullvad-paths/src/lib.rs b/mullvad-paths/src/lib.rs
index e7a8ffbc9e..a2f5478d31 100644
--- a/mullvad-paths/src/lib.rs
+++ b/mullvad-paths/src/lib.rs
@@ -1,10 +1,11 @@
#[cfg(any(windows, target_os = "macos"))]
-extern crate app_dirs;
+extern crate dirs;
#[macro_use]
extern crate error_chain;
#[macro_use]
extern crate log;
+use std::fs;
use std::path::PathBuf;
error_chain! {
@@ -13,35 +14,34 @@ error_chain! {
description("Failed to create directory")
display("Failed to create directory {}", path.display())
}
+ #[cfg(any(windows, target_os = "macos"))]
+ FindDirError { description("Not able to find requested directory" )}
#[cfg(windows)]
NoProgramDataDir { description("Missing %ALLUSERSPROFILE% environment variable") }
}
- foreign_links {
- AppDirs(app_dirs::AppDirsError) #[cfg(any(windows, target_os = "macos"))];
- }
}
-#[cfg(any(windows, target_os = "macos"))]
-mod metadata {
- use app_dirs::AppInfo;
+#[cfg(unix)]
+const PRODUCT_NAME: &str = "mullvad-vpn";
- pub const PRODUCT_NAME: &str = "Mullvad VPN";
+#[cfg(windows)]
+const PRODUCT_NAME: &str = "Mullvad VPN";
- pub const APP_INFO: AppInfo = AppInfo {
- name: PRODUCT_NAME,
- author: "Mullvad",
- };
-}
#[cfg(windows)]
-fn get_program_data_dir() -> Result<PathBuf> {
- use std::{env, path::Path};
- match env::var_os("ALLUSERSPROFILE") {
- Some(dir) => Ok(Path::new(&dir).join(::metadata::PRODUCT_NAME)),
+fn get_allusersprofile_dir() -> Result<PathBuf> {
+ match std::env::var_os("ALLUSERSPROFILE") {
+ Some(dir) => Ok(PathBuf::from(&dir)),
None => bail!(ErrorKind::NoProgramDataDir),
}
}
+fn create_and_return(dir_fn: fn() -> Result<PathBuf>) -> Result<PathBuf> {
+ let dir = dir_fn()?;
+ fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed(dir.clone()))?;
+ Ok(dir)
+}
+
mod cache;
pub use cache::cache_dir;
diff --git a/mullvad-paths/src/logs.rs b/mullvad-paths/src/logs.rs
index 2a6f1a22d6..fe717b71c0 100644
--- a/mullvad-paths/src/logs.rs
+++ b/mullvad-paths/src/logs.rs
@@ -1,31 +1,29 @@
-use {ErrorKind, Result, ResultExt};
+use Result;
use std::env;
-use std::fs;
use std::path::PathBuf;
/// Creates and returns the logging directory pointed to by `MULLVAD_LOG_DIR`, or the default
/// one if that variable is unset.
pub fn log_dir() -> Result<PathBuf> {
- let dir = get_log_dir()?;
- fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed(dir.clone()))?;
- Ok(dir)
+ ::create_and_return(get_log_dir)
}
/// Get the logging directory, but don't try to create it.
pub fn get_log_dir() -> Result<PathBuf> {
match env::var_os("MULLVAD_LOG_DIR") {
Some(path) => Ok(PathBuf::from(path)),
- None => get_default_log_dir(),
+ None => get_default_log_dir().map(|dir| dir.join(::PRODUCT_NAME)),
}
}
-#[cfg(unix)]
fn get_default_log_dir() -> Result<PathBuf> {
- Ok(PathBuf::from("/var/log/mullvad-daemon"))
-}
-
-#[cfg(windows)]
-fn get_default_log_dir() -> Result<PathBuf> {
- ::get_program_data_dir()
+ #[cfg(unix)]
+ {
+ Ok(PathBuf::from("/var/log"))
+ }
+ #[cfg(windows)]
+ {
+ ::get_allusersprofile_dir()
+ }
}
diff --git a/mullvad-paths/src/rpc_address.rs b/mullvad-paths/src/rpc_address.rs
index 68ed349edf..a97b3e0c36 100644
--- a/mullvad-paths/src/rpc_address.rs
+++ b/mullvad-paths/src/rpc_address.rs
@@ -12,12 +12,13 @@ pub fn get_rpc_address_path() -> Result<PathBuf> {
}
}
-#[cfg(unix)]
fn get_default_rpc_address_dir() -> Result<PathBuf> {
- Ok(PathBuf::from("/tmp"))
-}
-
-#[cfg(windows)]
-fn get_default_rpc_address_dir() -> Result<PathBuf> {
- ::get_program_data_dir()
+ #[cfg(unix)]
+ {
+ Ok(PathBuf::from("/tmp"))
+ }
+ #[cfg(windows)]
+ {
+ ::get_allusersprofile_dir().map(|dir| dir.join(::PRODUCT_NAME))
+ }
}
diff --git a/mullvad-paths/src/settings.rs b/mullvad-paths/src/settings.rs
index 80c0c73947..6f7a7fb867 100644
--- a/mullvad-paths/src/settings.rs
+++ b/mullvad-paths/src/settings.rs
@@ -1,33 +1,28 @@
-use {ErrorKind, Result, ResultExt};
+use Result;
use std::env;
-use std::fs;
use std::path::PathBuf;
/// Creates and returns the settings directory pointed to by `MULLVAD_SETTINGS_DIR`, or the default
/// one if that variable is unset.
pub fn settings_dir() -> Result<PathBuf> {
- let dir = get_settings_dir()?;
- fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed(dir.clone()))?;
- Ok(dir)
+ ::create_and_return(get_settings_dir)
}
fn get_settings_dir() -> Result<PathBuf> {
match env::var_os("MULLVAD_SETTINGS_DIR") {
Some(path) => Ok(PathBuf::from(path)),
- None => get_default_settings_dir(),
+ None => get_default_settings_dir().map(|dir| dir.join(::PRODUCT_NAME)),
}
}
-#[cfg(unix)]
fn get_default_settings_dir() -> Result<PathBuf> {
- Ok(PathBuf::from("/etc/mullvad-daemon"))
-}
-
-#[cfg(windows)]
-fn get_default_settings_dir() -> Result<PathBuf> {
- Ok(::app_dirs::get_app_root(
- ::app_dirs::AppDataType::UserData,
- &::metadata::APP_INFO,
- )?)
+ #[cfg(unix)]
+ {
+ Ok(PathBuf::from("/etc"))
+ }
+ #[cfg(windows)]
+ {
+ ::dirs::data_local_dir().ok_or_else(|| ::ErrorKind::FindDirError.into())
+ }
}