diff --git a/Cargo.toml b/Cargo.toml index 076fe0ca..09851309 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ pam = "0.7" pam-sys = "0.5" percent-encoding = "2.1" pin-utils = "0.1.0-alpha" -proxmox = { version = "0.1.5", features = [ "sortable-macro", "api-macro" ] } +proxmox = { version = "0.1.7", features = [ "sortable-macro", "api-macro" ] } #proxmox = { git = "ssh://gitolite3@proxdev.maurer-it.com/rust/proxmox", version = "0.1.2", features = [ "sortable-macro", "api-macro" ] } #proxmox = { path = "../proxmox/proxmox", features = [ "sortable-macro", "api-macro" ] } regex = "1.2" diff --git a/src/api2.rs b/src/api2.rs index 46c08a40..31c9d8e7 100644 --- a/src/api2.rs +++ b/src/api2.rs @@ -9,9 +9,9 @@ pub mod types; pub mod version; pub mod pull; -use proxmox::api::list_subdirs_api_method; use proxmox::api::router::SubdirMap; use proxmox::api::Router; +use proxmox::list_subdirs_api_method; const NODES_ROUTER: Router = Router::new().match_all("node", &node::ROUTER); diff --git a/src/api2/access.rs b/src/api2/access.rs index 8016b6b6..13692a19 100644 --- a/src/api2/access.rs +++ b/src/api2/access.rs @@ -2,10 +2,10 @@ use failure::*; use serde_json::{json, Value}; -use proxmox::sortable; -use proxmox::api::{http_err, list_subdirs_api_method}; -use proxmox::api::router::{Router, SubdirMap}; use proxmox::api::api; +use proxmox::api::router::{Router, SubdirMap}; +use proxmox::sortable; +use proxmox::{http_err, list_subdirs_api_method}; use crate::tools; use crate::tools::ticket::*; diff --git a/src/api2/admin.rs b/src/api2/admin.rs index e782d68c..189a2a11 100644 --- a/src/api2/admin.rs +++ b/src/api2/admin.rs @@ -1,5 +1,5 @@ use proxmox::api::router::{Router, SubdirMap}; -use proxmox::api::list_subdirs_api_method; +use proxmox::list_subdirs_api_method; pub mod datastore; diff --git a/src/api2/admin/datastore.rs b/src/api2/admin/datastore.rs index 9487bcf4..7d88c57d 100644 --- a/src/api2/admin/datastore.rs +++ b/src/api2/admin/datastore.rs @@ -7,14 +7,13 @@ use hyper::http::request::Parts; use hyper::{header, Body, Response, StatusCode}; use serde_json::{json, Value}; -use proxmox::{sortable, identity}; use proxmox::api::api; -use proxmox::api::{http_err, list_subdirs_api_method}; use proxmox::api::{ApiResponseFuture, ApiHandler, ApiMethod, Router, RpcEnvironment, RpcEnvironmentType}; use proxmox::api::router::SubdirMap; use proxmox::api::schema::*; -use proxmox::tools::try_block; use proxmox::tools::fs::{file_get_contents, replace_file, CreateOptions}; +use proxmox::try_block; +use proxmox::{http_err, identity, list_subdirs_api_method, sortable}; use crate::api2::types::*; use crate::backup::*; diff --git a/src/api2/backup.rs b/src/api2/backup.rs index 894d7c13..5e4b4238 100644 --- a/src/api2/backup.rs +++ b/src/api2/backup.rs @@ -5,8 +5,7 @@ use hyper::http::request::Parts; use hyper::{Body, Response, StatusCode}; use serde_json::{json, Value}; -use proxmox::{sortable, identity}; -use proxmox::api::list_subdirs_api_method; +use proxmox::{sortable, identity, list_subdirs_api_method}; use proxmox::api::{ApiResponseFuture, ApiHandler, ApiMethod, Router, RpcEnvironment}; use proxmox::api::router::SubdirMap; use proxmox::api::schema::*; diff --git a/src/api2/backup/upload_chunk.rs b/src/api2/backup/upload_chunk.rs index 1bc8c7d8..3fc457b0 100644 --- a/src/api2/backup/upload_chunk.rs +++ b/src/api2/backup/upload_chunk.rs @@ -58,7 +58,7 @@ impl Future for UploadChunk { break format_err!("uploaded chunk has unexpected size."); } - let (is_duplicate, compressed_size) = match proxmox::tools::try_block! { + let (is_duplicate, compressed_size) = match proxmox::try_block! { let mut chunk = DataBlob::from_raw(raw_data)?; chunk.verify_unencrypted(this.size as usize, &this.digest)?; diff --git a/src/api2/config.rs b/src/api2/config.rs index a6fef19a..79db82da 100644 --- a/src/api2/config.rs +++ b/src/api2/config.rs @@ -1,5 +1,5 @@ use proxmox::api::router::{Router, SubdirMap}; -use proxmox::api::list_subdirs_api_method; +use proxmox::list_subdirs_api_method; pub mod datastore; pub mod remote; diff --git a/src/api2/node.rs b/src/api2/node.rs index b8bcd6cd..b63197c9 100644 --- a/src/api2/node.rs +++ b/src/api2/node.rs @@ -1,5 +1,5 @@ use proxmox::api::router::{Router, SubdirMap}; -use proxmox::api::list_subdirs_api_method; +use proxmox::list_subdirs_api_method; mod tasks; mod time; diff --git a/src/api2/node/dns.rs b/src/api2/node/dns.rs index 46fd01f7..fe69e1e9 100644 --- a/src/api2/node/dns.rs +++ b/src/api2/node/dns.rs @@ -10,7 +10,7 @@ use proxmox::{sortable, identity}; use proxmox::api::{ApiHandler, ApiMethod, Router, RpcEnvironment}; use proxmox::api::schema::*; use proxmox::tools::fs::{file_get_contents, replace_file, CreateOptions}; -use proxmox::tools::*; // required to use IPRE!() macro ??? +use proxmox::{IPRE, IPV4RE, IPV6RE, IPV4OCTET, IPV6H16, IPV6LS32}; use crate::api2::types::*; diff --git a/src/api2/node/services.rs b/src/api2/node/services.rs index 56c64248..aedfe0b3 100644 --- a/src/api2/node/services.rs +++ b/src/api2/node/services.rs @@ -3,8 +3,7 @@ use std::process::{Command, Stdio}; use failure::*; use serde_json::{json, Value}; -use proxmox::{sortable, identity}; -use proxmox::api::list_subdirs_api_method; +use proxmox::{sortable, identity, list_subdirs_api_method}; use proxmox::api::{ApiHandler, ApiMethod, Router, RpcEnvironment}; use proxmox::api::router::SubdirMap; use proxmox::api::schema::*; diff --git a/src/api2/node/status.rs b/src/api2/node/status.rs index 7013cf4b..9bdf256c 100644 --- a/src/api2/node/status.rs +++ b/src/api2/node/status.rs @@ -4,7 +4,7 @@ use serde_json::{json, Value}; use proxmox::sys::linux::procfs; use proxmox::api::{api, ApiMethod, Router, RpcEnvironment, SubdirMap}; -use proxmox::api::list_subdirs_api_method; +use proxmox::list_subdirs_api_method; use crate::api2::types::*; diff --git a/src/api2/node/tasks.rs b/src/api2/node/tasks.rs index b725f35d..3abab40b 100644 --- a/src/api2/node/tasks.rs +++ b/src/api2/node/tasks.rs @@ -4,11 +4,10 @@ use std::io::{BufRead, BufReader}; use failure::*; use serde_json::{json, Value}; -use proxmox::{sortable, identity}; -use proxmox::api::list_subdirs_api_method; use proxmox::api::{ApiHandler, ApiMethod, Router, RpcEnvironment}; use proxmox::api::router::SubdirMap; use proxmox::api::schema::*; +use proxmox::{identity, list_subdirs_api_method, sortable}; use crate::tools; use crate::api2::types::*; diff --git a/src/api2/pull.rs b/src/api2/pull.rs index e2368db6..a5e64548 100644 --- a/src/api2/pull.rs +++ b/src/api2/pull.rs @@ -128,7 +128,7 @@ async fn pull_snapshot( tmp_manifest_blob.verify_crc()?; if manifest_name.exists() { - let manifest_blob = proxmox::tools::try_block!({ + let manifest_blob = proxmox::try_block!({ let mut manifest_file = std::fs::File::open(&manifest_name) .map_err(|err| format_err!("unable to open local manifest {:?} - {}", manifest_name, err))?; @@ -331,7 +331,7 @@ pub async fn pull_store( } if delete { - let result: Result<(), Error> = proxmox::tools::try_block!({ + let result: Result<(), Error> = proxmox::try_block!({ let local_groups = BackupGroup::list_groups(&tgt_store.base_path())?; for local_group in local_groups { if new_groups.contains(&local_group) { continue; } diff --git a/src/api2/reader.rs b/src/api2/reader.rs index 130fe7ba..4a7aa680 100644 --- a/src/api2/reader.rs +++ b/src/api2/reader.rs @@ -7,9 +7,9 @@ use hyper::{Body, Response, StatusCode}; use serde_json::Value; use proxmox::{sortable, identity}; -use proxmox::api::http_err; use proxmox::api::{ApiResponseFuture, ApiHandler, ApiMethod, Router, RpcEnvironment}; use proxmox::api::schema::*; +use proxmox::http_err; use crate::api2::types::*; use crate::backup::*; diff --git a/src/api2/types.rs b/src/api2/types.rs index 8a3d6ea4..16646ca6 100644 --- a/src/api2/types.rs +++ b/src/api2/types.rs @@ -1,8 +1,9 @@ use failure::*; use ::serde::{Deserialize, Serialize}; -use proxmox::api::{api, const_regex, schema::*}; -use proxmox::tools::*; // required to use IPRE!() macro ??? +use proxmox::api::{api, schema::*}; +use proxmox::const_regex; +use proxmox::{IPRE, IPV4RE, IPV6RE, IPV4OCTET, IPV6H16, IPV6LS32}; // File names: may not contain slashes, may not start with "." pub const FILENAME_FORMAT: ApiStringFormat = ApiStringFormat::VerifyFn(|name| { diff --git a/src/auth_helpers.rs b/src/auth_helpers.rs index 5382da27..bca58bdf 100644 --- a/src/auth_helpers.rs +++ b/src/auth_helpers.rs @@ -7,10 +7,8 @@ use openssl::sha; use std::path::PathBuf; -use proxmox::tools::{ - try_block, - fs::{file_get_contents, replace_file, CreateOptions}, -}; +use proxmox::tools::fs::{file_get_contents, replace_file, CreateOptions}; +use proxmox::try_block; fn compute_csrf_secret_digest( timestamp: i64, diff --git a/src/backup/data_blob.rs b/src/backup/data_blob.rs index 925e9ce6..3a5a05e0 100644 --- a/src/backup/data_blob.rs +++ b/src/backup/data_blob.rs @@ -48,13 +48,13 @@ impl DataBlob { /// accessor to crc32 checksum pub fn crc(&self) -> u32 { - let crc_o = proxmox::tools::offsetof!(DataBlobHeader, crc); + let crc_o = proxmox::offsetof!(DataBlobHeader, crc); u32::from_le_bytes(self.raw_data[crc_o..crc_o+4].try_into().unwrap()) } // set the CRC checksum field pub fn set_crc(&mut self, crc: u32) { - let crc_o = proxmox::tools::offsetof!(DataBlobHeader, crc); + let crc_o = proxmox::offsetof!(DataBlobHeader, crc); self.raw_data[crc_o..crc_o+4].copy_from_slice(&crc.to_le_bytes()); } diff --git a/src/backup/dynamic_index.rs b/src/backup/dynamic_index.rs index af848e93..0a993d34 100644 --- a/src/backup/dynamic_index.rs +++ b/src/backup/dynamic_index.rs @@ -29,7 +29,7 @@ pub struct DynamicIndexHeader { pub index_csum: [u8; 32], reserved: [u8; 4032], // overall size is one page (4096 bytes) } -proxmox::tools::static_assert_size!(DynamicIndexHeader, 4096); +proxmox::static_assert_size!(DynamicIndexHeader, 4096); // TODO: Once non-Copy unions are stabilized, use: // union DynamicIndexHeader { // reserved: [u8; 4096], @@ -493,7 +493,7 @@ impl DynamicIndexWriter { self.writer.flush()?; - let csum_offset = proxmox::tools::offsetof!(DynamicIndexHeader, index_csum); + let csum_offset = proxmox::offsetof!(DynamicIndexHeader, index_csum); self.writer.seek(SeekFrom::Start(csum_offset as u64))?; let csum = self.csum.take().unwrap(); diff --git a/src/backup/fixed_index.rs b/src/backup/fixed_index.rs index db0c52d0..d3726320 100644 --- a/src/backup/fixed_index.rs +++ b/src/backup/fixed_index.rs @@ -32,7 +32,7 @@ pub struct FixedIndexHeader { pub chunk_size: u64, reserved: [u8; 4016], // overall size is one page (4096 bytes) } -proxmox::tools::static_assert_size!(FixedIndexHeader, 4096); +proxmox::static_assert_size!(FixedIndexHeader, 4096); // split image into fixed size chunks @@ -372,7 +372,7 @@ impl FixedIndexWriter { self.unmap()?; - let csum_offset = proxmox::tools::offsetof!(FixedIndexHeader, index_csum); + let csum_offset = proxmox::offsetof!(FixedIndexHeader, index_csum); self.file.seek(SeekFrom::Start(csum_offset as u64))?; self.file.write_all(&index_csum)?; self.file.flush()?; diff --git a/src/backup/key_derivation.rs b/src/backup/key_derivation.rs index 45c464aa..547eed96 100644 --- a/src/backup/key_derivation.rs +++ b/src/backup/key_derivation.rs @@ -3,10 +3,8 @@ use failure::*; use serde::{Deserialize, Serialize}; use chrono::{Local, TimeZone, DateTime}; -use proxmox::tools::{ - try_block, - fs::{file_get_contents, replace_file, CreateOptions}, -}; +use proxmox::tools::fs::{file_get_contents, replace_file, CreateOptions}; +use proxmox::try_block; #[derive(Deserialize, Serialize, Debug)] pub enum KeyDerivationConfig { diff --git a/src/backup/manifest.rs b/src/backup/manifest.rs index c1e66de1..ca588f9b 100644 --- a/src/backup/manifest.rs +++ b/src/backup/manifest.rs @@ -119,7 +119,7 @@ impl TryFrom for BackupManifest { use crate::tools::{required_string_property, required_integer_property, required_array_property}; - proxmox::tools::try_block!({ + proxmox::try_block!({ let backup_type = required_string_property(&data, "backup-type")?; let backup_id = required_string_property(&data, "backup-id")?; let backup_time = required_integer_property(&data, "backup-time")?; diff --git a/src/bin/proxmox-backup-api.rs b/src/bin/proxmox-backup-api.rs index a1ac399a..4dca9bcb 100644 --- a/src/bin/proxmox-backup-api.rs +++ b/src/bin/proxmox-backup-api.rs @@ -1,7 +1,7 @@ use failure::*; use futures::*; -use proxmox::tools::try_block; +use proxmox::try_block; use proxmox::api::RpcEnvironmentType; //use proxmox_backup::tools; diff --git a/src/bin/proxmox-backup-client.rs b/src/bin/proxmox-backup-client.rs index a73c3c8d..4acdb8f6 100644 --- a/src/bin/proxmox-backup-client.rs +++ b/src/bin/proxmox-backup-client.rs @@ -35,7 +35,7 @@ use xdg::BaseDirectories; use futures::*; use tokio::sync::mpsc; -proxmox::api::const_regex! { +proxmox::const_regex! { BACKUPSPEC_REGEX = r"^([a-zA-Z0-9_-]+\.(?:pxar|img|conf|log)):(.+)$"; } diff --git a/src/bin/proxmox-backup-manager.rs b/src/bin/proxmox-backup-manager.rs index c076e667..283e293d 100644 --- a/src/bin/proxmox-backup-manager.rs +++ b/src/bin/proxmox-backup-manager.rs @@ -467,7 +467,7 @@ pub fn complete_remote_datastore_name(_arg: &str, param: &HashMap bool {