3Special syntax and attribute type registrations for enforcing
4standard-compliant behaviour even if current subschema of
5a server is erroneous or could not be retrieved.
10from ..searchform
import SEARCH_SCOPE_STR_ONELEVEL
11from ..schema.syntaxes
import (
31 ObjectClassDescription,
32 AttributeTypeDescription,
33 MatchingRuleDescription,
34 MatchingRuleUseDescription,
35 LDAPSyntaxDescription,
36 DITContentRuleDescription,
37 DITStructureRuleDescription,
42syntax_registry.reg_at(
43 ObjectClassDescription.oid,
45 '2.5.21.6',
'objectClasses',
49syntax_registry.reg_at(
50 AttributeTypeDescription.oid,
52 '2.5.21.5',
'attributeTypes',
56syntax_registry.reg_at(
57 MatchingRuleDescription.oid,
59 '2.5.21.4',
'matchingRules',
63syntax_registry.reg_at(
64 MatchingRuleUseDescription.oid,
66 '2.5.21.8',
'matchingRuleUse',
70syntax_registry.reg_at(
71 LDAPSyntaxDescription.oid,
73 '1.3.6.1.4.1.1466.101.120.16',
'ldapSyntaxes',
77syntax_registry.reg_at(
78 DITContentRuleDescription.oid,
80 '2.5.21.2',
'dITContentRules',
84syntax_registry.reg_at(
85 DITStructureRuleDescription.oid,
87 '2.5.21.1',
'dITStructureRules',
91syntax_registry.reg_at(
92 NameFormDescription.oid,
94 '2.5.21.7',
'nameForms',
98syntax_registry.reg_at(
101 '1.2.826.0.1050.11.0',
'ogSupportedProfile',
102 '1.3.6.1.4.1.1466.101.120.13',
'supportedControl',
103 '1.3.6.1.4.1.1466.101.120.7',
'supportedExtension',
104 '1.3.6.1.4.1.4203.1.3.5',
'supportedFeatures',
105 'supportedCapabilities',
109syntax_registry.reg_at(
112 '0.9.2342.19200300.100.1.3',
113 '2.16.840.1.113730.3.1.13',
114 '2.16.840.1.113730.3.1.17',
115 '2.16.840.1.113730.3.1.30',
116 '1.3.6.1.4.1.42.2.27.2.1.15',
117 '2.16.840.1.113730.3.1.47',
118 '1.2.840.113549.1.9.1',
122syntax_registry.reg_at(
123 DirectoryString.oid, [
124 'supportedSASLMechanisms',
128syntax_registry.reg_at(
130 'supportedLDAPVersion ',
134syntax_registry.reg_at(
137 '0.9.2342.19200300.100.1.60',
141syntax_registry.reg_at(
144 '0.9.2342.19200300.100.1.55',
148syntax_registry.reg_at(
151 '0.9.2342.19200300.100.1.7',
155syntax_registry.reg_at(
157 '1.3.6.1.4.1.250.1.57',
161syntax_registry.reg_at(
167syntax_registry.reg_at(
171 '0.9.2342.19200300.100.1.39',
175syntax_registry.reg_at(
177 '2.16.840.1.113730.3.1.34',
181syntax_registry.reg_at(
185 'createtimestamp-oid',
186 'modifytimestamp-oid',
190syntax_registry.reg_at(
200syntax_registry.reg_at(
202 '2.16.840.1.113730.3.1.216',
203 '2.16.840.1.113730.3.140',
207syntax_registry.reg_at(
214syntax_registry.reg_at(
215 DomainComponent.oid, [
216 '0.9.2342.19200300.100.1.25',
225 Attribute userPassword can be textual or arbitrary octet strings.
226 This plugin displays textual passwords
as readable text.
228 oid: str = 'UserPassword-oid'
232 result = DirectoryString.display(self, vidx, links)
233 except UnicodeDecodeError:
234 result = OctetString.display(self, vidx, links)
237syntax_registry.reg_at(
246 Plugin class for attribute namingContexts present in rootDSE
247 https://datatracker.ietf.org/doc/html/rfc4512
249 oid: str = 'NamingContexts-oid'
250 desc: str =
'Naming contexts in rootDSE'
251 ldap_url =
'ldap:///cn=cn=config?olcSuffix?one?(objectClass=olcDatabaseConfig)'
254 config_context =
None
255 config_scope_str =
None
259 config_context = self.
_app.ls.uc_decode(self.
_app.ls.root_dse[
'configContext'][0])[0]
263 _ = self.
_app.ls.root_dse[
'ds-private-naming-contexts']
267 config_context =
'cn=Backends,cn=config'
268 config_filter =
'(&(objectClass=ds-cfg-backend)(ds-cfg-base-dn=%s))' % (self.
av_u)
269 config_scope_str = SEARCH_SCOPE_STR_ONELEVEL
271 config_filter =
'(&(objectClass=olcDatabaseConfig)(olcSuffix=%s))' % (self.
av_u)
272 config_scope_str = SEARCH_SCOPE_STR_ONELEVEL
273 if config_context
and config_scope_str
and config_filter:
274 return self.
_app.anchor(
277 (
'dn', config_context),
278 (
'scope', config_scope_str),
279 (
'filterstr', config_filter),
281 title=
'Search for configuration entry below %s' % (config_context),
286 monitor_context =
None
287 monitor_scope_str =
None
288 monitor_filter =
None
291 _ = self.
_app.ls.root_dse[
'monitorContext']
295 _ = self.
_app.ls.root_dse[
'ds-private-naming-contexts']
299 monitor_context =
'cn=monitor'
302 '(objectClass=ds-backend-monitor-entry)'
303 '(ds-backend-base-dn=%s)'
308 monitor_scope_str = SEARCH_SCOPE_STR_ONELEVEL
310 monitor_context =
'cn=Databases,cn=Monitor'
311 monitor_filter =
'(&(objectClass=monitoredObject)(namingContexts=%s))' % (self.
av_u)
312 monitor_scope_str = SEARCH_SCOPE_STR_ONELEVEL
313 if monitor_context
and monitor_scope_str
and monitor_filter:
314 return self.
_app.anchor(
317 (
'dn', monitor_context),
318 (
'scope', monitor_scope_str),
319 (
'filterstr', monitor_filter),
321 title=
'Search for monitoring entry below %s' % (monitor_context),
326 res = DistinguishedName._additional_links(self)
327 res.append(self.
_app.anchor(
331 (
'scope', SEARCH_SCOPE_STR_ONELEVEL),
332 (
'filterstr',
'(objectClass=*)'),
335 res.append(self.
_app.anchor(
337 ((
'dn', self.
av_u),),
341 res.append(config_link)
344 res.append(monitor_link)
347syntax_registry.reg_at(
348 NamingContexts.oid, [
350 '1.3.6.1.4.1.1466.101.120.5',
357 Plugin class for attribute altServer optionally present in rootDSE
358 https://datatracker.ietf.org/doc/html/rfc4512
360 oid: str = 'AltServer-oid'
361 desc: str =
'LDAP URIs of alternative server(s)'
364 ldap_url_obj = ldap0.ldapurl.LDAPUrl(ldapUrl=ldap_url)
365 ldap_url_obj.who = self.
_app.ls.who
366 ldap_url_obj.scope = ldap0.ldapurl.LDAP_SCOPE_BASE
367 ldap_url_obj.cred =
None
370syntax_registry.reg_at(
373 '1.3.6.1.4.1.1466.101.120.6',
379syntax_registry.reg_syntaxes(__name__)
def _command_ldap_url(self, ldap_url)
def _additional_links(self)
str display(self, vidx, links)