src/api2/types.rs: define HOSTNAME_FORMAT, DNS_NAME_FORMAT and DNS_NAME_OR_IP_FORMAT
This commit is contained in:
		@ -15,6 +15,8 @@ pub const FILENAME_FORMAT: ApiStringFormat = ApiStringFormat::VerifyFn(|name| {
 | 
				
			|||||||
    Ok(())
 | 
					    Ok(())
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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!())) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const_regex!{
 | 
					const_regex!{
 | 
				
			||||||
    pub IP_FORMAT_REGEX = IPRE!();
 | 
					    pub IP_FORMAT_REGEX = IPRE!();
 | 
				
			||||||
@ -31,6 +33,12 @@ const_regex!{
 | 
				
			|||||||
    pub PROXMOX_SAFE_ID_REGEX = r"^[A-Za-z0-9_][A-Za-z0-9._\-]*";
 | 
					    pub PROXMOX_SAFE_ID_REGEX = r"^[A-Za-z0-9_][A-Za-z0-9._\-]*";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pub SINGLE_LINE_COMMENT_REGEX = r"^[[:^cntrl:]]*$";
 | 
					    pub SINGLE_LINE_COMMENT_REGEX = r"^[[:^cntrl:]]*$";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub HOSTNAME_REGEX = r"^(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?)$";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub DNS_NAME_REGEX =  concat!(r"^", DNS_NAME!(), r")$");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub DNS_NAME_OR_IP_REGEX = concat!(r"^", DNS_NAME!(), "|",  IPRE!(), r")$");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub const SYSTEMD_DATETIME_FORMAT: ApiStringFormat =
 | 
					pub const SYSTEMD_DATETIME_FORMAT: ApiStringFormat =
 | 
				
			||||||
@ -48,6 +56,15 @@ pub const PROXMOX_SAFE_ID_FORMAT: ApiStringFormat =
 | 
				
			|||||||
pub const SINGLE_LINE_COMMENT_FORMAT: ApiStringFormat =
 | 
					pub const SINGLE_LINE_COMMENT_FORMAT: ApiStringFormat =
 | 
				
			||||||
    ApiStringFormat::Pattern(&SINGLE_LINE_COMMENT_REGEX);
 | 
					    ApiStringFormat::Pattern(&SINGLE_LINE_COMMENT_REGEX);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub const HOSTNAME_FORMAT: ApiStringFormat =
 | 
				
			||||||
 | 
					    ApiStringFormat::Pattern(&HOSTNAME_REGEX);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub const DNS_NAME_FORMAT: ApiStringFormat =
 | 
				
			||||||
 | 
					    ApiStringFormat::Pattern(&DNS_NAME_REGEX);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub const DNS_NAME_OR_IP_FORMAT: ApiStringFormat =
 | 
				
			||||||
 | 
					    ApiStringFormat::Pattern(&DNS_NAME_OR_IP_REGEX);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub const PVE_CONFIG_DIGEST_SCHEMA: Schema = StringSchema::new(r#"\
 | 
					pub const PVE_CONFIG_DIGEST_SCHEMA: Schema = StringSchema::new(r#"\
 | 
				
			||||||
Prevent changes if current configuration file has different SHA256 digest.
 | 
					Prevent changes if current configuration file has different SHA256 digest.
 | 
				
			||||||
@ -133,6 +150,14 @@ pub const SINGLE_LINE_COMMENT_SCHEMA: Schema = StringSchema::new("Comment (singl
 | 
				
			|||||||
    .format(&SINGLE_LINE_COMMENT_FORMAT)
 | 
					    .format(&SINGLE_LINE_COMMENT_FORMAT)
 | 
				
			||||||
    .schema();
 | 
					    .schema();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub const HOSTNAME_SCHEMA: Schema = StringSchema::new("Hostname (as defined in RFC1123).")
 | 
				
			||||||
 | 
					    .format(&HOSTNAME_FORMAT)
 | 
				
			||||||
 | 
					    .schema();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub const DNS_NAME_OR_IP_SCHEMA: Schema = StringSchema::new("DNS name or IP address.")
 | 
				
			||||||
 | 
					    .format(&DNS_NAME_OR_IP_FORMAT)
 | 
				
			||||||
 | 
					    .schema();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Complex type definitions
 | 
					// Complex type definitions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user