]> git.proxmox.com Git - proxmox-backup.git/blob - src/bin/proxmox-backup-api.rs
cleanup previous commit...
[proxmox-backup.git] / src / bin / proxmox-backup-api.rs
1 extern crate proxmox_backup;
2
3 use std::sync::Arc;
4
5 use proxmox_backup::api::schema::*;
6 use proxmox_backup::api::router::*;
7 use proxmox_backup::api::config::*;
8 use proxmox_backup::server::rest::*;
9 use proxmox_backup::getopts;
10
11 //use failure::*;
12 use lazy_static::lazy_static;
13
14 use futures::future::Future;
15
16 use hyper;
17
18 fn main() {
19
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();
27
28 let schema = ObjectSchema::new("Parameters.")
29 .required("command", command);
30
31 let args: Vec<String> = std::env::args().skip(1).collect();
32
33 let options = match getopts::parse_arguments(&args, &vec!["command"], &schema) {
34 Ok((options, rest)) => {
35 if !rest.is_empty() {
36 eprintln!("Error: got additional arguments: {:?}", rest);
37 std::process::exit(-1);
38 }
39 options
40 }
41 Err(err) => {
42 eprintln!("Error: unable to parse arguments:\n{}", err);
43 std::process::exit(-1);
44 }
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 },
65 }
66
67 let addr = ([0,0,0,0,0,0,0,0], 8007).into();
68
69 lazy_static!{
70 static ref ROUTER: Router = proxmox_backup::api3::router();
71 }
72
73 let mut config = ApiConfig::new("/usr/share/javascript/proxmox-backup", &ROUTER);
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/");
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");
85
86 let rest_server = RestServer::new(config);
87
88 let server = hyper::Server::bind(&addr)
89 .serve(rest_server)
90 .map_err(|e| eprintln!("server error: {}", e));
91
92
93 // Run this server for... forever!
94 hyper::rt::run(server);
95 }