]> git.proxmox.com Git - proxmox-backup.git/blob - pbs-client/src/lib.rs
move remaining client tools to pbs-tools/datastore
[proxmox-backup.git] / pbs-client / src / lib.rs
1 //! Client side interface to the proxmox backup server
2 //!
3 //! This library implements the client side to access the backups
4 //! server using https.
5
6 use anyhow::Error;
7
8 use pbs_api_types::{Authid, Userid};
9 use pbs_tools::ticket::Ticket;
10 use pbs_tools::cert::CertInfo;
11 use pbs_tools::auth::private_auth_key;
12
13 pub mod catalog_shell;
14 pub mod dynamic_index;
15 pub mod pxar;
16 pub mod tools;
17
18 mod merge_known_chunks;
19 pub mod pipe_to_stream;
20
21 mod http_client;
22 pub use http_client::*;
23
24 mod vsock_client;
25 pub use vsock_client::*;
26
27 mod task_log;
28 pub use task_log::*;
29
30 mod backup_reader;
31 pub use backup_reader::*;
32
33 mod backup_writer;
34 pub use backup_writer::*;
35
36 mod remote_chunk_reader;
37 pub use remote_chunk_reader::*;
38
39 mod pxar_backup_stream;
40 pub use pxar_backup_stream::*;
41
42 mod backup_repo;
43 pub use backup_repo::*;
44
45 mod backup_specification;
46 pub use backup_specification::*;
47
48 mod chunk_stream;
49 pub use chunk_stream::{ChunkStream, FixedChunkStream};
50
51 pub const PROXMOX_BACKUP_TCP_KEEPALIVE_TIME: u32 = 120;
52
53 /// Connect to localhost:8007 as root@pam
54 ///
55 /// This automatically creates a ticket if run as 'root' user.
56 pub fn connect_to_localhost() -> Result<HttpClient, Error> {
57
58 let uid = nix::unistd::Uid::current();
59
60 let client = if uid.is_root() {
61 let ticket = Ticket::new("PBS", Userid::root_userid())?
62 .sign(private_auth_key(), None)?;
63 let fingerprint = CertInfo::new()?.fingerprint()?;
64 let options = HttpClientOptions::new_non_interactive(ticket, Some(fingerprint));
65
66 HttpClient::new("localhost", 8007, Authid::root_auth_id(), options)?
67 } else {
68 let options = HttpClientOptions::new_interactive(None, None);
69
70 HttpClient::new("localhost", 8007, Authid::root_auth_id(), options)?
71 };
72
73 Ok(client)
74 }