]> git.proxmox.com Git - proxmox-backup.git/blame - src/bin/proxmox-backup-api.rs
api2/node/syslog.rs: improve error handling
[proxmox-backup.git] / src / bin / proxmox-backup-api.rs
CommitLineData
fe0e04c6 1extern crate proxmox_backup;
845901f4 2
768e0109
DM
3use std::sync::Arc;
4
fe0e04c6
DM
5use proxmox_backup::api::schema::*;
6use proxmox_backup::api::router::*;
7use proxmox_backup::api::config::*;
8use proxmox_backup::server::rest::*;
9use proxmox_backup::getopts;
886e5ce8 10
16b48b81
DM
11//use failure::*;
12use lazy_static::lazy_static;
13
9bc17e8d 14use futures::future::Future;
b82472c0 15
9bc17e8d 16use hyper;
886e5ce8 17
d8d978eb 18fn main() {
d8d978eb 19
73f29c34
DM
20 let command : Arc<Schema> = StringSchema::new("Command.")
21 .format(Arc::new(ApiStringFormat::Enum(vec![
22 "start".into(),
23 "status".into(),
24 "stop".into()
25 ])))
26 .into();
82df76ff 27
7edeec7b 28 let schema = ObjectSchema::new("Parameters.")
73f29c34 29 .required("command", command);
845901f4
DM
30
31 let args: Vec<String> = std::env::args().skip(1).collect();
73f29c34
DM
32
33 let options = match getopts::parse_arguments(&args, &vec!["command"], &schema) {
0c9ce2bb 34 Ok((options, rest)) => {
73f29c34
DM
35 if !rest.is_empty() {
36 eprintln!("Error: got additional arguments: {:?}", rest);
37 std::process::exit(-1);
38 }
39 options
0c9ce2bb
DM
40 }
41 Err(err) => {
73f29c34 42 eprintln!("Error: unable to parse arguments:\n{}", err);
0c9ce2bb
DM
43 std::process::exit(-1);
44 }
73f29c34
DM
45 };
46
47 let command = options["command"].as_str().unwrap();
48
49 match command {
50 "start" => {
51 println!("Starting server.");
52 },
53 "stop" => {
54 println!("Stopping server.");
55 std::process::exit(0);
56 },
57 "status" => {
58 println!("Server status.");
59 std::process::exit(0);
60 },
61 _ => {
62 eprintln!("got unexpected command {}", command);
63 std::process::exit(-1);
64 },
0c9ce2bb 65 }
845901f4 66
1dcd52e5 67 let addr = ([0,0,0,0,0,0,0,0], 8007).into();
886e5ce8 68
a9696f7b 69 lazy_static!{
576e3bf2 70 static ref ROUTER: Router = proxmox_backup::api2::router();
a9696f7b 71 }
324a5bd0 72
fe0e04c6 73 let mut config = ApiConfig::new("/usr/share/javascript/proxmox-backup", &ROUTER);
1a53be14
DM
74
75 // add default dirs which includes jquery and bootstrap
76 // my $base = '/usr/share/libpve-http-server-perl';
77 // add_dirs($self->{dirs}, '/css/' => "$base/css/");
78 // add_dirs($self->{dirs}, '/js/' => "$base/js/");
79 // add_dirs($self->{dirs}, '/fonts/' => "$base/fonts/");
9bc17e8d
DM
80 config.add_alias("novnc", "/usr/share/novnc-pve");
81 config.add_alias("extjs", "/usr/share/javascript/extjs");
82 config.add_alias("fontawesome", "/usr/share/fonts-font-awesome");
83 config.add_alias("xtermjs", "/usr/share/pve-xtermjs");
84 config.add_alias("widgettoolkit", "/usr/share/javascript/proxmox-widget-toolkit");
324a5bd0 85
9bc17e8d 86 let rest_server = RestServer::new(config);
886e5ce8 87
9bc17e8d
DM
88 let server = hyper::Server::bind(&addr)
89 .serve(rest_server)
886e5ce8
DM
90 .map_err(|e| eprintln!("server error: {}", e));
91
0f52af5b 92
886e5ce8
DM
93 // Run this server for... forever!
94 hyper::rt::run(server);
d8d978eb 95}