summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad_daemon/Cargo.toml3
-rw-r--r--mullvad_daemon/src/cli.rs32
-rw-r--r--mullvad_daemon/src/main.rs10
3 files changed, 41 insertions, 4 deletions
diff --git a/mullvad_daemon/Cargo.toml b/mullvad_daemon/Cargo.toml
index 8de43cf83b..c5ddc653a2 100644
--- a/mullvad_daemon/Cargo.toml
+++ b/mullvad_daemon/Cargo.toml
@@ -2,13 +2,14 @@
name = "mullvad_daemon"
version = "0.1.0"
authors = ["Linus Färnstrand <linus@mullvad.net>", "Erik Larkö <erik@mullvad.net>"]
-description = "The meat of Mullvad, the core if you wish"
+description = "Mullvad VPN backend daemon. Runs and controls the VPN tunnels."
[[bin]]
name = "mullvadd"
[dependencies]
chrono = "0.4"
+clap = "2.25"
error-chain = "0.10"
fern = "0.4"
serde = "1.0"
diff --git a/mullvad_daemon/src/cli.rs b/mullvad_daemon/src/cli.rs
new file mode 100644
index 0000000000..cdc2f5fd81
--- /dev/null
+++ b/mullvad_daemon/src/cli.rs
@@ -0,0 +1,32 @@
+use clap::{App, Arg};
+use log;
+
+pub struct Config {
+ pub log_level: log::LogLevelFilter,
+}
+
+pub fn get_config() -> Config {
+ let app = create_app();
+ let matches = app.get_matches();
+
+ let log_level = match matches.occurrences_of("v") {
+ 0 => log::LogLevelFilter::Info,
+ 1 => log::LogLevelFilter::Debug,
+ _ => log::LogLevelFilter::Trace,
+ };
+
+ Config {
+ log_level,
+ }
+}
+
+fn create_app() -> App<'static, 'static> {
+ App::new("mullvadd")
+ .version(crate_version!())
+ .author(crate_authors!())
+ .about(crate_description!())
+ .arg(Arg::with_name("v")
+ .short("v")
+ .multiple(true)
+ .help("Sets the level of verbosity."))
+}
diff --git a/mullvad_daemon/src/main.rs b/mullvad_daemon/src/main.rs
index 4b2e03cfb3..a9f3dcc460 100644
--- a/mullvad_daemon/src/main.rs
+++ b/mullvad_daemon/src/main.rs
@@ -1,3 +1,5 @@
+#[macro_use]
+extern crate clap;
extern crate chrono;
#[macro_use]
extern crate log;
@@ -22,6 +24,7 @@ extern crate mullvad_types;
extern crate talpid_core;
extern crate talpid_ipc;
+mod cli;
mod management_interface;
mod rpc_info;
mod shutdown;
@@ -453,7 +456,8 @@ fn log_error<E>(error: &E)
quick_main!(run);
fn run() -> Result<()> {
- init_logger()?;
+ let config = cli::get_config();
+ init_logger(config.log_level)?;
let daemon = Daemon::new().chain_err(|| "Unable to initialize daemon")?;
@@ -467,7 +471,7 @@ fn run() -> Result<()> {
Ok(())
}
-fn init_logger() -> Result<()> {
+fn init_logger(log_level: log::LogLevelFilter) -> Result<()> {
let log_filename = "mullvadd.log";
fern::Dispatch::new()
.format(|out, message, record| {
@@ -478,7 +482,7 @@ fn init_logger() -> Result<()> {
record.level(),
message))
})
- .level(log::LogLevelFilter::Debug)
+ .level(log_level)
.chain(std::io::stdout())
.chain(fern::log_file(log_filename).chain_err(|| "Failed to open log file for writing")?)
.apply().chain_err(|| "Failed to bootstrap logging system")