improve code docs in api2
Note: API methos should be declared pub, so that they show up in the generated docu.
This commit is contained in:
		@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Access control (Users, Permissions and Authentication)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{bail, format_err, Error};
 | 
					use anyhow::{bail, format_err, Error};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use serde_json::{json, Value};
 | 
					use serde_json::{json, Value};
 | 
				
			||||||
@ -177,7 +179,7 @@ fn authenticate_2nd(
 | 
				
			|||||||
/// Create or verify authentication ticket.
 | 
					/// Create or verify authentication ticket.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// Returns: An authentication ticket with additional infos.
 | 
					/// Returns: An authentication ticket with additional infos.
 | 
				
			||||||
fn create_ticket(
 | 
					pub fn create_ticket(
 | 
				
			||||||
    username: Userid,
 | 
					    username: Userid,
 | 
				
			||||||
    password: String,
 | 
					    password: String,
 | 
				
			||||||
    path: Option<String>,
 | 
					    path: Option<String>,
 | 
				
			||||||
@ -253,7 +255,7 @@ fn create_ticket(
 | 
				
			|||||||
///
 | 
					///
 | 
				
			||||||
/// Each user is allowed to change his own password. Superuser
 | 
					/// Each user is allowed to change his own password. Superuser
 | 
				
			||||||
/// can change all passwords.
 | 
					/// can change all passwords.
 | 
				
			||||||
fn change_password(
 | 
					pub fn change_password(
 | 
				
			||||||
    userid: Userid,
 | 
					    userid: Userid,
 | 
				
			||||||
    password: String,
 | 
					    password: String,
 | 
				
			||||||
    rpcenv: &mut dyn RpcEnvironment,
 | 
					    rpcenv: &mut dyn RpcEnvironment,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
 | 
					//! Manage Access Control Lists
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{bail, Error};
 | 
					use anyhow::{bail, Error};
 | 
				
			||||||
use ::serde::{Deserialize, Serialize};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
use proxmox::api::{api, Router, RpcEnvironment, Permission};
 | 
					use proxmox::api::{api, Router, RpcEnvironment, Permission};
 | 
				
			||||||
use proxmox::tools::fs::open_file_locked;
 | 
					use proxmox::tools::fs::open_file_locked;
 | 
				
			||||||
@ -9,36 +10,6 @@ use crate::config::acl;
 | 
				
			|||||||
use crate::config::acl::{Role, PRIV_SYS_AUDIT, PRIV_PERMISSIONS_MODIFY};
 | 
					use crate::config::acl::{Role, PRIV_SYS_AUDIT, PRIV_PERMISSIONS_MODIFY};
 | 
				
			||||||
use crate::config::cached_user_info::CachedUserInfo;
 | 
					use crate::config::cached_user_info::CachedUserInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[api(
 | 
					 | 
				
			||||||
    properties: {
 | 
					 | 
				
			||||||
        propagate: {
 | 
					 | 
				
			||||||
            schema: ACL_PROPAGATE_SCHEMA,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 	path: {
 | 
					 | 
				
			||||||
            schema: ACL_PATH_SCHEMA,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        ugid_type: {
 | 
					 | 
				
			||||||
            schema: ACL_UGID_TYPE_SCHEMA,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
	ugid: {
 | 
					 | 
				
			||||||
            type: String,
 | 
					 | 
				
			||||||
            description: "User or Group ID.",
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
	roleid: {
 | 
					 | 
				
			||||||
            type: Role,
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
)]
 | 
					 | 
				
			||||||
#[derive(Serialize, Deserialize)]
 | 
					 | 
				
			||||||
/// ACL list entry.
 | 
					 | 
				
			||||||
pub struct AclListItem {
 | 
					 | 
				
			||||||
    path: String,
 | 
					 | 
				
			||||||
    ugid: String,
 | 
					 | 
				
			||||||
    ugid_type: String,
 | 
					 | 
				
			||||||
    propagate: bool,
 | 
					 | 
				
			||||||
    roleid: String,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
fn extract_acl_node_data(
 | 
					fn extract_acl_node_data(
 | 
				
			||||||
    node: &acl::AclTreeNode,
 | 
					    node: &acl::AclTreeNode,
 | 
				
			||||||
    path: &str,
 | 
					    path: &str,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! List Authentication domains/realms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{Error};
 | 
					use anyhow::{Error};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use serde_json::{json, Value};
 | 
					use serde_json::{json, Value};
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Manage Roles with privileges
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::Error;
 | 
					use anyhow::Error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use serde_json::{json, Value};
 | 
					use serde_json::{json, Value};
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Two Factor Authentication
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{bail, format_err, Error};
 | 
					use anyhow::{bail, format_err, Error};
 | 
				
			||||||
use serde::{Deserialize, Serialize};
 | 
					use serde::{Deserialize, Serialize};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! User Management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{bail, format_err, Error};
 | 
					use anyhow::{bail, format_err, Error};
 | 
				
			||||||
use serde::{Serialize, Deserialize};
 | 
					use serde::{Serialize, Deserialize};
 | 
				
			||||||
use serde_json::{json, Value};
 | 
					use serde_json::{json, Value};
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Backup Server Administration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use proxmox::api::router::{Router, SubdirMap};
 | 
					use proxmox::api::router::{Router, SubdirMap};
 | 
				
			||||||
use proxmox::list_subdirs_api_method;
 | 
					use proxmox::list_subdirs_api_method;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Datastore Management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use std::collections::HashSet;
 | 
					use std::collections::HashSet;
 | 
				
			||||||
use std::ffi::OsStr;
 | 
					use std::ffi::OsStr;
 | 
				
			||||||
use std::os::unix::ffi::OsStrExt;
 | 
					use std::os::unix::ffi::OsStrExt;
 | 
				
			||||||
@ -299,7 +301,7 @@ pub fn list_snapshot_files(
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Delete backup snapshot.
 | 
					/// Delete backup snapshot.
 | 
				
			||||||
fn delete_snapshot(
 | 
					pub fn delete_snapshot(
 | 
				
			||||||
    store: String,
 | 
					    store: String,
 | 
				
			||||||
    backup_type: String,
 | 
					    backup_type: String,
 | 
				
			||||||
    backup_id: String,
 | 
					    backup_id: String,
 | 
				
			||||||
@ -795,7 +797,7 @@ pub const API_METHOD_PRUNE: ApiMethod = ApiMethod::new(
 | 
				
			|||||||
    true)
 | 
					    true)
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn prune(
 | 
					pub fn prune(
 | 
				
			||||||
    param: Value,
 | 
					    param: Value,
 | 
				
			||||||
    _info: &ApiMethod,
 | 
					    _info: &ApiMethod,
 | 
				
			||||||
    rpcenv: &mut dyn RpcEnvironment,
 | 
					    rpcenv: &mut dyn RpcEnvironment,
 | 
				
			||||||
@ -923,7 +925,7 @@ fn prune(
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Start garbage collection.
 | 
					/// Start garbage collection.
 | 
				
			||||||
fn start_garbage_collection(
 | 
					pub fn start_garbage_collection(
 | 
				
			||||||
    store: String,
 | 
					    store: String,
 | 
				
			||||||
    _info: &ApiMethod,
 | 
					    _info: &ApiMethod,
 | 
				
			||||||
    rpcenv: &mut dyn RpcEnvironment,
 | 
					    rpcenv: &mut dyn RpcEnvironment,
 | 
				
			||||||
@ -983,7 +985,7 @@ pub fn garbage_collection_status(
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Datastore list
 | 
					/// Datastore list
 | 
				
			||||||
fn get_datastore_list(
 | 
					pub fn get_datastore_list(
 | 
				
			||||||
    _param: Value,
 | 
					    _param: Value,
 | 
				
			||||||
    _info: &ApiMethod,
 | 
					    _info: &ApiMethod,
 | 
				
			||||||
    rpcenv: &mut dyn RpcEnvironment,
 | 
					    rpcenv: &mut dyn RpcEnvironment,
 | 
				
			||||||
@ -1031,7 +1033,7 @@ pub const API_METHOD_DOWNLOAD_FILE: ApiMethod = ApiMethod::new(
 | 
				
			|||||||
    true)
 | 
					    true)
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn download_file(
 | 
					pub fn download_file(
 | 
				
			||||||
    _parts: Parts,
 | 
					    _parts: Parts,
 | 
				
			||||||
    _req_body: Body,
 | 
					    _req_body: Body,
 | 
				
			||||||
    param: Value,
 | 
					    param: Value,
 | 
				
			||||||
@ -1101,7 +1103,7 @@ pub const API_METHOD_DOWNLOAD_FILE_DECODED: ApiMethod = ApiMethod::new(
 | 
				
			|||||||
    true)
 | 
					    true)
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn download_file_decoded(
 | 
					pub fn download_file_decoded(
 | 
				
			||||||
    _parts: Parts,
 | 
					    _parts: Parts,
 | 
				
			||||||
    _req_body: Body,
 | 
					    _req_body: Body,
 | 
				
			||||||
    param: Value,
 | 
					    param: Value,
 | 
				
			||||||
@ -1215,7 +1217,7 @@ pub const API_METHOD_UPLOAD_BACKUP_LOG: ApiMethod = ApiMethod::new(
 | 
				
			|||||||
    &Permission::Privilege(&["datastore", "{store}"], PRIV_DATASTORE_BACKUP, false)
 | 
					    &Permission::Privilege(&["datastore", "{store}"], PRIV_DATASTORE_BACKUP, false)
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn upload_backup_log(
 | 
					pub fn upload_backup_log(
 | 
				
			||||||
    _parts: Parts,
 | 
					    _parts: Parts,
 | 
				
			||||||
    req_body: Body,
 | 
					    req_body: Body,
 | 
				
			||||||
    param: Value,
 | 
					    param: Value,
 | 
				
			||||||
@ -1294,7 +1296,7 @@ fn upload_backup_log(
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Get the entries of the given path of the catalog
 | 
					/// Get the entries of the given path of the catalog
 | 
				
			||||||
fn catalog(
 | 
					pub fn catalog(
 | 
				
			||||||
    store: String,
 | 
					    store: String,
 | 
				
			||||||
    backup_type: String,
 | 
					    backup_type: String,
 | 
				
			||||||
    backup_id: String,
 | 
					    backup_id: String,
 | 
				
			||||||
@ -1462,7 +1464,7 @@ pub const API_METHOD_PXAR_FILE_DOWNLOAD: ApiMethod = ApiMethod::new(
 | 
				
			|||||||
    true)
 | 
					    true)
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn pxar_file_download(
 | 
					pub fn pxar_file_download(
 | 
				
			||||||
    _parts: Parts,
 | 
					    _parts: Parts,
 | 
				
			||||||
    _req_body: Body,
 | 
					    _req_body: Body,
 | 
				
			||||||
    param: Value,
 | 
					    param: Value,
 | 
				
			||||||
@ -1599,7 +1601,7 @@ fn pxar_file_download(
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Read datastore stats
 | 
					/// Read datastore stats
 | 
				
			||||||
fn get_rrd_stats(
 | 
					pub fn get_rrd_stats(
 | 
				
			||||||
    store: String,
 | 
					    store: String,
 | 
				
			||||||
    timeframe: RRDTimeFrameResolution,
 | 
					    timeframe: RRDTimeFrameResolution,
 | 
				
			||||||
    cf: RRDMode,
 | 
					    cf: RRDMode,
 | 
				
			||||||
@ -1641,7 +1643,7 @@ fn get_rrd_stats(
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Get "notes" for a specific backup
 | 
					/// Get "notes" for a specific backup
 | 
				
			||||||
fn get_notes(
 | 
					pub fn get_notes(
 | 
				
			||||||
    store: String,
 | 
					    store: String,
 | 
				
			||||||
    backup_type: String,
 | 
					    backup_type: String,
 | 
				
			||||||
    backup_id: String,
 | 
					    backup_id: String,
 | 
				
			||||||
@ -1691,7 +1693,7 @@ fn get_notes(
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Set "notes" for a specific backup
 | 
					/// Set "notes" for a specific backup
 | 
				
			||||||
fn set_notes(
 | 
					pub fn set_notes(
 | 
				
			||||||
    store: String,
 | 
					    store: String,
 | 
				
			||||||
    backup_type: String,
 | 
					    backup_type: String,
 | 
				
			||||||
    backup_id: String,
 | 
					    backup_id: String,
 | 
				
			||||||
@ -1736,7 +1738,7 @@ fn set_notes(
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Change owner of a backup group
 | 
					/// Change owner of a backup group
 | 
				
			||||||
fn set_backup_owner(
 | 
					pub fn set_backup_owner(
 | 
				
			||||||
    store: String,
 | 
					    store: String,
 | 
				
			||||||
    backup_type: String,
 | 
					    backup_type: String,
 | 
				
			||||||
    backup_id: String,
 | 
					    backup_id: String,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Datastore Syncronization Job Management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{bail, format_err, Error};
 | 
					use anyhow::{bail, format_err, Error};
 | 
				
			||||||
use serde_json::Value;
 | 
					use serde_json::Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -110,7 +112,7 @@ pub fn list_sync_jobs(
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Runs the sync jobs manually.
 | 
					/// Runs the sync jobs manually.
 | 
				
			||||||
fn run_sync_job(
 | 
					pub fn run_sync_job(
 | 
				
			||||||
    id: String,
 | 
					    id: String,
 | 
				
			||||||
    _info: &ApiMethod,
 | 
					    _info: &ApiMethod,
 | 
				
			||||||
    rpcenv: &mut dyn RpcEnvironment,
 | 
					    rpcenv: &mut dyn RpcEnvironment,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Datastore Verify Job Management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{format_err, Error};
 | 
					use anyhow::{format_err, Error};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use proxmox::api::router::SubdirMap;
 | 
					use proxmox::api::router::SubdirMap;
 | 
				
			||||||
@ -115,7 +117,7 @@ pub fn list_verification_jobs(
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Runs a verification job manually.
 | 
					/// Runs a verification job manually.
 | 
				
			||||||
fn run_verification_job(
 | 
					pub fn run_verification_job(
 | 
				
			||||||
    id: String,
 | 
					    id: String,
 | 
				
			||||||
    _info: &ApiMethod,
 | 
					    _info: &ApiMethod,
 | 
				
			||||||
    rpcenv: &mut dyn RpcEnvironment,
 | 
					    rpcenv: &mut dyn RpcEnvironment,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Backup protocol (HTTP2 upgrade)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{bail, format_err, Error};
 | 
					use anyhow::{bail, format_err, Error};
 | 
				
			||||||
use futures::*;
 | 
					use futures::*;
 | 
				
			||||||
use hyper::header::{HeaderValue, UPGRADE};
 | 
					use hyper::header::{HeaderValue, UPGRADE};
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Backup Server Configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use proxmox::api::router::{Router, SubdirMap};
 | 
					use proxmox::api::router::{Router, SubdirMap};
 | 
				
			||||||
use proxmox::list_subdirs_api_method;
 | 
					use proxmox::list_subdirs_api_method;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Server/Node Configuration and Administration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use std::net::TcpListener;
 | 
					use std::net::TcpListener;
 | 
				
			||||||
use std::os::unix::io::AsRawFd;
 | 
					use std::os::unix::io::AsRawFd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Cheap check if the API daemon is online.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{Error};
 | 
					use anyhow::{Error};
 | 
				
			||||||
use serde_json::{json, Value};
 | 
					use serde_json::{json, Value};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -20,7 +22,7 @@ use proxmox::api::{api, Router, Permission};
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// Dummy method which replies with `{ "pong": True }`
 | 
					/// Dummy method which replies with `{ "pong": True }`
 | 
				
			||||||
fn ping() -> Result<Value, Error> {
 | 
					pub fn ping() -> Result<Value, Error> {
 | 
				
			||||||
    Ok(json!({
 | 
					    Ok(json!({
 | 
				
			||||||
        "pong": true,
 | 
					        "pong": true,
 | 
				
			||||||
    }))
 | 
					    }))
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Backup reader/restore protocol (HTTP2 upgrade)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{bail, format_err, Error};
 | 
					use anyhow::{bail, format_err, Error};
 | 
				
			||||||
use futures::*;
 | 
					use futures::*;
 | 
				
			||||||
use hyper::header::{self, HeaderValue, UPGRADE};
 | 
					use hyper::header::{self, HeaderValue, UPGRADE};
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Datastote status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use proxmox::list_subdirs_api_method;
 | 
					use proxmox::list_subdirs_api_method;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{Error};
 | 
					use anyhow::{Error};
 | 
				
			||||||
@ -75,7 +77,7 @@ use crate::config::acl::{
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
)]
 | 
					)]
 | 
				
			||||||
/// List Datastore usages and estimates
 | 
					/// List Datastore usages and estimates
 | 
				
			||||||
fn datastore_status(
 | 
					pub fn datastore_status(
 | 
				
			||||||
    _param: Value,
 | 
					    _param: Value,
 | 
				
			||||||
    _info: &ApiMethod,
 | 
					    _info: &ApiMethod,
 | 
				
			||||||
    rpcenv: &mut dyn RpcEnvironment,
 | 
					    rpcenv: &mut dyn RpcEnvironment,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Tape Backup Management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use proxmox::api::router::SubdirMap;
 | 
					use proxmox::api::router::SubdirMap;
 | 
				
			||||||
use proxmox::api::Router;
 | 
					use proxmox::api::Router;
 | 
				
			||||||
use proxmox::list_subdirs_api_method;
 | 
					use proxmox::list_subdirs_api_method;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! API Type Definitions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::bail;
 | 
					use anyhow::bail;
 | 
				
			||||||
use serde::{Deserialize, Serialize};
 | 
					use serde::{Deserialize, Serialize};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -5,8 +7,15 @@ use proxmox::api::{api, schema::*};
 | 
				
			|||||||
use proxmox::const_regex;
 | 
					use proxmox::const_regex;
 | 
				
			||||||
use proxmox::{IPRE, IPRE_BRACKET, IPV4RE, IPV6RE, IPV4OCTET, IPV6H16, IPV6LS32};
 | 
					use proxmox::{IPRE, IPRE_BRACKET, IPV4RE, IPV6RE, IPV4OCTET, IPV6H16, IPV6LS32};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::backup::{CryptMode, Fingerprint, BACKUP_ID_REGEX};
 | 
					use crate::{
 | 
				
			||||||
use crate::server::UPID;
 | 
					    backup::{
 | 
				
			||||||
 | 
					        CryptMode,
 | 
				
			||||||
 | 
					        Fingerprint,
 | 
				
			||||||
 | 
					        BACKUP_ID_REGEX,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    server::UPID,
 | 
				
			||||||
 | 
					    config::acl::Role,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[macro_use]
 | 
					#[macro_use]
 | 
				
			||||||
mod macros;
 | 
					mod macros;
 | 
				
			||||||
@ -282,6 +291,36 @@ pub const ACL_UGID_TYPE_SCHEMA: Schema = StringSchema::new(
 | 
				
			|||||||
        EnumEntry::new("group", "Group")]))
 | 
					        EnumEntry::new("group", "Group")]))
 | 
				
			||||||
    .schema();
 | 
					    .schema();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[api(
 | 
				
			||||||
 | 
					    properties: {
 | 
				
			||||||
 | 
					        propagate: {
 | 
				
			||||||
 | 
					            schema: ACL_PROPAGATE_SCHEMA,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
						path: {
 | 
				
			||||||
 | 
					            schema: ACL_PATH_SCHEMA,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        ugid_type: {
 | 
				
			||||||
 | 
					            schema: ACL_UGID_TYPE_SCHEMA,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
						ugid: {
 | 
				
			||||||
 | 
					            type: String,
 | 
				
			||||||
 | 
					            description: "User or Group ID.",
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
						roleid: {
 | 
				
			||||||
 | 
					            type: Role,
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					)]
 | 
				
			||||||
 | 
					#[derive(Serialize, Deserialize)]
 | 
				
			||||||
 | 
					/// ACL list entry.
 | 
				
			||||||
 | 
					pub struct AclListItem {
 | 
				
			||||||
 | 
					    pub path: String,
 | 
				
			||||||
 | 
					    pub ugid: String,
 | 
				
			||||||
 | 
					    pub ugid_type: String,
 | 
				
			||||||
 | 
					    pub propagate: bool,
 | 
				
			||||||
 | 
					    pub roleid: String,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub const BACKUP_ARCHIVE_NAME_SCHEMA: Schema =
 | 
					pub const BACKUP_ARCHIVE_NAME_SCHEMA: Schema =
 | 
				
			||||||
    StringSchema::new("Backup archive name.")
 | 
					    StringSchema::new("Backup archive name.")
 | 
				
			||||||
    .format(&PROXMOX_SAFE_ID_FORMAT)
 | 
					    .format(&PROXMOX_SAFE_ID_FORMAT)
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					//! Version information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use anyhow::{Error};
 | 
					use anyhow::{Error};
 | 
				
			||||||
use serde_json::{json, Value};
 | 
					use serde_json::{json, Value};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user