]>
Commit | Line | Data |
---|---|---|
fe0e04c6 | 1 | extern crate proxmox_backup; |
845901f4 | 2 | |
768e0109 DM |
3 | use std::sync::Arc; |
4 | ||
fe0e04c6 DM |
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; | |
886e5ce8 | 10 | |
16b48b81 DM |
11 | //use failure::*; |
12 | use lazy_static::lazy_static; | |
13 | ||
9bc17e8d | 14 | use futures::future::Future; |
b82472c0 | 15 | |
9bc17e8d | 16 | use hyper; |
886e5ce8 | 17 | |
d8d978eb | 18 | fn 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 | } |