summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2018-06-13 12:48:19 +0200
committerLinus Färnstrand <linus@mullvad.net>2018-06-13 16:34:58 +0200
commit558c9626bef1cbd701bf740e71054a53aafa7b74 (patch)
treebdfc4c11024325f33428bad3e36115d6bd9e64bb
parentadcbd875ba59b248b5a63482a701582e78172fba (diff)
downloadmullvadvpn-558c9626bef1cbd701bf740e71054a53aafa7b74.tar.xz
mullvadvpn-558c9626bef1cbd701bf740e71054a53aafa7b74.zip
Refactor out create_daemon that everyone can use
-rw-r--r--mullvad-daemon/src/main.rs23
-rw-r--r--mullvad-daemon/src/system_service.rs12
2 files changed, 15 insertions, 20 deletions
diff --git a/mullvad-daemon/src/main.rs b/mullvad-daemon/src/main.rs
index 43cc2e49e0..ff936ef8ea 100644
--- a/mullvad-daemon/src/main.rs
+++ b/mullvad-daemon/src/main.rs
@@ -886,16 +886,7 @@ fn run_standalone(config: cli::Config) -> Result<()> {
warn!("Running daemon as a non-administrator user, clients might refuse to connect");
}
- let log_dir = if config.log_to_file {
- Some(mullvad_paths::log_dir().chain_err(|| "Unable to get log directory")?)
- } else {
- None
- };
- let resource_dir = mullvad_paths::get_resource_dir();
- let cache_dir = mullvad_paths::cache_dir().chain_err(|| "Unable to get cache dir")?;
-
- let daemon =
- Daemon::new(log_dir, resource_dir, cache_dir).chain_err(|| "Unable to initialize daemon")?;
+ let daemon = create_daemon(config)?;
let shutdown_handle = daemon.shutdown_handle();
shutdown::set_shutdown_signal_handler(move || shutdown_handle.shutdown())
@@ -908,6 +899,18 @@ fn run_standalone(config: cli::Config) -> Result<()> {
Ok(())
}
+fn create_daemon(config: cli::Config) -> Result<Daemon> {
+ let log_dir = if config.log_to_file {
+ Some(mullvad_paths::log_dir().chain_err(|| "Unable to get log directory")?)
+ } else {
+ None
+ };
+ let resource_dir = mullvad_paths::get_resource_dir();
+ let cache_dir = mullvad_paths::cache_dir().chain_err(|| "Unable to get cache dir")?;
+
+ Daemon::new(log_dir, resource_dir, cache_dir).chain_err(|| "Unable to initialize daemon")
+}
+
fn log_version() {
info!(
"Starting {} - {} {}",
diff --git a/mullvad-daemon/src/system_service.rs b/mullvad-daemon/src/system_service.rs
index 1e602f75bb..649aa566fe 100644
--- a/mullvad-daemon/src/system_service.rs
+++ b/mullvad-daemon/src/system_service.rs
@@ -1,8 +1,6 @@
#![cfg(windows)]
use std::ffi::OsString;
-use std::fs;
-use std::path::Path;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::{mpsc, Arc};
use std::time::Duration;
@@ -20,7 +18,7 @@ use windows_service::service_control_handler::{
use windows_service::service_dispatcher;
use windows_service::service_manager::{ServiceManager, ServiceManagerAccess};
-use super::{get_resource_dir, Daemon, DaemonShutdownHandle, ErrorKind, Result, ResultExt};
+use super::{DaemonShutdownHandle, Result, ResultExt};
static SERVICE_NAME: &'static str = "MullvadVPN";
static SERVICE_DISPLAY_NAME: &'static str = "Mullvad VPN Service";
@@ -70,13 +68,7 @@ fn run_service(_arguments: Vec<OsString>) -> Result<()> {
.set_pending_start(Duration::from_secs(1))
.unwrap();
- 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 daemon = Daemon::new(config.tunnel_log_file, resource_dir, cache_dir)
- .chain_err(|| "Unable to initialize daemon")?;
+ let daemon = ::create_daemon(config)?;
let shutdown_handle = daemon.shutdown_handle();
// Register monitor that translates `ServiceControl` to Daemon events