move backup id related types to pbs-api-types
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
		| @ -3,6 +3,30 @@ | ||||
| use proxmox::api::schema::{ApiStringFormat, Schema, StringSchema}; | ||||
| use proxmox::const_regex; | ||||
|  | ||||
| #[rustfmt::skip] | ||||
| #[macro_export] | ||||
| macro_rules! PROXMOX_SAFE_ID_REGEX_STR { () => { r"(?:[A-Za-z0-9_][A-Za-z0-9._\-]*)" }; } | ||||
|  | ||||
| #[rustfmt::skip] | ||||
| #[macro_export] | ||||
| macro_rules! BACKUP_ID_RE { () => (r"[A-Za-z0-9_][A-Za-z0-9._\-]*") } | ||||
|  | ||||
| #[rustfmt::skip] | ||||
| #[macro_export] | ||||
| macro_rules! BACKUP_TYPE_RE { () => (r"(?:host|vm|ct)") } | ||||
|  | ||||
| #[rustfmt::skip] | ||||
| #[macro_export] | ||||
| macro_rules! BACKUP_TIME_RE { () => (r"[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z") } | ||||
|  | ||||
| #[rustfmt::skip] | ||||
| #[macro_export] | ||||
| macro_rules! SNAPSHOT_PATH_REGEX_STR { | ||||
|     () => ( | ||||
|         concat!(r"(", BACKUP_TYPE_RE!(), ")/(", BACKUP_ID_RE!(), ")/(", BACKUP_TIME_RE!(), r")") | ||||
|     ); | ||||
| } | ||||
|  | ||||
| #[macro_use] | ||||
| mod userid; | ||||
| pub use userid::Authid; | ||||
| @ -12,14 +36,19 @@ 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 { | ||||
|     () => { | ||||
|         r"(?:[A-Za-z0-9_][A-Za-z0-9._\-]*)" | ||||
|     }; | ||||
| } | ||||
|  | ||||
| const_regex! { | ||||
|     pub BACKUP_TYPE_REGEX = concat!(r"^(", BACKUP_TYPE_RE!(), r")$"); | ||||
|  | ||||
|     pub BACKUP_ID_REGEX = concat!(r"^", BACKUP_ID_RE!(), r"$"); | ||||
|  | ||||
|     pub BACKUP_DATE_REGEX = concat!(r"^", BACKUP_TIME_RE!() ,r"$"); | ||||
|  | ||||
|     pub GROUP_PATH_REGEX = concat!(r"^(", BACKUP_TYPE_RE!(), ")/(", BACKUP_ID_RE!(), r")$"); | ||||
|  | ||||
|     pub BACKUP_FILE_REGEX = r"^.*\.([fd]idx|blob)$"; | ||||
|  | ||||
|     pub SNAPSHOT_PATH_REGEX = concat!(r"^", SNAPSHOT_PATH_REGEX_STR!(), r"$"); | ||||
|  | ||||
|     pub FINGERPRINT_SHA256_REGEX = r"^(?:[0-9a-fA-F][0-9a-fA-F])(?::[0-9a-fA-F][0-9a-fA-F]){31}$"; | ||||
|  | ||||
|     /// Regex for safe identifiers. | ||||
| @ -51,3 +80,5 @@ pub const SINGLE_LINE_COMMENT_FORMAT: ApiStringFormat = | ||||
| pub const SINGLE_LINE_COMMENT_SCHEMA: Schema = StringSchema::new("Comment (single line).") | ||||
|     .format(&SINGLE_LINE_COMMENT_FORMAT) | ||||
|     .schema(); | ||||
|  | ||||
| pub const BACKUP_ID_FORMAT: ApiStringFormat = ApiStringFormat::Pattern(&BACKUP_ID_REGEX); | ||||
|  | ||||
| @ -33,8 +33,6 @@ use proxmox::api::api; | ||||
| use proxmox::api::schema::{ApiStringFormat, Schema, StringSchema}; | ||||
| use proxmox::const_regex; | ||||
|  | ||||
| use super::PROXMOX_SAFE_ID_REGEX_STR; | ||||
|  | ||||
| // we only allow a limited set of characters | ||||
| // colon is not allowed, because we store usernames in | ||||
| // colon separated lists)! | ||||
|  | ||||
| @ -41,17 +41,6 @@ pub const FILENAME_FORMAT: ApiStringFormat = ApiStringFormat::VerifyFn(|name| { | ||||
|     Ok(()) | ||||
| }); | ||||
|  | ||||
| macro_rules! BACKUP_ID_RE { () => (r"[A-Za-z0-9_][A-Za-z0-9._\-]*") } | ||||
| macro_rules! BACKUP_TYPE_RE { () => (r"(?:host|vm|ct)") } | ||||
| macro_rules! BACKUP_TIME_RE { | ||||
|     () => (r"[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z") | ||||
| } | ||||
| macro_rules! SNAPSHOT_PATH_REGEX_STR { | ||||
|     () => ( | ||||
|         concat!(r"(", BACKUP_TYPE_RE!(), ")/(", BACKUP_ID_RE!(), ")/(", BACKUP_TIME_RE!(), r")") | ||||
|     ); | ||||
| } | ||||
|  | ||||
| macro_rules! DNS_LABEL { () => (r"(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?)") } | ||||
| macro_rules! DNS_NAME { () => (concat!(r"(?:(?:", DNS_LABEL!() , r"\.)*", DNS_LABEL!(), ")")) } | ||||
|  | ||||
| @ -101,18 +90,6 @@ const_regex!{ | ||||
|  | ||||
|     pub UUID_REGEX = r"^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$"; | ||||
|  | ||||
|     pub BACKUP_TYPE_REGEX = concat!(r"^(", BACKUP_TYPE_RE!(), r")$"); | ||||
|  | ||||
|     pub BACKUP_ID_REGEX = concat!(r"^", BACKUP_ID_RE!(), r"$"); | ||||
|  | ||||
|     pub BACKUP_DATE_REGEX = concat!(r"^", BACKUP_TIME_RE!() ,r"$"); | ||||
|  | ||||
|     pub GROUP_PATH_REGEX = concat!(r"^(", BACKUP_TYPE_RE!(), ")/(", BACKUP_ID_RE!(), r")$"); | ||||
|  | ||||
|     pub SNAPSHOT_PATH_REGEX = concat!(r"^", SNAPSHOT_PATH_REGEX_STR!(), r"$"); | ||||
|  | ||||
|     pub BACKUP_FILE_REGEX = r"^.*\.([fd]idx|blob)$"; | ||||
|  | ||||
|     pub DATASTORE_MAP_REGEX = concat!(r"(:?", PROXMOX_SAFE_ID_REGEX_STR!(), r"=)?", PROXMOX_SAFE_ID_REGEX_STR!()); | ||||
|  | ||||
|     pub TAPE_RESTORE_SNAPSHOT_REGEX = concat!(r"^", PROXMOX_SAFE_ID_REGEX_STR!(), r":", SNAPSHOT_PATH_REGEX_STR!(), r"$"); | ||||
| @ -133,9 +110,6 @@ pub const IP_FORMAT: ApiStringFormat = | ||||
| pub const PVE_CONFIG_DIGEST_FORMAT: ApiStringFormat = | ||||
|     ApiStringFormat::Pattern(&SHA256_HEX_REGEX); | ||||
|  | ||||
| pub const BACKUP_ID_FORMAT: ApiStringFormat = | ||||
|     ApiStringFormat::Pattern(&BACKUP_ID_REGEX); | ||||
|  | ||||
| pub const UUID_FORMAT: ApiStringFormat = | ||||
|     ApiStringFormat::Pattern(&UUID_REGEX); | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user