]>
Commit | Line | Data |
---|---|---|
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 | 7 | use anyhow::{format_err, Error}; |
fca1cef2 | 8 | use serde_json::Value; |
a68768cf | 9 | |
25877d05 | 10 | use proxmox_sys::fs::{create_path, CreateOptions}; |
a68768cf | 11 | |
af06decd | 12 | use pbs_buildcfg; |
a68768cf | 13 | |
1298618a DM |
14 | pub mod jobstate; |
15 | ||
16 | mod verify_job; | |
17 | pub use verify_job::*; | |
b9e7bcc2 | 18 | |
b8d90798 HL |
19 | mod prune_job; |
20 | pub use prune_job::*; | |
21 | ||
3b707fbb DM |
22 | mod gc_job; |
23 | pub use gc_job::*; | |
24 | ||
b9e7bcc2 DM |
25 | mod email_notifications; |
26 | pub use email_notifications::*; | |
b0ef9631 HL |
27 | |
28 | mod report; | |
29 | pub use report::*; | |
027ef213 WB |
30 | |
31 | pub mod ticket; | |
ba39ab20 SR |
32 | |
33 | pub mod auth; | |
fca1cef2 | 34 | |
aa2838c2 WB |
35 | pub mod pull; |
36 | ||
fca1cef2 | 37 | pub(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 | |
46 | pub(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. | |
59 | pub 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 | |
68 | pub 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. | |
82 | pub 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 | } |