diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2018-06-12 13:35:21 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2018-06-13 16:34:56 +0200 |
| commit | a87ef879f22606a6f18ff80222d8035f0ca797d2 (patch) | |
| tree | eeb1e0ddfdcf1f2ae503aafb9bba0d1cbe86d02a | |
| parent | ca4c4e9f122fc0961d1103b101365c1a1aeef3d9 (diff) | |
| download | mullvadvpn-a87ef879f22606a6f18ff80222d8035f0ca797d2.tar.xz mullvadvpn-a87ef879f22606a6f18ff80222d8035f0ca797d2.zip | |
Rename mullvad-metadata -> mullvad-paths
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | mullvad-daemon/Cargo.toml | 2 | ||||
| -rw-r--r-- | mullvad-daemon/src/bin/problem-report.rs | 6 | ||||
| -rw-r--r-- | mullvad-daemon/src/cache.rs | 19 | ||||
| -rw-r--r-- | mullvad-daemon/src/cli.rs | 20 | ||||
| -rw-r--r-- | mullvad-daemon/src/main.rs | 26 | ||||
| -rw-r--r-- | mullvad-daemon/src/settings.rs | 12 | ||||
| -rw-r--r-- | mullvad-daemon/tests/common/mod.rs | 12 | ||||
| -rw-r--r-- | mullvad-ipc-client/Cargo.toml | 2 | ||||
| -rw-r--r-- | mullvad-ipc-client/src/lib.rs | 4 | ||||
| -rw-r--r-- | mullvad-metadata/Cargo.toml | 9 | ||||
| -rw-r--r-- | mullvad-metadata/src/lib.rs | 10 | ||||
| -rw-r--r-- | mullvad-paths/Cargo.toml | 17 | ||||
| -rw-r--r-- | mullvad-paths/src/cache.rs | 26 | ||||
| -rw-r--r-- | mullvad-paths/src/lib.rs | 31 | ||||
| -rw-r--r-- | mullvad-paths/src/resources.rs | 25 | ||||
| -rw-r--r-- | mullvad-paths/src/settings.rs | 24 |
17 files changed, 138 insertions, 109 deletions
diff --git a/Cargo.toml b/Cargo.toml index 5879f8ed18..8d2f2ded90 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = [ "mullvad-daemon", "mullvad-cli", "mullvad-ipc-client", - "mullvad-metadata", + "mullvad-paths", "mullvad-types", "mullvad-rpc", "talpid-openvpn-plugin", diff --git a/mullvad-daemon/Cargo.toml b/mullvad-daemon/Cargo.toml index 0fcd8134f8..cf417b7cc4 100644 --- a/mullvad-daemon/Cargo.toml +++ b/mullvad-daemon/Cargo.toml @@ -27,7 +27,7 @@ tokio-timer = "0.1" regex = "1.0" mullvad-ipc-client = { path = "../mullvad-ipc-client" } -mullvad-metadata = { path = "../mullvad-metadata" } +mullvad-paths = { path = "../mullvad-paths" } mullvad-types = { path = "../mullvad-types" } mullvad-rpc = { path = "../mullvad-rpc" } talpid-core = { path = "../talpid-core" } diff --git a/mullvad-daemon/src/bin/problem-report.rs b/mullvad-daemon/src/bin/problem-report.rs index b3b484da73..b5df2d7fa9 100644 --- a/mullvad-daemon/src/bin/problem-report.rs +++ b/mullvad-daemon/src/bin/problem-report.rs @@ -15,7 +15,7 @@ extern crate lazy_static; extern crate regex; #[cfg(windows)] -extern crate mullvad_metadata; +extern crate mullvad_paths; extern crate mullvad_rpc; use error_chain::ChainedError; @@ -50,12 +50,10 @@ const LINE_SEPARATOR: &str = "\r\n"; #[cfg(windows)] lazy_static! { static ref LOG_DIRECTORY: PathBuf = { - use mullvad_metadata::PRODUCT_NAME; - let program_data_dir = env::var_os("ALLUSERSPROFILE").expect("Missing %ALLUSERSPROFILE% environment variable"); - PathBuf::from(program_data_dir).join(PRODUCT_NAME) + PathBuf::from(program_data_dir).join(mullvad_paths::PRODUCT_NAME) }; } diff --git a/mullvad-daemon/src/cache.rs b/mullvad-daemon/src/cache.rs deleted file mode 100644 index ba66266657..0000000000 --- a/mullvad-daemon/src/cache.rs +++ /dev/null @@ -1,19 +0,0 @@ -use {ErrorKind, Result, ResultExt}; - -use std::path::PathBuf; - -#[cfg(target_os = "linux")] -pub fn get_cache_dir() -> Result<PathBuf> { - use std::fs; - - let dir = PathBuf::from("/var/cache/mullvad-daemon"); - fs::create_dir_all(&dir).chain_err(|| ErrorKind::NoCacheDir)?; - Ok(dir) -} - -#[cfg(any(target_os = "macos", windows))] -pub fn get_cache_dir() -> Result<PathBuf> { - use mullvad_metadata::APP_INFO; - ::app_dirs::app_root(::app_dirs::AppDataType::UserCache, &APP_INFO) - .chain_err(|| ErrorKind::NoCacheDir) -} diff --git a/mullvad-daemon/src/cli.rs b/mullvad-daemon/src/cli.rs index 1ee12d7b2f..c6dcfd8def 100644 --- a/mullvad-daemon/src/cli.rs +++ b/mullvad-daemon/src/cli.rs @@ -9,8 +9,6 @@ pub struct Config { pub log_level: log::LevelFilter, pub log_file: Option<PathBuf>, pub tunnel_log_file: Option<PathBuf>, - pub resource_dir: Option<PathBuf>, - pub cache_dir: Option<PathBuf>, pub log_stdout_timestamps: bool, pub run_as_service: bool, pub register_service: bool, @@ -27,8 +25,6 @@ pub fn get_config() -> Config { }; let log_file = matches.value_of_os("log_file").map(PathBuf::from); let tunnel_log_file = matches.value_of_os("tunnel_log_file").map(PathBuf::from); - let resource_dir = matches.value_of_os("resource_dir").map(PathBuf::from); - let cache_dir = matches.value_of_os("cache_dir").map(PathBuf::from); let log_stdout_timestamps = !matches.is_present("disable_stdout_timestamps"); let run_as_service = cfg!(windows) && matches.is_present("run_as_service"); @@ -38,8 +34,6 @@ pub fn get_config() -> Config { log_level, log_file, tunnel_log_file, - resource_dir, - cache_dir, log_stdout_timestamps, run_as_service, register_service, @@ -72,20 +66,6 @@ fn create_app() -> App<'static, 'static> { .help("Save log from tunnel implementation process to this file path."), ) .arg( - Arg::with_name("resource_dir") - .long("resource-dir") - .takes_value(true) - .value_name("DIR") - .help("Uses the given directory to read needed resources, such as certificates."), - ) - .arg( - Arg::with_name("cache_dir") - .long("cache-dir") - .takes_value(true) - .value_name("DIR") - .help("Uses the given directory to read and write cache."), - ) - .arg( Arg::with_name("disable_stdout_timestamps") .long("disable-stdout-timestamps") .help("Don't log timestamps when logging to stdout, useful when running as a systemd service") diff --git a/mullvad-daemon/src/main.rs b/mullvad-daemon/src/main.rs index efcf7266a2..9bace35a2e 100644 --- a/mullvad-daemon/src/main.rs +++ b/mullvad-daemon/src/main.rs @@ -32,7 +32,7 @@ extern crate tokio_timer; extern crate uuid; extern crate mullvad_ipc_client; -extern crate mullvad_metadata; +extern crate mullvad_paths; extern crate mullvad_rpc; extern crate mullvad_types; extern crate talpid_core; @@ -44,7 +44,6 @@ extern crate talpid_types; extern crate windows_service; mod account_history; -mod cache; mod cli; mod geoip; mod logging; @@ -888,11 +887,8 @@ fn run_standalone(config: cli::Config) -> Result<()> { warn!("Running daemon as a non-administrator user, clients might refuse to connect"); } - let resource_dir = config.resource_dir.unwrap_or_else(|| get_resource_dir()); - let cache_dir = match config.cache_dir { - Some(cache_dir) => cache_dir, - None => cache::get_cache_dir()?, - }; + let resource_dir = mullvad_paths::get_resource_dir(); + let cache_dir = mullvad_paths::get_cache_dir().chain_err(|| "Unable to get cache dir")?; let daemon = Daemon::new(config.tunnel_log_file, resource_dir, cache_dir) .chain_err(|| "Unable to initialize daemon")?; @@ -917,22 +913,6 @@ fn log_version() { ) } -fn get_resource_dir() -> PathBuf { - match env::current_exe() { - Ok(mut path) => { - path.pop(); - path - } - Err(e) => { - error!( - "Failed finding the install directory. Using working directory: {}", - e - ); - PathBuf::from(".") - } - } -} - #[cfg(unix)] fn running_as_admin() -> bool { let uid = unsafe { libc::getuid() }; diff --git a/mullvad-daemon/src/settings.rs b/mullvad-daemon/src/settings.rs index 776606d1fc..d3abd190d6 100644 --- a/mullvad-daemon/src/settings.rs +++ b/mullvad-daemon/src/settings.rs @@ -86,18 +86,8 @@ impl Settings { serde_json::to_writer_pretty(file, self).chain_err(|| ErrorKind::WriteError(path)) } - #[cfg(unix)] fn get_settings_path() -> Result<PathBuf> { - let dir = PathBuf::from("/etc/mullvad-daemon"); - ::std::fs::create_dir_all(&dir).chain_err(|| ErrorKind::DirectoryError)?; - Ok(dir.join(SETTINGS_FILE)) - } - - #[cfg(windows)] - fn get_settings_path() -> Result<PathBuf> { - use mullvad_metadata::APP_INFO; - let dir = ::app_dirs::app_root(::app_dirs::AppDataType::UserConfig, &APP_INFO) - .chain_err(|| ErrorKind::DirectoryError)?; + let dir = ::mullvad_paths::get_settings_dir().chain_err(|| ErrorKind::DirectoryError)?; Ok(dir.join(SETTINGS_FILE)) } diff --git a/mullvad-daemon/tests/common/mod.rs b/mullvad-daemon/tests/common/mod.rs index 87d1636730..d5492ced47 100644 --- a/mullvad-daemon/tests/common/mod.rs +++ b/mullvad-daemon/tests/common/mod.rs @@ -42,14 +42,10 @@ impl DaemonRunner { prepare_relay_list("../dist-assets/relays.json"); let (reader, writer) = pipe().expect("failed to open pipe to connect to daemon"); - let process = cmd!( - DAEMON_EXECUTABLE_PATH, - "-v", - "--resource-dir", - "./dist-assets", - "--cache-dir", - "./" - ).dir("..") + let process = cmd!(DAEMON_EXECUTABLE_PATH, "-v", "--disable-log-to-file") + .dir("..") + .env("MULLVAD_CACHE_DIR", "./") + .env("MULLVAD_RESOURCE_DIR", "./dist-assets") .stderr_to_stdout() .stdout_handle(writer) .start() diff --git a/mullvad-ipc-client/Cargo.toml b/mullvad-ipc-client/Cargo.toml index f2d3639d07..88c2006a29 100644 --- a/mullvad-ipc-client/Cargo.toml +++ b/mullvad-ipc-client/Cargo.toml @@ -13,4 +13,4 @@ talpid-ipc = { path = "../talpid-ipc" } talpid-types = { path = "../talpid-types" } [target.'cfg(windows)'.dependencies] -mullvad-metadata = { path = "../mullvad-metadata" } +mullvad-paths = { path = "../mullvad-paths" } diff --git a/mullvad-ipc-client/src/lib.rs b/mullvad-ipc-client/src/lib.rs index 1488e094c6..53d9c6dffd 100644 --- a/mullvad-ipc-client/src/lib.rs +++ b/mullvad-ipc-client/src/lib.rs @@ -225,11 +225,11 @@ mod platform_specific { #[cfg(windows)] mod platform_specific { - extern crate mullvad_metadata; + extern crate mullvad_paths; use super::*; - use self::mullvad_metadata::PRODUCT_NAME; + use self::mullvad_paths::PRODUCT_NAME; pub fn rpc_file_path() -> Result<PathBuf> { let shared_data_directory = diff --git a/mullvad-metadata/Cargo.toml b/mullvad-metadata/Cargo.toml deleted file mode 100644 index 0de4ca3d26..0000000000 --- a/mullvad-metadata/Cargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "mullvad-metadata" -version = "0.1.0" -authors = ["Mullvad VPN <admin@mullvad.net>", "Janito Vaqueiro Ferreira Filho <janito@mullvad.net>"] -description = "Mullvad VPN application metadata" -license = "GPL-3.0" - -[dependencies] -app_dirs = "1.2" diff --git a/mullvad-metadata/src/lib.rs b/mullvad-metadata/src/lib.rs deleted file mode 100644 index f9c59b9274..0000000000 --- a/mullvad-metadata/src/lib.rs +++ /dev/null @@ -1,10 +0,0 @@ -extern crate app_dirs; - -use app_dirs::AppInfo; - -pub const PRODUCT_NAME: &str = "Mullvad VPN"; - -pub const APP_INFO: AppInfo = AppInfo { - name: PRODUCT_NAME, - author: "Mullvad", -}; diff --git a/mullvad-paths/Cargo.toml b/mullvad-paths/Cargo.toml new file mode 100644 index 0000000000..8a0b8babb8 --- /dev/null +++ b/mullvad-paths/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "mullvad-paths" +version = "0.1.0" +authors = [ + "Mullvad VPN <admin@mullvad.net>", + "Janito Vaqueiro Ferreira Filho <janito@mullvad.net>", + "Linus Färnstrand <linus@mullvad.net>" +] +description = "Mullvad VPN application paths and directories" +license = "GPL-3.0" + +[dependencies] +error-chain = "0.11" +log = "0.4" + +[target.'cfg(any(windows, target_os = "macos"))'.dependencies] +app_dirs = "1.2" diff --git a/mullvad-paths/src/cache.rs b/mullvad-paths/src/cache.rs new file mode 100644 index 0000000000..8a50b967c6 --- /dev/null +++ b/mullvad-paths/src/cache.rs @@ -0,0 +1,26 @@ +use {ErrorKind, Result, ResultExt}; + +use std::env; +use std::path::PathBuf; + +pub fn get_cache_dir() -> Result<PathBuf> { + match env::var_os("MULLVAD_CACHE_DIR") { + Some(path) => Ok(PathBuf::from(path)), + None => get_default_cache_dir(), + } +} + +#[cfg(target_os = "linux")] +fn get_default_cache_dir() -> Result<PathBuf> { + use std::fs; + + let dir = PathBuf::from("/var/cache/mullvad-daemon"); + fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed)?; + Ok(dir) +} + +#[cfg(any(target_os = "macos", windows))] +fn get_default_cache_dir() -> Result<PathBuf> { + ::app_dirs::app_root(::app_dirs::AppDataType::UserCache, &::APP_INFO) + .chain_err(|| ErrorKind::CreateDirFailed) +} diff --git a/mullvad-paths/src/lib.rs b/mullvad-paths/src/lib.rs new file mode 100644 index 0000000000..4629d8efb1 --- /dev/null +++ b/mullvad-paths/src/lib.rs @@ -0,0 +1,31 @@ +#[cfg(any(windows, target_os = "macos"))] +extern crate app_dirs; +#[macro_use] +extern crate error_chain; +#[macro_use] +extern crate log; + + +#[cfg(windows)] +const PRODUCT_NAME: &str = "Mullvad VPN"; + +#[cfg(windows)] +const APP_INFO: AppInfo = app_dirs::AppInfo { + name: PRODUCT_NAME, + author: "Mullvad", +}; + +error_chain! { + errors { + CreateDirFailed { description("Failed to create directory") } + } +} + +mod cache; +pub use cache::get_cache_dir; + +mod resources; +pub use resources::get_resource_dir; + +mod settings; +pub use settings::get_settings_dir; diff --git a/mullvad-paths/src/resources.rs b/mullvad-paths/src/resources.rs new file mode 100644 index 0000000000..4f60a88287 --- /dev/null +++ b/mullvad-paths/src/resources.rs @@ -0,0 +1,25 @@ +use std::env; +use std::path::PathBuf; + +pub fn get_resource_dir() -> PathBuf { + match env::var_os("MULLVAD_RESOURCE_DIR") { + Some(path) => PathBuf::from(path), + None => get_default_resource_dir(), + } +} + +fn get_default_resource_dir() -> PathBuf { + match env::current_exe() { + Ok(mut path) => { + path.pop(); + path + } + Err(e) => { + error!( + "Failed finding the install directory. Using working directory: {}", + e + ); + PathBuf::from(".") + } + } +} diff --git a/mullvad-paths/src/settings.rs b/mullvad-paths/src/settings.rs new file mode 100644 index 0000000000..680ddf3c8d --- /dev/null +++ b/mullvad-paths/src/settings.rs @@ -0,0 +1,24 @@ +use {ErrorKind, Result, ResultExt}; + +use std::env; +use std::path::PathBuf; + +pub fn get_settings_dir() -> Result<PathBuf> { + match env::var_os("MULLVAD_SETTINGS_DIR") { + Some(path) => Ok(PathBuf::from(path)), + None => get_default_settings_dir(), + } +} + +#[cfg(unix)] +fn get_default_settings_dir() -> Result<PathBuf> { + let dir = PathBuf::from("/etc/mullvad-daemon"); + ::std::fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed)?; + Ok(dir) +} + +#[cfg(windows)] +fn get_default_settings_dir() -> Result<PathBuf> { + ::app_dirs::app_root(::app_dirs::AppDataType::UserConfig, &::APP_INFO) + .chain_err(|| ErrorKind::CreateDirFailed) +} |
