X-Git-Url: https://git.proxmox.com/?p=proxmox-backup.git;a=blobdiff_plain;f=src%2Fbin%2Fproxmox-backup-api.rs;h=ee037a3bb30574df163fdd9310d9ad4845bd1611;hp=713f7f19504c401996a3745ae5f2beca59f1825b;hb=d91a0f9fc90aecabc4f359d968f716a14562ce78;hpb=49e25688f11136d6e7378a48412b3fd7423de521 diff --git a/src/bin/proxmox-backup-api.rs b/src/bin/proxmox-backup-api.rs index 713f7f19..ee037a3b 100644 --- a/src/bin/proxmox-backup-api.rs +++ b/src/bin/proxmox-backup-api.rs @@ -1,43 +1,64 @@ +use std::future::Future; +use std::pin::Pin; + use anyhow::{bail, Error}; use futures::*; use http::request::Parts; use http::Response; -use hyper::{Body, StatusCode}; -use hyper::header; +use hyper::{Body, Method, StatusCode}; +use http::HeaderMap; -use proxmox::try_block; -use proxmox::api::RpcEnvironmentType; -use proxmox::tools::fs::CreateOptions; +use proxmox_lang::try_block; +use proxmox_router::{RpcEnvironmentType, UserInformation}; +use proxmox_sys::fs::CreateOptions; -use proxmox_rest_server::{daemon, ApiConfig, RestServer}; +use proxmox_rest_server::{daemon, AuthError, ApiConfig, RestServer, RestEnvironment, ServerAdapter}; -use proxmox_backup::server::auth::default_api_auth; +use proxmox_backup::server::auth::check_pbs_auth; use proxmox_backup::auth_helpers::*; use proxmox_backup::config; fn main() { + pbs_tools::setup_libc_malloc_opts(); + proxmox_backup::tools::setup_safe_path_env(); - if let Err(err) = pbs_runtime::main(run()) { + if let Err(err) = proxmox_async::runtime::main(run()) { eprintln!("Error: {}", err); std::process::exit(-1); } } -fn get_index( - _auth_id: Option, - _language: Option, - _api: &ApiConfig, - _parts: Parts, -) -> Response { +struct ProxmoxBackupApiAdapter; + +impl ServerAdapter for ProxmoxBackupApiAdapter { + + fn get_index( + &self, + _env: RestEnvironment, + _parts: Parts, + ) -> Pin> + Send>> { + Box::pin(async move { - let index = "

Proxmox Backup API Server

"; + let index = "

Proxmox Backup API Server

"; - Response::builder() - .status(StatusCode::OK) - .header(header::CONTENT_TYPE, "text/html") - .body(index.into()) - .unwrap() + Response::builder() + .status(StatusCode::OK) + .header(hyper::header::CONTENT_TYPE, "text/html") + .body(index.into()) + .unwrap() + }) + } + + fn check_auth<'a>( + &'a self, + headers: &'a HeaderMap, + method: &'a Method, + ) -> Pin), AuthError>> + Send + 'a>> { + Box::pin(async move { + check_pbs_auth(headers, method).await + }) + } } async fn run() -> Result<(), Error> { @@ -53,8 +74,7 @@ async fn run() -> Result<(), Error> { config::update_self_signed_cert(false)?; proxmox_backup::server::create_run_dir()?; - - proxmox_backup::rrd::create_rrdb_dir()?; + proxmox_backup::server::create_state_dir()?; proxmox_backup::server::jobstate::create_jobstate_dir()?; proxmox_backup::tape::create_tape_status_dir()?; proxmox_backup::tape::create_drive_state_dir()?; @@ -75,8 +95,7 @@ async fn run() -> Result<(), Error> { pbs_buildcfg::JS_DIR, &proxmox_backup::api2::ROUTER, RpcEnvironmentType::PRIVILEGED, - default_api_auth(), - get_index, + ProxmoxBackupApiAdapter, )?; let backup_user = pbs_config::backup_user()?; @@ -119,7 +138,6 @@ async fn run() -> Result<(), Error> { .await }) }, - "proxmox-backup.service", ); proxmox_rest_server::write_pid(pbs_buildcfg::PROXMOX_BACKUP_API_PID_FN)?;