X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=proxmox-auth-api%2Fsrc%2Ftypes.rs;h=e11d0b1af580d75f0e4ab9143d125b0fb32379f8;hb=a6f1b36fa6caa476e3338dfa9c90c20fee0ddef7;hp=319ac4ba697c282b324238380622b5ed94e88d55;hpb=0c5e2640d00024d8a37d6bb618b28437e0edc443;p=proxmox.git diff --git a/proxmox-auth-api/src/types.rs b/proxmox-auth-api/src/types.rs index 319ac4ba..e11d0b1a 100644 --- a/proxmox-auth-api/src/types.rs +++ b/proxmox-auth-api/src/types.rs @@ -27,62 +27,36 @@ use std::fmt; use anyhow::{bail, format_err, Error}; use lazy_static::lazy_static; use serde::{Deserialize, Serialize}; +use const_format::concatcp; use proxmox_schema::{ api, const_regex, ApiStringFormat, ApiType, Schema, StringSchema, UpdaterType, }; +use proxmox_schema::api_types::SAFE_ID_REGEX_STR; + // we only allow a limited set of characters // colon is not allowed, because we store usernames in // 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 { - () => { - $crate::USER_NAME_REGEX_STR!() - }; -} -#[macro_export] -macro_rules! TOKEN_NAME_REGEX_STR { - () => { - proxmox_schema::SAFE_ID_REGEX_STR!() - }; -} -#[macro_export] -macro_rules! USER_ID_REGEX_STR { - () => { - concat!( - $crate::USER_NAME_REGEX_STR!(), - r"@", - proxmox_schema::SAFE_ID_REGEX_STR!() - ) - }; -} -#[macro_export] -macro_rules! APITOKEN_ID_REGEX_STR { - () => { - concat!( - $crate::USER_ID_REGEX_STR!(), - r"!", - $crate::TOKEN_NAME_REGEX_STR!() - ) - }; -} +pub const USER_NAME_REGEX_STR: &str = r"(?:[^\s:/[:cntrl:]]+)"; + +pub const GROUP_NAME_REGEX_STR: &str = USER_NAME_REGEX_STR; + +pub const TOKEN_NAME_REGEX_STR: &str = SAFE_ID_REGEX_STR; + +pub const USER_ID_REGEX_STR: &str = concatcp!(USER_NAME_REGEX_STR, r"@", SAFE_ID_REGEX_STR); + +pub const APITOKEN_ID_REGEX_STR: &str = concatcp!(USER_ID_REGEX_STR, r"!", TOKEN_NAME_REGEX_STR); const_regex! { - pub PROXMOX_USER_NAME_REGEX = concat!(r"^", USER_NAME_REGEX_STR!(), r"$"); - pub PROXMOX_TOKEN_NAME_REGEX = concat!(r"^", TOKEN_NAME_REGEX_STR!(), r"$"); - pub PROXMOX_USER_ID_REGEX = concat!(r"^", USER_ID_REGEX_STR!(), r"$"); - pub PROXMOX_APITOKEN_ID_REGEX = concat!(r"^", APITOKEN_ID_REGEX_STR!(), r"$"); - pub PROXMOX_AUTH_ID_REGEX = concat!(r"^", r"(?:", USER_ID_REGEX_STR!(), r"|", APITOKEN_ID_REGEX_STR!(), r")$"); - pub PROXMOX_GROUP_ID_REGEX = concat!(r"^", GROUP_NAME_REGEX_STR!(), r"$"); + pub PROXMOX_USER_NAME_REGEX = concatcp!(r"^", USER_NAME_REGEX_STR, r"$"); + pub PROXMOX_TOKEN_NAME_REGEX = concatcp!(r"^", TOKEN_NAME_REGEX_STR, r"$"); + pub PROXMOX_USER_ID_REGEX = concatcp!(r"^", USER_ID_REGEX_STR, r"$"); + pub PROXMOX_APITOKEN_ID_REGEX = concatcp!(r"^", APITOKEN_ID_REGEX_STR, r"$"); + pub PROXMOX_AUTH_ID_REGEX = concatcp!(r"^", r"(?:", USER_ID_REGEX_STR, r"|", APITOKEN_ID_REGEX_STR, r")$"); + pub PROXMOX_GROUP_ID_REGEX = concatcp!(r"^", GROUP_NAME_REGEX_STR, r"$"); } pub const PROXMOX_USER_NAME_FORMAT: ApiStringFormat =