summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2018-06-12 13:35:21 +0200
committerLinus Färnstrand <linus@mullvad.net>2018-06-13 16:34:56 +0200
commita87ef879f22606a6f18ff80222d8035f0ca797d2 (patch)
treeeeb1e0ddfdcf1f2ae503aafb9bba0d1cbe86d02a
parentca4c4e9f122fc0961d1103b101365c1a1aeef3d9 (diff)
downloadmullvadvpn-a87ef879f22606a6f18ff80222d8035f0ca797d2.tar.xz
mullvadvpn-a87ef879f22606a6f18ff80222d8035f0ca797d2.zip
Rename mullvad-metadata -> mullvad-paths
-rw-r--r--Cargo.toml2
-rw-r--r--mullvad-daemon/Cargo.toml2
-rw-r--r--mullvad-daemon/src/bin/problem-report.rs6
-rw-r--r--mullvad-daemon/src/cache.rs19
-rw-r--r--mullvad-daemon/src/cli.rs20
-rw-r--r--mullvad-daemon/src/main.rs26
-rw-r--r--mullvad-daemon/src/settings.rs12
-rw-r--r--mullvad-daemon/tests/common/mod.rs12
-rw-r--r--mullvad-ipc-client/Cargo.toml2
-rw-r--r--mullvad-ipc-client/src/lib.rs4
-rw-r--r--mullvad-metadata/Cargo.toml9
-rw-r--r--mullvad-metadata/src/lib.rs10
-rw-r--r--mullvad-paths/Cargo.toml17
-rw-r--r--mullvad-paths/src/cache.rs26
-rw-r--r--mullvad-paths/src/lib.rs31
-rw-r--r--mullvad-paths/src/resources.rs25
-rw-r--r--mullvad-paths/src/settings.rs24
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)
+}