]> git.proxmox.com Git - proxmox-backup.git/blob - src/bin/proxmox-backup-api.rs
src/tools/daemon.rs: use new ServerState handler
[proxmox-backup.git] / src / bin / proxmox-backup-api.rs
1 extern crate proxmox_backup;
2
3 //use proxmox_backup::tools;
4 use proxmox_backup::api_schema::router::*;
5 use proxmox_backup::api_schema::config::*;
6 use proxmox_backup::server::rest::*;
7 use proxmox_backup::server;
8 use proxmox_backup::tools::daemon;
9 use proxmox_backup::auth_helpers::*;
10 use proxmox_backup::config;
11
12 use failure::*;
13 use lazy_static::lazy_static;
14
15 use futures::*;
16 use futures::future::Future;
17
18 use hyper;
19
20 fn main() {
21
22 if let Err(err) = run() {
23 eprintln!("Error: {}", err);
24 std::process::exit(-1);
25 }
26 }
27
28 fn run() -> Result<(), Error> {
29 if let Err(err) = syslog::init(
30 syslog::Facility::LOG_DAEMON,
31 log::LevelFilter::Info,
32 Some("proxmox-backup-api")) {
33 bail!("unable to inititialize syslog - {}", err);
34 }
35
36 server::create_task_log_dir()?;
37
38 config::create_configdir()?;
39
40 if let Err(err) = generate_auth_key() {
41 bail!("unable to generate auth key - {}", err);
42 }
43 let _ = private_auth_key(); // load with lazy_static
44
45 if let Err(err) = generate_csrf_key() {
46 bail!("unable to generate csrf key - {}", err);
47 }
48 let _ = csrf_secret(); // load with lazy_static
49
50 lazy_static!{
51 static ref ROUTER: Router = proxmox_backup::api2::router();
52 }
53
54 let config = ApiConfig::new(
55 env!("PROXMOX_JSDIR"), &ROUTER, RpcEnvironmentType::PRIVILEGED);
56
57 let rest_server = RestServer::new(config);
58
59 // http server future:
60 let server = daemon::create_daemon(
61 ([127,0,0,1], 82).into(),
62 |listener| {
63 Ok(hyper::Server::builder(listener.incoming())
64 .serve(rest_server)
65 .map_err(|e| eprintln!("server error: {}", e))
66 )
67 },
68 )?;
69
70 tokio::run(lazy(|| {
71
72 if let Err(err) = server::server_state_init() {
73 eprintln!("unable to start daemon - {}", err);
74 } else {
75 tokio::spawn(server);
76 }
77
78 Ok(())
79 }));
80
81 Ok(())
82 }