]>
git.proxmox.com Git - proxmox-backup.git/blob - src/bin/proxmox-backup-proxy.rs
5d3455e7068633400ceab388ac9bf14cef9aeba2
1 extern crate proxmox_backup
;
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 use proxmox_backup
::auth_helpers
::*;
13 use lazy_static
::lazy_static
;
15 use futures
::future
::Future
;
21 if let Err(err
) = syslog
::init(
22 syslog
::Facility
::LOG_DAEMON
,
23 log
::LevelFilter
::Info
,
24 Some("proxmox-backup-proxy")) {
25 eprintln
!("unable to inititialize syslog: {}", err
);
26 std
::process
::exit(-1);
29 let _
= public_auth_key(); // load with lazy_static
30 let _
= csrf_secret(); // load with lazy_static
32 let command
: Arc
<Schema
> = StringSchema
::new("Command.")
33 .format(Arc
::new(ApiStringFormat
::Enum(vec
![
40 let schema
= ObjectSchema
::new("Parameters.")
41 .required("command", command
);
43 let args
: Vec
<String
> = std
::env
::args().skip(1).collect();
45 let options
= match getopts
::parse_arguments(&args
, &vec
!["command"], &schema
) {
46 Ok((options
, rest
)) => {
48 eprintln
!("Error: got additional arguments: {:?}", rest
);
49 std
::process
::exit(-1);
54 eprintln
!("Error: unable to parse arguments:\n{}", err
);
55 std
::process
::exit(-1);
59 let command
= options
["command"].as_str().unwrap();
63 println
!("Starting server.");
66 println
!("Stopping server.");
67 std
::process
::exit(0);
70 println
!("Server status.");
71 std
::process
::exit(0);
74 eprintln
!("got unexpected command {}", command
);
75 std
::process
::exit(-1);
79 let addr
= ([0,0,0,0,0,0,0,0], 8007).into();
82 static ref ROUTER
: Router
= proxmox_backup
::api2
::router();
85 let mut config
= ApiConfig
::new(
86 "/usr/share/javascript/proxmox-backup", &ROUTER
, RpcEnvironmentType
::PUBLIC
);
88 // add default dirs which includes jquery and bootstrap
89 // my $base = '/usr/share/libpve-http-server-perl';
90 // add_dirs($self->{dirs}, '/css/' => "$base/css/");
91 // add_dirs($self->{dirs}, '/js/' => "$base/js/");
92 // add_dirs($self->{dirs}, '/fonts/' => "$base/fonts/");
93 config
.add_alias("novnc", "/usr/share/novnc-pve");
94 config
.add_alias("extjs", "/usr/share/javascript/extjs");
95 config
.add_alias("fontawesome", "/usr/share/fonts-font-awesome");
96 config
.add_alias("xtermjs", "/usr/share/pve-xtermjs");
97 config
.add_alias("widgettoolkit", "/usr/share/javascript/proxmox-widget-toolkit");
99 let rest_server
= RestServer
::new(config
);
101 let server
= hyper
::Server
::bind(&addr
)
103 .map_err(|e
| eprintln
!("server error: {}", e
));
106 // Run this server for... forever!
107 hyper
::rt
::run(server
);