|
@ -8,11 +8,11 @@ extern crate bytes; |
|
|
extern crate clap;
|
|
|
extern crate clap;
|
|
|
extern crate env_logger;
|
|
|
extern crate env_logger;
|
|
|
extern crate futures;
|
|
|
extern crate futures;
|
|
|
|
|
|
extern crate num_cpus;
|
|
|
extern crate serde;
|
|
|
extern crate serde;
|
|
|
|
|
|
|
|
|
use clap::{App, Arg};
|
|
|
use clap::{App, Arg};
|
|
|
|
|
|
|
|
|
mod router;
|
|
|
|
|
|
mod server;
|
|
|
mod server;
|
|
|
|
|
|
|
|
|
const VERSION: &'static str = env!("CARGO_PKG_VERSION");
|
|
|
const VERSION: &'static str = env!("CARGO_PKG_VERSION");
|
|
@ -36,6 +36,13 @@ fn main() { |
|
|
.default_value("/etc/rsddns/rsddns.yml")
|
|
|
.default_value("/etc/rsddns/rsddns.yml")
|
|
|
.help("Set a custom configuration file path.")
|
|
|
.help("Set a custom configuration file path.")
|
|
|
.takes_value(true),
|
|
|
.takes_value(true),
|
|
|
|
|
|
Arg::with_name("host")
|
|
|
|
|
|
.short("h")
|
|
|
|
|
|
.long("host")
|
|
|
|
|
|
.value_name("HOST")
|
|
|
|
|
|
.default_value("localhost")
|
|
|
|
|
|
.help("The address the server listens on.")
|
|
|
|
|
|
.takes_value(true),
|
|
|
Arg::with_name("port")
|
|
|
Arg::with_name("port")
|
|
|
.short("p")
|
|
|
.short("p")
|
|
|
.long("port")
|
|
|
.long("port")
|
|
@ -43,20 +50,35 @@ fn main() { |
|
|
.default_value("8080")
|
|
|
.default_value("8080")
|
|
|
.help("The port to run the server on.")
|
|
|
.help("The port to run the server on.")
|
|
|
.takes_value(true),
|
|
|
.takes_value(true),
|
|
|
|
|
|
Arg::with_name("workers")
|
|
|
|
|
|
.short("w")
|
|
|
|
|
|
.long("workers")
|
|
|
|
|
|
.value_name("NUMBER")
|
|
|
|
|
|
.help("The number of workers to serve requests with.")
|
|
|
|
|
|
.takes_value(true),
|
|
|
])
|
|
|
])
|
|
|
.get_matches();
|
|
|
.get_matches();
|
|
|
|
|
|
|
|
|
let config: &str = args.value_of("config").unwrap_or("/etc/rsddns/rsddns.yml");
|
|
|
let config: &str = args.value_of("config").unwrap_or("/etc/rsddns/rsddns.yml");
|
|
|
|
|
|
let host: &str = args.value_of("host").unwrap_or("localhost");
|
|
|
let port: i32 = args
|
|
|
let port: i32 = args
|
|
|
.value_of("port")
|
|
|
.value_of("port")
|
|
|
.unwrap()
|
|
|
.unwrap()
|
|
|
.parse::<i32>()
|
|
|
.parse::<i32>()
|
|
|
.unwrap_or(8080);
|
|
|
.unwrap_or(8080);
|
|
|
|
|
|
let workers: usize = match args.value_of("workers") {
|
|
|
|
|
|
Some(count) => count.parse::<usize>().unwrap_or(num_cpus::get()),
|
|
|
|
|
|
None => num_cpus::get(),
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
info!("Starting server on {} with config {}", port, config);
|
|
|
|
|
|
|
|
|
info!(
|
|
|
|
|
|
"Starting server on {}:{} with workers={} and config {}",
|
|
|
|
|
|
host, port, workers, config
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
actix_web::server::new(|| router::create())
|
|
|
|
|
|
.bind(format!("localhost:{}", port))
|
|
|
|
|
|
|
|
|
actix_web::server::new(|| server::router::create())
|
|
|
|
|
|
.workers(workers)
|
|
|
|
|
|
.bind(format!("{}:{}", host, port))
|
|
|
.unwrap()
|
|
|
.unwrap()
|
|
|
.run();
|
|
|
.run();
|
|
|
}
|
|
|
}
|