use proxmox::api::{ApiMethod, Router, RpcEnvironmentType};
use proxmox::tools::fs::{create_path, CreateOptions};
-use crate::{ApiAuth, FileLogger, FileLogOptions, CommandoSocket};
+use crate::{ApiAuth, FileLogger, FileLogOptions, CommandSocket};
pub type GetIndexFn = fn(Option<String>, Option<String>, &ApiConfig, Parts) -> Response<Body>;
///
/// When enabled, all requests are logged to the specified file.
/// This function also registers a `api-access-log-reopen`
- /// command one the [CommandoSocket].
+ /// command one the [CommandSocket].
pub fn enable_access_log<P>(
&mut self,
path: P,
dir_opts: Option<CreateOptions>,
file_opts: Option<CreateOptions>,
- commando_sock: &mut CommandoSocket,
+ commando_sock: &mut CommandSocket,
) -> Result<(), Error>
where
P: Into<PathBuf>
///
/// When enabled, all authentification requests are logged to the
/// specified file. This function also registers a
- /// `api-auth-log-reopen` command one the [CommandoSocket].
+ /// `api-auth-log-reopen` command one the [CommandSocket].
pub fn enable_auth_log<P>(
&mut self,
path: P,
dir_opts: Option<CreateOptions>,
file_opts: Option<CreateOptions>,
- commando_sock: &mut CommandoSocket,
+ commando_sock: &mut CommandSocket,
) -> Result<(), Error>
where
P: Into<PathBuf>
}
// A callback for a specific commando socket.
-type CommandoSocketFn = Box<(dyn Fn(Option<&Value>) -> Result<Value, Error> + Send + Sync + 'static)>;
+type CommandSocketFn = Box<(dyn Fn(Option<&Value>) -> Result<Value, Error> + Send + Sync + 'static)>;
/// Tooling to get a single control command socket where one can
/// register multiple commands dynamically.
///
-/// You need to call `spawn()` to make the socket active.
-pub struct CommandoSocket {
+/// The socket is activated by calling [spawn](CommandSocket::spawn),
+/// which spawns an async tokio task to process the commands.
+pub struct CommandSocket {
socket: PathBuf,
gid: Gid,
- commands: HashMap<String, CommandoSocketFn>,
+ commands: HashMap<String, CommandSocketFn>,
}
-impl CommandoSocket {
+impl CommandSocket {
+ /// Creates a new instance.
pub fn new<P>(path: P, gid: Gid) -> Self
where P: Into<PathBuf>,
{
- CommandoSocket {
+ CommandSocket {
socket: path.into(),
gid,
commands: HashMap::new(),
use pbs_tools::task::WorkerTaskContext;
use pbs_tools::logrotate::{LogRotate, LogRotateFiles};
-use crate::{CommandoSocket, FileLogger, FileLogOptions};
+use crate::{CommandSocket, FileLogger, FileLogOptions};
struct TaskListLockGuard(File);
}
}
-/// Register task control command on a [CommandoSocket].
+/// Register task control command on a [CommandSocket].
///
/// This create two commands:
///
/// * ``worker-task-status <UPID>``: return true of false, depending on
/// whether the worker is running or stopped.
pub fn register_task_control_commands(
- commando_sock: &mut CommandoSocket,
+ commando_sock: &mut CommandSocket,
) -> Result<(), Error> {
fn get_upid(args: Option<&Value>) -> Result<UPID, Error> {
let args = if let Some(args) = args { args } else { bail!("missing args") };
)?;
let backup_user = pbs_config::backup_user()?;
- let mut commando_sock = proxmox_rest_server::CommandoSocket::new(proxmox_rest_server::our_ctrl_sock(), backup_user.gid);
+ let mut commando_sock = proxmox_rest_server::CommandSocket::new(proxmox_rest_server::our_ctrl_sock(), backup_user.gid);
let dir_opts = CreateOptions::new().owner(backup_user.uid).group(backup_user.gid);
let file_opts = CreateOptions::new().owner(backup_user.uid).group(backup_user.gid);
let file_opts = CreateOptions::new().owner(backup_user.uid).group(backup_user.gid);
proxmox_rest_server::init_worker_tasks(pbs_buildcfg::PROXMOX_BACKUP_LOG_DIR_M!().into(), file_opts.clone())?;
- let mut commando_sock = proxmox_rest_server::CommandoSocket::new(proxmox_rest_server::our_ctrl_sock(), backup_user.gid);
+ let mut commando_sock = proxmox_rest_server::CommandSocket::new(proxmox_rest_server::our_ctrl_sock(), backup_user.gid);
proxmox_rest_server::register_task_control_commands(&mut commando_sock)?;
commando_sock.spawn()?;
}
config.register_template("console", "/usr/share/pve-xtermjs/index.html.hbs")?;
let backup_user = pbs_config::backup_user()?;
- let mut commando_sock = proxmox_rest_server::CommandoSocket::new(proxmox_rest_server::our_ctrl_sock(), backup_user.gid);
+ let mut commando_sock = proxmox_rest_server::CommandSocket::new(proxmox_rest_server::our_ctrl_sock(), backup_user.gid);
let dir_opts = CreateOptions::new().owner(backup_user.uid).group(backup_user.gid);
let file_opts = CreateOptions::new().owner(backup_user.uid).group(backup_user.gid);
let file_opts = CreateOptions::new().owner(backup_user.uid).group(backup_user.gid);
proxmox_rest_server::init_worker_tasks(pbs_buildcfg::PROXMOX_BACKUP_LOG_DIR_M!().into(), file_opts.clone())?;
- let mut commando_sock = proxmox_rest_server::CommandoSocket::new(proxmox_rest_server::our_ctrl_sock(), backup_user.gid);
+ let mut commando_sock = proxmox_rest_server::CommandSocket::new(proxmox_rest_server::our_ctrl_sock(), backup_user.gid);
proxmox_rest_server::register_task_control_commands(&mut commando_sock)?;
commando_sock.spawn()?;
use pbs_api_types::{Authid, UPID};
use pbs_tools::{task_log, task::WorkerTaskContext};
-use proxmox_rest_server::{CommandoSocket, WorkerTask};
+use proxmox_rest_server::{CommandSocket, WorkerTask};
fn garbage_collection(worker: &WorkerTask) -> Result<(), Error> {
let rt = tokio::runtime::Runtime::new().unwrap();
rt.block_on(async move {
- let mut commando_sock = CommandoSocket::new(
+ let mut commando_sock = CommandSocket::new(
proxmox_rest_server::our_ctrl_sock(), nix::unistd::Gid::current());
let init_result: Result<(), Error> = try_block!({