mirror of
https://git.proxmox.com/git/proxmox
synced 2025-05-10 02:37:35 +00:00
api-types: ldap: add verification regex for LDAP DNs
Regex was taken from the LDAP implementation in PVE. Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
This commit is contained in:
parent
5720ba2dce
commit
3aba0d9aa6
@ -1,6 +1,8 @@
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use proxmox_schema::{api, ApiStringFormat, ApiType, ArraySchema, Schema, StringSchema, Updater};
|
use proxmox_schema::{
|
||||||
|
api, const_regex, ApiStringFormat, ApiType, ArraySchema, Schema, StringSchema, Updater,
|
||||||
|
};
|
||||||
|
|
||||||
use super::{REALM_ID_SCHEMA, SINGLE_LINE_COMMENT_SCHEMA};
|
use super::{REALM_ID_SCHEMA, SINGLE_LINE_COMMENT_SCHEMA};
|
||||||
|
|
||||||
@ -45,6 +47,13 @@ pub enum LdapMode {
|
|||||||
optional: true,
|
optional: true,
|
||||||
schema: USER_CLASSES_SCHEMA,
|
schema: USER_CLASSES_SCHEMA,
|
||||||
},
|
},
|
||||||
|
"base-dn" : {
|
||||||
|
schema: LDAP_DOMAIN_SCHEMA,
|
||||||
|
},
|
||||||
|
"bind-dn" : {
|
||||||
|
schema: LDAP_DOMAIN_SCHEMA,
|
||||||
|
optional: true,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
)]
|
)]
|
||||||
#[derive(Serialize, Deserialize, Updater, Clone)]
|
#[derive(Serialize, Deserialize, Updater, Clone)]
|
||||||
@ -133,6 +142,28 @@ pub enum RemoveVanished {
|
|||||||
Properties,
|
Properties,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! DOMAIN_PART_REGEX {
|
||||||
|
() => {
|
||||||
|
r#"("[^"]+"|[^ ,+"/<>;=#][^,+"/<>;=]*[^ ,+"/<>;=]|[^ ,+"/<>;=#])"#
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const_regex! {
|
||||||
|
pub LDAP_DOMAIN_REGEX = concat!(
|
||||||
|
r#"\w+="#,
|
||||||
|
DOMAIN_PART_REGEX!(),
|
||||||
|
r#"(,\s*\w+="#,
|
||||||
|
DOMAIN_PART_REGEX!(),
|
||||||
|
")*"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub const LDAP_DOMAIN_FORMAT: ApiStringFormat = ApiStringFormat::Pattern(&LDAP_DOMAIN_REGEX);
|
||||||
|
|
||||||
|
pub const LDAP_DOMAIN_SCHEMA: Schema = StringSchema::new("LDAP Domain")
|
||||||
|
.format(&LDAP_DOMAIN_FORMAT)
|
||||||
|
.schema();
|
||||||
|
|
||||||
pub const SYNC_DEFAULTS_STRING_SCHEMA: Schema = StringSchema::new("sync defaults options")
|
pub const SYNC_DEFAULTS_STRING_SCHEMA: Schema = StringSchema::new("sync defaults options")
|
||||||
.format(&ApiStringFormat::PropertyString(
|
.format(&ApiStringFormat::PropertyString(
|
||||||
&SyncDefaultsOptions::API_SCHEMA,
|
&SyncDefaultsOptions::API_SCHEMA,
|
||||||
|
Loading…
Reference in New Issue
Block a user