From 751f6b61480def8996087a1e417ede801440842e Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Wed, 7 Jul 2021 09:53:48 +0200 Subject: [PATCH] move userid types to pbs-api-types Signed-off-by: Wolfgang Bumiller --- pbs-api-types/Cargo.toml | 2 ++ pbs-api-types/src/lib.rs | 9 ++++++++ .../types => pbs-api-types/src}/userid.rs | 5 +++++ src/api2/types/mod.rs | 21 +------------------ 4 files changed, 17 insertions(+), 20 deletions(-) rename {src/api2/types => pbs-api-types/src}/userid.rs (99%) diff --git a/pbs-api-types/Cargo.toml b/pbs-api-types/Cargo.toml index 0a9f7ea7..9f3e9f5f 100644 --- a/pbs-api-types/Cargo.toml +++ b/pbs-api-types/Cargo.toml @@ -6,7 +6,9 @@ edition = "2018" description = "general API type helpers for PBS" [dependencies] +anyhow = "1.0" lazy_static = "1.4" regex = "1.2" +serde = { version = "1.0", features = ["derive"] } proxmox = { version = "0.11.5", default-features = false, features = [ "api-macro" ] } diff --git a/pbs-api-types/src/lib.rs b/pbs-api-types/src/lib.rs index 125f67c8..58f5615a 100644 --- a/pbs-api-types/src/lib.rs +++ b/pbs-api-types/src/lib.rs @@ -3,6 +3,15 @@ use proxmox::api::schema::{ApiStringFormat, Schema, StringSchema}; use proxmox::const_regex; +#[macro_use] +mod userid; +pub use userid::Authid; +pub use userid::Userid; +pub use userid::{Realm, RealmRef}; +pub use userid::{Tokenname, TokennameRef}; +pub use userid::{Username, UsernameRef}; +pub use userid::{PROXMOX_GROUP_ID_SCHEMA, PROXMOX_TOKEN_ID_SCHEMA, PROXMOX_TOKEN_NAME_SCHEMA}; + #[macro_export] macro_rules! PROXMOX_SAFE_ID_REGEX_STR { () => { diff --git a/src/api2/types/userid.rs b/pbs-api-types/src/userid.rs similarity index 99% rename from src/api2/types/userid.rs rename to pbs-api-types/src/userid.rs index ed9b5f08..34c7a09f 100644 --- a/src/api2/types/userid.rs +++ b/pbs-api-types/src/userid.rs @@ -40,10 +40,15 @@ use super::PROXMOX_SAFE_ID_REGEX_STR; // colon separated lists)! // slash is not allowed because it is used as pve API delimiter // also see "man useradd" +#[macro_export] macro_rules! USER_NAME_REGEX_STR { () => (r"(?:[^\s:/[:cntrl:]]+)") } +#[macro_export] macro_rules! GROUP_NAME_REGEX_STR { () => (USER_NAME_REGEX_STR!()) } +#[macro_export] macro_rules! TOKEN_NAME_REGEX_STR { () => (PROXMOX_SAFE_ID_REGEX_STR!()) } +#[macro_export] macro_rules! USER_ID_REGEX_STR { () => (concat!(USER_NAME_REGEX_STR!(), r"@", PROXMOX_SAFE_ID_REGEX_STR!())) } +#[macro_export] macro_rules! APITOKEN_ID_REGEX_STR { () => (concat!(USER_ID_REGEX_STR!() , r"!", TOKEN_NAME_REGEX_STR!())) } const_regex! { diff --git a/src/api2/types/mod.rs b/src/api2/types/mod.rs index 2adf974e..820d9618 100644 --- a/src/api2/types/mod.rs +++ b/src/api2/types/mod.rs @@ -19,15 +19,6 @@ use crate::{ config::acl::Role, }; -#[macro_use] -mod userid; -pub use userid::{Realm, RealmRef}; -pub use userid::{Tokenname, TokennameRef}; -pub use userid::{Username, UsernameRef}; -pub use userid::Userid; -pub use userid::Authid; -pub use userid::{PROXMOX_TOKEN_ID_SCHEMA, PROXMOX_TOKEN_NAME_SCHEMA, PROXMOX_GROUP_ID_SCHEMA}; - mod tape; pub use tape::*; @@ -37,17 +28,7 @@ pub use file_restore::*; mod acme; pub use acme::*; -pub use pbs_api_types::{ - CERT_FINGERPRINT_SHA256_SCHEMA, - FINGERPRINT_SHA256_FORMAT, - FINGERPRINT_SHA256_REGEX, - PROXMOX_SAFE_ID_FORMAT, - PROXMOX_SAFE_ID_REGEX, - PROXMOX_SAFE_ID_REGEX_STR, - SINGLE_LINE_COMMENT_FORMAT, - SINGLE_LINE_COMMENT_REGEX, - SINGLE_LINE_COMMENT_SCHEMA, -}; +pub use pbs_api_types::*; // File names: may not contain slashes, may not start with "." pub const FILENAME_FORMAT: ApiStringFormat = ApiStringFormat::VerifyFn(|name| {