]> git.proxmox.com Git - proxmox-backup.git/blame - src/server/mod.rs
api-types: add namespace to BackupGroup
[proxmox-backup.git] / src / server / mod.rs
CommitLineData
882594c5
DM
1//! Proxmox Server/Service framework
2//!
3//! This code provides basic primitives to build our REST API
4//! services. We want async IO, so this is built on top of
5//! tokio/hyper.
6
4bc84a65 7use anyhow::{format_err, Error};
fca1cef2 8use serde_json::Value;
a68768cf 9
25877d05 10use proxmox_sys::fs::{create_path, CreateOptions};
a68768cf 11
af06decd 12use pbs_buildcfg;
a68768cf 13
1298618a
DM
14pub mod jobstate;
15
16mod verify_job;
17pub use verify_job::*;
b9e7bcc2 18
b8d90798
HL
19mod prune_job;
20pub use prune_job::*;
21
3b707fbb
DM
22mod gc_job;
23pub use gc_job::*;
24
b9e7bcc2
DM
25mod email_notifications;
26pub use email_notifications::*;
b0ef9631
HL
27
28mod report;
29pub use report::*;
027ef213
WB
30
31pub mod ticket;
ba39ab20
SR
32
33pub mod auth;
fca1cef2 34
aa2838c2
WB
35pub mod pull;
36
fca1cef2 37pub(crate) async fn reload_proxy_certificate() -> Result<(), Error> {
b9700a9f
DM
38 let proxy_pid = proxmox_rest_server::read_pid(pbs_buildcfg::PROXMOX_BACKUP_PROXY_PID_FN)?;
39 let sock = proxmox_rest_server::ctrl_sock_from_pid(proxy_pid);
ee0ea735
TL
40 let _: Value =
41 proxmox_rest_server::send_raw_command(sock, "{\"command\":\"reload-certificate\"}\n")
42 .await?;
fca1cef2
WB
43 Ok(())
44}
062cf75c
DC
45
46pub(crate) async fn notify_datastore_removed() -> Result<(), Error> {
b9700a9f
DM
47 let proxy_pid = proxmox_rest_server::read_pid(pbs_buildcfg::PROXMOX_BACKUP_PROXY_PID_FN)?;
48 let sock = proxmox_rest_server::ctrl_sock_from_pid(proxy_pid);
ee0ea735
TL
49 let _: Value =
50 proxmox_rest_server::send_raw_command(sock, "{\"command\":\"datastore-removed\"}\n")
51 .await?;
062cf75c
DC
52 Ok(())
53}
6c76aa43
WB
54
55/// Create the base run-directory.
56///
57/// This exists to fixate the permissions for the run *base* directory while allowing intermediate
58/// directories after it to have different permissions.
59pub fn create_run_dir() -> Result<(), Error> {
21211748 60 let backup_user = pbs_config::backup_user()?;
6c76aa43
WB
61 let opts = CreateOptions::new()
62 .owner(backup_user.uid)
63 .group(backup_user.gid);
64 let _: bool = create_path(pbs_buildcfg::PROXMOX_BACKUP_RUN_DIR_M!(), None, Some(opts))?;
65 Ok(())
66}
b9352095
DM
67
68pub fn create_state_dir() -> Result<(), Error> {
69 let backup_user = pbs_config::backup_user()?;
70 let opts = CreateOptions::new()
71 .owner(backup_user.uid)
72 .group(backup_user.gid);
ee0ea735
TL
73 create_path(
74 pbs_buildcfg::PROXMOX_BACKUP_STATE_DIR_M!(),
75 None,
76 Some(opts),
77 )?;
b9352095
DM
78 Ok(())
79}
4bc84a65
HL
80
81/// Create active operations dir with correct permission.
82pub fn create_active_operations_dir() -> Result<(), Error> {
83 let backup_user = pbs_config::backup_user()?;
84 let mode = nix::sys::stat::Mode::from_bits_truncate(0o0750);
85 let options = CreateOptions::new()
86 .perm(mode)
87 .owner(backup_user.uid)
88 .group(backup_user.gid);
89
90 create_path(pbs_datastore::ACTIVE_OPERATIONS_DIR, None, Some(options))
91 .map_err(|err: Error| format_err!("unable to create active operations dir - {}", err))?;
92 Ok(())
93}