univention.admin package

UDM basic functionality

univention.admin.ucr_overwrite_properties(module, lo)[source]

Overwrite properties in property_descriptions by UCR variables

univention.admin.pattern_replace(pattern, object)[source]

Replaces patterns like <attribute:command,...>[range] with values of the specified UDM attribute.

class univention.admin.property(short_description='', long_description='', syntax=None, module_search=None, multivalue=False, one_only=False, parent=None, options=[], license=[], required=False, may_change=True, identifies=False, unique=False, default=None, prevent_umc_default_popup=False, dontsearch=False, show_in_lists=False, editable=True, configObjectPosition=None, configAttributeName=None, include_in_default_search=False, nonempty_is_default=False, readonly_when_synced=False, size=None, copyable=False)[source]

UDM property.

Parameters:
  • short_description – a short descriptive text - shown below the input filed in UMC by default.
  • long_description – a long descriptive text - shown only on demand in UMC.
  • syntax – a syntax class or instance to validate the value.
  • module_search – UNUSED?
  • multivalue – allow only a single value (False) or multiple values (True) .
  • one_only – UNUSED?
  • parent – UNUSED?
  • options – List of options, which enable this property.
  • license – List of license strings, which are required to use this property.
  • requiredTrue for a required property, False for an optional property.
  • may_changeTrue if the property can be changed after the object has been created, False when the property can only be specified when the object is created.
  • identifiesTrue if the property is part of the set of properties, which are required to uniquely identify the object. The properties are used by default to build |RDN| for a new object.
  • uniqueTrue if the property must be unique for all object instances.
  • default – The default value for the property when a new object is created.
  • prevent_umc_default_popupTrue to prevent a pop-up dialog in UMC when the default value is not set.
  • dontsearchTrue to prevent searches using the property.
  • show_in_lists – UNUSED?
  • editableFalse prevents the property from being modified by the user; it still can be modified by code.
  • configObjectPosition – UNUSED?
  • configAttributeName – UNUSED?
  • include_in_default_search – The default search searches this property when set to True.
  • nonempty_is_defaultTrue selects the first non-empty value as the default. False always selects the first default value, even if it is empty.
  • readonly_when_syncedTrue only shows the value as read-only when synchronized from some upstream database.
  • size – The UMC widget size; one of univention.admin.syntax.SIZES.
  • copyable – With True the property is copied when the object is cloned; with False the new object will use the default value.
UMLAUTS = {'\xc3\x8b': 'E', '\xc3\x8a': 'E', '\xc3\x89': 'E', '\xc3\x88': 'E', '\xc3\x8f': 'I', '\xc3\x8e': 'I', '\xc3\x8d': 'I', '\xc3\x8c': 'I', '\xc3\x83': 'A', '\xc3\x82': 'A', '\xc3\x81': 'A', '\xc3\x80': 'A', '\xc3\x87': 'C', '\xc3\x86': 'AE', '\xc3\x85': 'A', '\xc3\x84': 'Ae', '\xc3\x9b': 'U', '\xc3\x9a': 'U', '\xc3\x99': 'U', '\xc3\x98': 'O', '\xc3\x9f': 'ss', '\xc3\x9e': 'P', '\xc3\x9d': 'Y', '\xc3\x9c': 'Ue', '\xc3\x93': 'O', '\xc3\x92': 'O', '\xc3\x91': 'N', '\xc3\x90': 'D', '\xc3\x96': 'Oe', '\xc3\x95': 'O', '\xc3\x94': 'O', '\xc3\xab': 'e', '\xc3\xaa': 'e', '\xc3\xa9': 'e', '\xc3\xa8': 'e', '\xc3\xaf': 'i', '\xc3\xae': 'i', '\xc3\xad': 'i', '\xc3\xac': 'i', '\xc3\xa3': 'a', '\xc3\xa2': 'a', '\xc3\xa1': 'a', '\xc3\xa0': 'a', '\xc3\xa7': 'c', '\xc3\xa6': 'ae', '\xc3\xa5': 'a', '\xc3\xa4': 'ae', '\xc3\xbb': 'u', '\xc3\xba': 'u', '\xc3\xb9': 'u', '\xc3\xb8': 'o', '\xc3\xbf': 'y', '\xc3\xbe': 'p', '\xc3\xbd': 'y', '\xc3\xbc': 'ue', '\xc3\xb3': 'o', '\xc3\xb2': 'o', '\xc3\xb1': 'n', '\xc3\xb0': 'o', '\xc3\xb6': 'oe', '\xc3\xb5': 'o', '\xc3\xb4': 'o'}
new()[source]
_replace(res, object)[source]
default(object)[source]
safe_default(object)[source]
check_default(object)[source]
matches(options)[source]
class univention.admin.option(short_description='', long_description='', default=0, editable=False, disabled=False, objectClasses=None, is_app_option=False)[source]

Bases: object

UDM option to make properties conditional.

matches(objectClasses)[source]
univention.admin.ucr_overwrite_layout(module, ucr_property, tab)[source]

Overwrite the advanced setting in the layout

univention.admin.ucr_overwrite_module_layout(module)[source]

Overwrite the tab layout through UCR variables.

class univention.admin.extended_attribute(name, objClass, ldapMapping, deleteObjClass=False, syntax='string', hook=None)[source]

Bases: object

Extended attributes extend UDM and UMC with additional properties defined in LDAP.

class univention.admin.tab(short_description='', long_description='', fields=[], advanced=False)[source]

UDM tab to group related properties together in UMC.

is_app_tab = False
set_fields(fields)[source]
get_fields()[source]
class univention.admin.field(property='', type='', first_only=0, short_description='', long_description='', hide_in_resultmode=0, hide_in_normalmode=0, colspan=None, width=None)[source]
class univention.admin.policiesGroup(id, short_description=None, long_description='', members=[])[source]

Subpackages

Submodules

univention.admin.allocators module

UDM allocators to allocate and lock resources for LDAP object creation.

univention.admin.allocators.requestUserSid(lo, position, uid_s)[source]
univention.admin.allocators.requestGroupSid(lo, position, gid_s, generateDomainLocalSid=False)[source]
univention.admin.allocators.acquireRange(lo, position, atype, attr, ranges, scope='base')[source]
univention.admin.allocators.acquireUnique(lo, position, type, value, attr, scope='base')[source]
univention.admin.allocators.request(lo, position, type, value=None)[source]
univention.admin.allocators.confirm(lo, position, type, value, updateLastUsedValue=True)[source]
univention.admin.allocators.release(lo, position, type, value)[source]

univention.admin.config module

UDM configuration basics

Deprecated since version UCS: 4.4

class univention.admin.config.config(host='')[source]

UDM configuration object.

Deprecated since version UCS: 4.4 use None instead

has_key(key)[source]
items()[source]
univention.admin.config.getDefaultContainer(lo, module)[source]

Return any random default container for a UDM module.

Deprecated since version UCS: 4.4

Parameters:
Returns:

A distinguished name.

Return type:

str

univention.admin.config.getDefaultValue(lo, name, position=None)[source]

Return the default value for a UDM module.

Parameters:
Returns:

The default value.

Return type:

str

univention.admin.cron module

UDM functions for creating crontab entries.

univention.admin.cron.month_map(month)[source]

Map English month name to 1-based numeric month-in-year.

>>> month_map('*')
'*'
>>> month_map('January')
1
univention.admin.cron.weekday_map(weekday)[source]

Map English day-of-week name to numeric value 1-7.

>>> weekday_map('*')
'*'
>>> weekday_map('Monday')
1
univention.admin.cron.month_reverse_map(month)[source]

Map 1-based numeric month-in-year to English month name.

See also

month_map()

>>> month_reverse_map('*')
'*'
>>> month_reverse_map(1)
'January'
univention.admin.cron.weekday_reverse_map(weekday)[source]

Map numeric day-of-week value 1-7 to English name.

See also

weekday_map()

>>> weekday_reverse_map('*')
'*'
>>> weekday_reverse_map(1)
'Monday'
univention.admin.cron.cron_create(cronlist)[source]

Create a crontab time string.

Parameters:cronlist – A mapping of strings to lists.

See also

cron_split()

>>> cron_create(dict(minute=[], hour=[], day=[], month=[], weekday=[]))
'* * * * * '
>>> cron_create(dict(minute=[0], hour=[1], day=[2], month=['March'], weekday=['Thursday']))
'0 1 2 3 4 '
>>> cron_create(dict(minute=['all'], hour=['all'], day=['all'], month=['all'], weekday=['all']))
'0,5,10,15,20,25,30,35,40,45,50,55 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 1,2,3,4,5,6,7,8,9,10,11,12 1,2,3,4,5,6,7 '
univention.admin.cron.cron_split(cronlist)[source]

Split a crontab time string into its parts.

Parameters:cronlist – a crontab time string ‘minute hour day month weekday’.

See also

cron_create()

>>> cron_split('* * * * * ') == {'minute': ['*'], 'hour': ['*'], 'day': ['*'], 'month': ['*'], 'weekday': ['*']}
True
>>> cron_split('* * * 1 *')['month']
['January']
>>> cron_split('* * * * 1')['weekday']
['Monday']

univention.admin.filter module

UDM functions to parse, modify and create LDAP-style search filters

class univention.admin.filter.conjunction(type, expressions)[source]

Bases: object

LDAP filter conjunction (&) or disjunction (|).

Create LDAP filter conjunction or disjunction.

>>> c = conjunction('&', '(objectClass=*)')
>>> c = conjunction('|', '(objectClass=*)')
_type_ = 'conjunction'
append_unmapped_filter_string(filter_s, rewrite_function, mapping)[source]
class univention.admin.filter.expression(variable='', value='', operator='=', escape=False)[source]

Bases: object

LDAP filter expression.

Create LDAP filter expression.

>>> e = expression('objectClass', '*')
>>> e = expression('objectClass', '*', '!=')
>>> e = expression('uidNumber', '10', '<') # < <= > >=
_type_ = 'expression'
escape(string, args)[source]
transform_to_conjunction(con)[source]
univention.admin.filter.parse(filter_s, begin=0, end=-1)[source]

Parse LDAP filter string.

>>> filter_s='(|(&(!(zone=univention.de))(soa=test))(nameserver=bar))'
>>> parse(filter_s)
conjunction('|', [conjunction('&', [conjunction('!', [expression('zone', 'univention.de', '=')]), expression('soa', 'test', '=')]), expression('nameserver', 'bar', '=')])
>>> parse('(!(key>=29))')
conjunction('!', [expression('key', '29', '>=')])
>>> parse('(&(key=va\\28!\\29ue))')
conjunction('&', [expression('key', 'va\\28!\\29ue', '=')])

Bug: This will break if parentheses are not quoted correctly: >> parse(‘(&(key=va)!(ue))’) conjunction(‘&’, [expression(‘key’, ‘va)!(ue’, ‘=’)])

univention.admin.filter.walk(filter, expression_walk_function=None, conjunction_walk_function=None, arg=None)[source]

Walk LDAP filter expression tree.

>>> filter='(|(&(!(zone=univention.de))(soa=test))(nameserver=bar))'
>>> tree = parse(filter)
>>> def trace(e, a): print a, e
>>> walk(tree, trace, None, 'e')
e (zone=univention.de)
e (soa=test)
e (nameserver=bar)
>>> walk(tree, None, trace, 'c')
c (!(zone=univention.de))
c (&(!(zone=univention.de))(soa=test))
c (|(&(!(zone=univention.de))(soa=test))(nameserver=bar))
univention.admin.filter.replace_fqdn_filter(filter_s)[source]

Replaces a filter expression for the read-only attribute fqdn. If no such expression can be found the unmodified filter is returned.

>>> replace_fqdn_filter('fqdn=host.domain.tld')
'(&(cn=host)(associatedDomain=domain.tld))'
>>> replace_fqdn_filter('(fqdn=host.domain.tld)')
'(&(cn=host)(associatedDomain=domain.tld))'
>>> replace_fqdn_filter('fqdn=domain')
'(|(cn=domain)(associatedDomain=domain))'
>>> replace_fqdn_filter('(|(fqdn=host.domain.tld)(fqdn=other.domain.tld2))')
'(|(&(cn=host)(associatedDomain=domain.tld))(&(cn=other)(associatedDomain=domain.tld2)))'
univention.admin.filter._replace_fqdn_filter(match)[source]

univention.admin.hook module

UDM hook definitions for modifying LDAP calls when objects are created, modifier or deleted.

univention.admin.hook.import_hook_files()[source]

Load all additional hook files from .../univention/admin/hooks.d/*.py

class univention.admin.hook.simpleHook[source]

Bases: object

Base class for a UDM hook performing logging.

type = 'simpleHook'
hook_open(obj)[source]

This method is called by the default open handler just before the current state of all properties is saved.

Parameters:obj – The UDM object instance.
hook_ldap_pre_create(obj)[source]

This method is called before an UDM object is created. It is called after the module validated all properties but before the add-list is created.

Parameters:obj – The UDM object instance.
hook_ldap_addlist(obj, al=[])[source]

This method is called before an UDM object is created.

Notice that hook_ldap_modlist() will also be called next.

Parameters:
  • obj – The UDM object instance.
  • al – A list of two-tuples (ldap-attribute-name, list-of-values) which will be used to create the LDAP object.
Returns:

The (modified) add-list.

hook_ldap_post_create(obj)[source]

This method is called after the object was created in LDAP.

Parameters:obj – The UDM object instance.
hook_ldap_pre_modify(obj)[source]

This method is called before an UDM object is modified. It is called after the module validated all properties but before the modification-list is created.

Parameters:obj – The UDM object instance.
hook_ldap_modlist(obj, ml=[])[source]

This method is called before an UDM object is created or modified.

Parameters:
  • obj – The UDM object instance.
  • ml – A list of tuples, which are either two-tuples (ldap-attribute-name, list-of-new-values) or three-tuples (ldap-attribute-name, list-of-old-values, list-of-new-values). It will be used to create or modify the LDAP object.
Returns:

The (modified) modification-list.

hook_ldap_post_modify(obj)[source]

This method is called after the object was modified in LDAP.

Parameters:obj – The UDM object instance.
hook_ldap_pre_remove(obj)[source]

This method is called before an UDM object is removed.

Parameters:obj – The UDM object instance.
hook_ldap_post_remove(obj)[source]

This method is called after the object was removed from LDAP.

Parameters:obj – The UDM object instance.
class univention.admin.hook.AttributeHook[source]

Bases: univention.admin.hook.simpleHook

Convenience Hook that essentially implements a mapping between UDM and LDAP for your extended attributes. Derive from this class, set attribute_name to the name of the UDM attribute and implement map_attribute_value_to_udm() and map_attribute_value_to_ldap().

Warning

Only derive from this class when you are sure every system in your domain has the update installed that introduced this hook. (Nov 2018; UCS 4.3-2) Otherwise you will get errors when you are distributing your new hook via ucs_registerLDAPExtension –udm_hook

udm_attribute_name = None
ldap_attribute_name = None
hook_open(obj)[source]

Open UDM object by loading value from LDAP.

Parameters:obj – The UDM object instance.
hook_ldap_addlist(obj, al)[source]

Extend LDAP add list.

Parameters:
  • obj – The UDM object instance.
  • al – The add list to extend.
Returns:

The extended add list.

hook_ldap_modlist(obj, ml)[source]

Extend LDAP modification list.

Parameters:
  • obj – The UDM object instance.
  • ml – The modification list to extend.
Returns:

The extended modification list.

map_attribute_value_to_ldap(value)[source]

Return value as it shall be saved in LDAP.

Parameters:value – The UDM value.
Returns:The LDAP value.
map_attribute_value_to_udm(value)[source]

Return value as it shall be used in UDM objects.

The mapped value needs to be syntax compliant.

Parameters:value – The LDAP value.
Returns:The UDM value.

univention.admin.ipaddress module

UDM functions for checking/manipulating IP addresses and ranges.

univention.admin.ipaddress.dotted2int(ds)[source]

Convert dotted-quad IPv4 address to integer.

Parameters:ds – An IPv4 address in dotted-quad notation.
Returns:The numeric IPv4 address.
>>> dotted2int('0.0.0.0')
0
univention.admin.ipaddress.int2dotted(i)[source]

Convert integer address to dotted-quad IPv4 address.

Parameters:i – A numeric IPv4 address.
Returns:An IPv4 address in dotted-quad notation.
>>> int2dotted(0)
'0.0.0.0'
univention.admin.ipaddress.ip_plus_one(ip)[source]

Return logical next IPv4 address.

Parameters:ip – An IPv4 address in dotted-quad notation.
Returns:An IPv4 address in dotted-quad notation.
>>> ip_plus_one('0.0.0.0')
'0.0.0.1'
>>> ip_plus_one('0.0.0.254')
'0.0.1.0'
>>> ip_plus_one('0.0.0.255')
'0.0.1.1'
univention.admin.ipaddress.ip_is_in_network(subnet, subnetmask, ip)[source]

Check if the given IPv4 address is inside the given subnet.

Parameters:
  • subnet – A IPv4 network address.
  • subnetmask – The IPv4 network prefix length.
  • ip – The IPv4 address to check.
Returns:

1 if the IP address is inside the subnet, 0 otherwise.

>>> ip_is_in_network('192.0.2.0', 24, '192.0.2.42')
1
univention.admin.ipaddress.ip_is_network_address(subnet, subnetmask, ip)[source]

Check if the given IPv4 address is the network address (host bits are all zero).

Parameters:
  • subnet – A IPv4 network address.
  • subnetmask – The IPv4 network prefix length.
  • ip – The IPv4 address to check.
Returns:

1 if the IP address is the network address, 0 otherwise.

>>> ip_is_network_address('192.0.2.0', 24, '192.0.2.0')
1
univention.admin.ipaddress.ip_is_broadcast_address(subnet, subnetmask, ip)[source]

Check if the given IPv4 address is the network broadcast address (host bits are all one).

Parameters:
  • subnet – The IPv4 network address.
  • subnetmask – The IPv4 network prefix length.
  • ip – The IPv4 address to check.
Returns:

1 if the IP address is the network broadcast address, 0 otherwise.

>>> ip_is_broadcast_address('192.0.2.0', 24, '192.0.2.255')
1
univention.admin.ipaddress.ip_compare(ip1, ip2)[source]

Compare two IPv4 addresses in dotted-quad format.

Parameters:
  • ip1 – The first IPv4 address.
  • ip2 – The second IPv4 address.
Returns:

1 if the first address is before the second, -1 if the first is after the second, or 0 when they are equal.

>>> ip_compare('192.0.2.1', '192.0.2.2')
1
>>> ip_compare('192.0.2.2', '192.0.2.2')
0
>>> ip_compare('192.0.2.3', '192.0.2.2')
-1
univention.admin.ipaddress.is_ip_in_range(ip, range)[source]

Check if a IPv4 address is inside the given range.

Parameters:
  • ip – The IPv4 address to check.
  • range – The inclusive range as a 2-tuple (low, hight) of IPv4 addresses.
Returns:

1 if the address is inside the range, 0 otherwise.

>>> is_ip_in_range('192.0.2.10', ('192.0.2.0', '192.0.2.255'))
1
univention.admin.ipaddress.is_range_overlapping(range1, range2)[source]

Check if two IPv4 address overlap.

Parameters:
  • range1 – The first range as a 2-tuple (low, hight) of IPv4 addresses.
  • range2 – The second range as a 2-tuple (low, hight) of IPv4 addresses.
Returns:

1 if the ranges overlap, 0 otherwise.

>>> is_range_overlapping(('192.0.2.0', '192.0.2.127'), ('192.0.2.128', '192.0.2.255'))
0
>>> is_range_overlapping(('192.0.2.0', '192.0.2.127'), ('192.0.2.64', '192.0.2.191'))
1
>>> is_range_overlapping(('192.0.2.0', '192.0.2.255'), ('192.0.2.64', '192.0.2.191'))
1
>>> is_range_overlapping(('192.0.2.128', '192.0.2.255'), ('192.0.2.64', '192.0.2.191'))
1

univention.admin.layout module

UDM classes to define layouts

class univention.admin.layout.ILayoutElement(label, description='', layout=[])[source]

Bases: dict

Describes the layout information for a tab or a groupbox.

label
description
layout
replace(old, new, recursive=True)[source]
remove(field, recursive=True)[source]
exists(field)[source]
insert(position, field)[source]
class univention.admin.layout.Tab(label, description='', advanced=False, layout=[], is_app_tab=False)[source]

Bases: univention.admin.layout.ILayoutElement

is_app_tab
advanced
class univention.admin.layout.Group(label, description='', layout=[])[source]

Bases: univention.admin.layout.ILayoutElement

univention.admin.license module

UDM wrapper around univention.license that translates error codes to exceptions

univention.admin.license.ldap_filter_not_objectflag(flag_string_list)[source]
class univention.admin.license.License[source]

Bases: object

SYSACCOUNTS = 5
_load_license_via_c_module(module)[source]
_load_license_via_python(module, lo)[source]
select(module, lo=None)[source]
isValidFor(module)[source]
modifyOptions(mod)[source]
checkModules()[source]
compare(val1, val2)[source]
set_values(lo, module)[source]
init_select(lo, module)[source]
checkObjectCounts(lic, real)[source]
ACCOUNT = 0
CLIENT = 1
CORPORATECLIENTS = 3
DESKTOP = 2
GROUPWARE = 3
MANAGEDCLIENTS = 2
SERVERS = 1
USERS = 0
VIRTUALDESKTOPCLIENTS = 5
VIRTUALDESKTOPUSERS = 4
_License__cmp_eq(val1, val2)
_License__cmp_gt(val1, val2)
_License__countObject(obj, lo)
_License__countSysAccounts(lo)
_License__getValue(key, default, name='', errormsg='')
_License__raiseException()
_License__readLicense()

univention.admin.license_data module

UDM licence data.

class univention.admin.license_data.Attributes(required_license=None, options={})[source]
options(license_type)[source]
valid(license_type)[source]
univention.admin.license_data.moreGroupware(license)[source]

univention.admin.localization module

UDM localization.

usage:

translation = univention.admin.localization.translation()
_ = translation.translate
univention.admin.localization.translation

alias of Translation

univention.admin.locking module

LDAP locking methods for UDM.

univention.admin.locking.lockDn(lo, position, type, value, scope)[source]

Build DN of lock object.

Parameters:
  • loLDAP connection.
  • positionUDM position specifying the LDAP base container.
  • type – A string describing the type of object, e.g. user.
  • value – A unique value for the object, e.g. uid.
  • scope – The scope for the lock, e.g. domain.
Returns:

A LDAP DN.

univention.admin.locking.lock(lo, position, type, value, scope='domain', timeout=300)[source]

Lock an UDM object.

Parameters:
  • loLDAP connection.
  • positionUDM position specifying the LDAP base container.
  • type – A string describing the type of object, e.g. user.
  • value – A unique value for the object, e.g. uid.
  • scope – The scope for the lock, e.g. domain.
  • timeout – Number of seconds for the lock being valid.
Raises:
Returns:

Number of seconds since the UNIX epoch until which the lock is acquired.

univention.admin.locking.relock(lo, position, type, value, scope='domain', timeout=300)[source]

Extend a lock of an UDM object.

Parameters:
  • loLDAP connection.
  • positionUDM position specifying the LDAP base container.
  • type – A string describing the type of object, e.g. user.
  • value – A unique value for the object, e.g. uid.
  • scope – The scope for the lock, e.g. domain.
  • timeout – Number of seconds for the lock being valid.
Raises:
Returns:

Number of seconds since the UNIX epoch until which the lock is acquired.

univention.admin.locking.unlock(lo, position, type, value, scope='domain')[source]

Unlock an UDM object.

Parameters:
  • loLDAP connection.
  • positionUDM position specifying the LDAP base container.
  • type – A string describing the type of object, e.g. user.
  • value – A unique value for the object, e.g. uid.
  • scope – The scope for the lock, e.g. domain.
univention.admin.locking.getLock(lo, position, type, value, scope='domain')[source]

Check if an UDM object is locked.

Parameters:
  • loLDAP connection.
  • positionUDM position specifying the LDAP base container.
  • type – A string describing the type of object, e.g. user.
  • value – A unique value for the object, e.g. uid.
  • scope – The scope for the lock, e.g. domain.
Returns:

Number of seconds since the UNIX epoch until which the lock is acquired or 0.

univention.admin.mapping module

Functions to map between UDM properties and LDAP attributes.

univention.admin.mapping.DaysToSeconds(days)[source]

Convert number of days to seconds.

Parameters:day – the number of days.
Returns:the number of seconds.
>>> DaysToSeconds('1')
'86400'
univention.admin.mapping.SecondsToDays(seconds)[source]

Convert number of seconds to number of complete days.

Parameters:seconds – 1-tuple with the number of seconds.
Returns:the number of complete days.
>>> SecondsToDays(('86401',))
'1'
univention.admin.mapping.StringToLower(string)[source]

Convert string to lower-case.

Parameters:string – a string.
Returns:the lower-cased string.
>>> StringToLower("Aa")
'aa'
univention.admin.mapping.ListUniq(list)[source]

Return list of unique items.

Parameters:list – A list of elements.
Returns:a list with duplicate elements removed.
>>> ListUniq(['1', '1', '2'])
['1', '2']
univention.admin.mapping.ListToString(list)[source]

Return first element from list. This is right mapping for single-valued properties, as LDAP always returns lists of values.

Parameters:list – A list of elements.
Returns:the first element or the empty string.
>>> ListToString([])
''
>>> ListToString(['value'])
'value'
univention.admin.mapping.ListToIntToString(list_)[source]

Return first element from list if it is an integer.

Parameters:list – A list of elements.
Returns:the first element or the empty string.
>>> ListToIntToString([])
''
>>> ListToIntToString(['1'])
'1'
univention.admin.mapping.ListToLowerString(list)[source]

Return first element from list lower-cased.

Parameters:list – A list of elements.
Returns:the first element lower-cased or the empty string.
>>> ListToLowerString([])
''
>>> ListToLowerString(['Value'])
'value'
univention.admin.mapping.ListToLowerList(list)[source]

Return the list with all elements converted to lower-case.

Parameters:list – A list of elements.
Returns:a list of the elemets converted to lower case.
>>> ListToLowerList(['A', 'a'])
['a', 'a']
univention.admin.mapping.ListToLowerListUniq(list)[source]

Return the list with all elements converted to lower-case and duplicates removed.

Parameters:list – A list of elements.
Returns:a list of the elemets converted to lower case with duplicates removed.
>>> ListToLowerListUniq(['A', 'a'])
['a']
univention.admin.mapping.nothing(a)[source]

‘Do nothing’ mapping returning None.

univention.admin.mapping.IgnoreNone(list)[source]

Return the value if it is not the sting None.

Parameters:list – Some element(s).
Returns:The element(s) if it is not None.
>>> IgnoreNone('1')
'1'
>>> IgnoreNone('None')
univention.admin.mapping._stringToInt(value)[source]

Try to convert string into integer.

Parameters:value – a srting.
Returns:the integer value or 0.
>>> _stringToInt('1')
1
>>> _stringToInt('ucs')
0
univention.admin.mapping.unmapUNIX_TimeInterval(value)[source]

Map number of seconds to a human understandable time interval.

Parameters:value – number of seconds
Returns:a 2-tuple (value, unit)
>>> unmapUNIX_TimeInterval(['0'])
[u'0', 'days']
>>> unmapUNIX_TimeInterval(('1',))
[u'1', 'seconds']
>>> unmapUNIX_TimeInterval('60')
[u'1', 'minutes']
>>> unmapUNIX_TimeInterval('3600')
[u'1', 'hours']
>>> unmapUNIX_TimeInterval('86400')
[u'1', 'days']
univention.admin.mapping.mapUNIX_TimeInterval(value)[source]

Unmap a human understandable time interval back to number of seconds.

Parameters:value – a 2-tuple (value, unit)
Returns:the number of seconds.
>>> mapUNIX_TimeInterval(0)
u'0'
>>> mapUNIX_TimeInterval([1, 'days'])
u'86400'
>>> mapUNIX_TimeInterval((1, 'hours'))
u'3600'
>>> mapUNIX_TimeInterval((1, 'minutes'))
u'60'
univention.admin.mapping.unmapBase64(value)[source]

Convert binary data (as found in LDAP) to Base64 encoded UDM property value(s).

Parameters:value – some binary data.
Returns:the base64 encoded data or the empty string on errors.
>>> unmapBase64(['a'])
'YQ=='
>>> unmapBase64(['a', 'b'])
['YQ==', 'Yg==']
>>> unmapBase64([None])
''
univention.admin.mapping.mapBase64(value)[source]

Convert Base64 encoded UDM property values to binary data (for storage in LDAP).

Parameters:value – some base64 encoded value.
Returns:the decoded binary data.
>>> mapBase64('*')
'*'
>>> mapBase64(['YQ=='])
['a']
>>> mapBase64('YQ==')
'a'
univention.admin.mapping.BooleanListToString(list)[source]

Convert LDAP boolean to UDM.

Parameters:list – list of LDAP attribute values.
Returns:the empty string for False or otherwise the first element.
>>> BooleanListToString(['0'])
''
>>> BooleanListToString(['1'])
'1'
univention.admin.mapping.BooleanUnMap(value)[source]

Convert LDAP boolean to UDM.

Parameters:list – One LDAP attribute values.
Returns:the empty string for False or otherwise the first element.
>>> BooleanUnMap('0')
''
>>> BooleanUnMap('1')
'1'
class univention.admin.mapping.dontMap[source]

Bases: object

‘Do nothing’ mapping.

class univention.admin.mapping.mapping[source]

Bases: object

Map LDAP atribute names and values to UDM property names and values and back.

register(map_name, unmap_name, map_value=None, unmap_value=None)[source]

Register a new mapping.

Parameters:
  • map_nameUDM property name.
  • unmap_nameLDAP attribute name.
  • map_value – function to map UDM property values to LDAP attribute values.
  • unmap_value – function to map LDAP attribute values to UDM property values.
unregister(map_name, pop_unmap=True)[source]

Remove a mapping UDM to LDAP (and also the reverse).

Parameters:
  • map_nameUDM property name.
  • pop_unmapFalse prevents the removal of the mapping from LDAP to UDM, which the default True also does.
registerUnmapping(unmap_name, unmap_value)[source]

Register a new unmapping from LDAP to UDM.

Parameters:
  • unmap_nameLDAP attribute name.
  • unmap_value – function to map LDAP attribute values to UDM property values.
mapName(map_name)[source]

Map UDM property name to LDAP attribute name.

>>> map = mapping()
>>> map.mapName('unknown')
''
>>> map.register('udm', 'ldap')
>>> map.mapName('udm')
'ldap'
unmapName(unmap_name)[source]

Map LDAP attribute name to UDM property name.

>>> map = mapping()
>>> map.unmapName('unknown')
''
>>> map.register('udm', 'ldap')
>>> map.unmapName('ldap')
'udm'
mapValue(map_name, value)[source]

Map UDM property value to LDAP attribute value.

>>> map = mapping()
>>> map.mapValue('unknown', None) 
Traceback (most recent call last):
...
KeyError:
>>> map.register('udm', 'ldap')
>>> map.mapValue('udm', 'value')
'value'
>>> map.register('udm', 'ldap', lambda udm: udm.lower(), None)
>>> map.mapValue('udm', None)
''
>>> map.mapValue('udm', [0])
''
>>> map.mapValue('udm', 'UDM')
'udm'
>>> map.register('sambaLogonHours', 'ldap')
>>> map.mapValue('sambaLogonHours', [0])
[0]
unmapValue(unmap_name, value)[source]

Map LDAP attribute value to UDM property value.

>>> map = mapping()
>>> map.unmapValue('unknown', None) 
Traceback (most recent call last):
...
KeyError:
>>> map.register('udm', 'ldap')
>>> map.unmapValue('ldap', 'value')
'value'
>>> map.register('udm', 'ldap', None, lambda ldap: ldap.upper())
>>> map.unmapValue('ldap', 'ldap')
'LDAP'
unmapValues(oldattr)[source]

Unmaps LDAP attribute values to UDM property values.

shouldMap(map_name)[source]
shouldUnmap(unmap_name)[source]
univention.admin.mapping.mapCmp(mapping, key, old, new)[source]

Compare old and new for equality (maping back to LDAP value if possible).

>>> map = mapping()
>>> mapCmp(map, 'unknown', 'old', 'new')
False
>>> mapCmp(map, 'unknown', 'same', 'same')
True
>>> map.register('udm', 'ldap')
>>> mapCmp(map, 'udm', 'old', 'new')
False
>>> mapCmp(map, 'udm', 'same', 'same')
True
>>> map.register('udm', 'ldap', lambda udm: udm.lower(), None)
>>> mapCmp(map, 'udm', 'case', 'CASE')
True
univention.admin.mapping.mapDict(mapping, old)[source]

Convert dictionary mapping LDAP_attriute_name to LDAP_value to a (partial) dictionary mapping UDM_property_name to UDM_value.

>>> map = mapping()
>>> map.register('udm', 'ldap', None, lambda ldap: ldap.upper())
>>> mapDict(map, {'ldap': 'ldap', 'unknown': None})
{'udm': 'LDAP'}
univention.admin.mapping.mapList(mapping, old)[source]

Convert list of LDAP attribute names to list of UDM propert names.

>>> map = mapping()
>>> mapList(map, None)
[]
>>> mapList(map, ['unknown'])
['']
>>> map.register('udm', 'ldap', None, None)
>>> mapList(map, ['ldap', 'unknown'])
['udm', '']
univention.admin.mapping.mapDiff(mapping, diff)[source]

Convert mod-list of UDM property names/values to mod-list of LDAP attribute names/values.

>>> map = mapping()
>>> mapDiff(map, None)
[]
>>> mapDiff(map, [('unknown', None, None)])
[]
>>> map.register('udm', 'ldap', lambda udm: udm.lower(), None)
>>> mapDiff(map, [('udm', 'OLD', 'NEW')])
[('ldap', 'old', 'new')]
>>> mapDiff(map, [('udm', 'case', 'CASE')])
[]
univention.admin.mapping.mapDiffAl(mapping, diff)[source]

Convert mod-list of UDM property names/values to add-list of LDAP attribute names/values.

>>> map = mapping()
>>> mapDiffAl(map, None)
[]
>>> mapDiffAl(map, [('unknown', None, None)])
[]
>>> map.register('udm', 'ldap', lambda udm: udm.lower(), None)
>>> mapDiffAl(map, [('udm', 'OLD', 'NEW'), ('unknown', None, None)])
[('ldap', 'new')]
univention.admin.mapping.mapRewrite(filter, mapping)[source]

Re-write UDM property name/value in UDM filter expression to LDAP attribute name/value.

>>> from argparse import Namespace
>>> map = mapping()
>>> f = Namespace(variable='unknown', value=None); mapRewrite(f, map); (f.variable, f.value)
('unknown', None)
>>> map.register('udm', 'ldap', lambda udm: udm.lower(), None)
>>> f = Namespace(variable='udm', value='UDM'); mapRewrite(f, map); (f.variable, f.value)
('ldap', 'udm')

univention.admin.modules module

UDM access to handler modules.

univention.admin.modules.modules = {'policies/pwhistory': <module 'univention.admin.handlers.policies.pwhistory' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/pwhistory.py'>, 'settings/xconfig_choices': <module 'univention.admin.handlers.settings.xconfig_choices' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/xconfig_choices.py'>, 'settings/directory': <module 'univention.admin.handlers.settings.directory' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/directory.py'>, 'policies/share_userquota': <module 'univention.admin.handlers.policies.share_userquota' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/share_userquota.py'>, 'nagios/nagios': <module 'univention.admin.handlers.nagios.nagios' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/nagios/nagios.py'>, 'settings/prohibited_username': <module 'univention.admin.handlers.settings.prohibited_username' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/prohibited_username.py'>, 'users/user': <module 'univention.admin.handlers.users.user' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/users/user.py'>, 'computers/linux': <module 'univention.admin.handlers.computers.linux' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/linux.py'>, 'settings/udm_syntax': <module 'univention.admin.handlers.settings.udm_syntax' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/udm_syntax.py'>, 'settings/ldapacl': <module 'univention.admin.handlers.settings.ldapacl' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/ldapacl.py'>, 'computers/windows': <module 'univention.admin.handlers.computers.windows' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/windows.py'>, 'settings/license': <module 'univention.admin.handlers.settings.license' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/license.py'>, 'policies/policy': <module 'univention.admin.handlers.policies.policy' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/policy.py'>, 'settings/lock': <module 'univention.admin.handlers.settings.lock' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/lock.py'>, 'policies/dhcp_leasetime': <module 'univention.admin.handlers.policies.dhcp_leasetime' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/dhcp_leasetime.py'>, 'dhcp/sharedsubnet': <module 'univention.admin.handlers.dhcp.sharedsubnet' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dhcp/sharedsubnet.py'>, 'policies/masterpackages': <module 'univention.admin.handlers.policies.masterpackages' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/masterpackages.py'>, 'policies/release': <module 'univention.admin.handlers.policies.release' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/release.py'>, 'mail/folder': <module 'univention.admin.handlers.mail.folder' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/mail/folder.py'>, 'computers/ubuntu': <module 'univention.admin.handlers.computers.ubuntu' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/ubuntu.py'>, 'policies/autostart': <module 'univention.admin.handlers.policies.autostart' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/autostart.py'>, 'test/ip_phone': <module 'univention.admin.handlers.test.ip_phone' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/test/ip_phone.py'>, 'container/dc': <module 'univention.admin.handlers.container.dc' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/container/dc.py'>, 'users/self': <module 'univention.admin.handlers.users.self' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/users/self.py'>, 'settings/settings': <module 'univention.admin.handlers.settings.settings' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/settings.py'>, 'uvmm/cloudconnection': <module 'univention.admin.handlers.uvmm.cloudconnection' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/uvmm/cloudconnection.py'>, 'computers/trustaccount': <module 'univention.admin.handlers.computers.trustaccount' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/trustaccount.py'>, 'dns/dns': <module 'univention.admin.handlers.dns.dns' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dns/dns.py'>, 'settings/portal_all': <module 'univention.admin.handlers.settings.portal_all' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/portal_all.py'>, 'settings/sambadomain': <module 'univention.admin.handlers.settings.sambadomain' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/sambadomain.py'>, 'computers/windows_domaincontroller': <module 'univention.admin.handlers.computers.windows_domaincontroller' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/windows_domaincontroller.py'>, 'settings/data': <module 'univention.admin.handlers.settings.data' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/data.py'>, 'policies/admin_container': <module 'univention.admin.handlers.policies.admin_container' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/admin_container.py'>, 'policies/umc': <module 'univention.admin.handlers.policies.umc' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/umc.py'>, 'settings/printeruri': <module 'univention.admin.handlers.settings.printeruri' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/printeruri.py'>, 'container/ou': <module 'univention.admin.handlers.container.ou' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/container/ou.py'>, 'policies/dhcp_statements': <module 'univention.admin.handlers.policies.dhcp_statements' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/dhcp_statements.py'>, 'dhcp/pool': <module 'univention.admin.handlers.dhcp.pool' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dhcp/pool.py'>, 'policies/dhcp_dns': <module 'univention.admin.handlers.policies.dhcp_dns' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/dhcp_dns.py'>, 'policies/repositoryserver': <module 'univention.admin.handlers.policies.repositoryserver' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/repositoryserver.py'>, 'saml/serviceprovider': <module 'univention.admin.handlers.saml.serviceprovider' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/saml/serviceprovider.py'>, 'uvmm/profile': <module 'univention.admin.handlers.uvmm.profile' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/uvmm/profile.py'>, 'mail/mail': <module 'univention.admin.handlers.mail.mail' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/mail/mail.py'>, 'mail/domain': <module 'univention.admin.handlers.mail.domain' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/mail/domain.py'>, 'shares/printer': <module 'univention.admin.handlers.shares.printer' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/shares/printer.py'>, 'settings/service': <module 'univention.admin.handlers.settings.service' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/service.py'>, 'policies/nfsmounts': <module 'univention.admin.handlers.policies.nfsmounts' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/nfsmounts.py'>, 'settings/portal': <module 'univention.admin.handlers.settings.portal' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/portal.py'>, 'computers/domaincontroller_master': <module 'univention.admin.handlers.computers.domaincontroller_master' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/domaincontroller_master.py'>, 'dhcp/dhcp': <module 'univention.admin.handlers.dhcp.dhcp' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dhcp/dhcp.py'>, 'appcenter/app': <module 'univention.admin.handlers.appcenter.app' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/appcenter/app.py'>, 'settings/syntax': <module 'univention.admin.handlers.settings.syntax' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/syntax.py'>, 'dhcp/service': <module 'univention.admin.handlers.dhcp.service' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dhcp/service.py'>, 'policies/ldapserver': <module 'univention.admin.handlers.policies.ldapserver' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/ldapserver.py'>, 'computers/macos': <module 'univention.admin.handlers.computers.macos' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/macos.py'>, 'users/passwd': <module 'univention.admin.handlers.users.passwd' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/users/passwd.py'>, 'saml/idpconfig': <module 'univention.admin.handlers.saml.idpconfig' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/saml/idpconfig.py'>, 'settings/mswmifilter': <module 'univention.admin.handlers.settings.mswmifilter' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/mswmifilter.py'>, 'groups/group': <module 'univention.admin.handlers.groups.group' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/groups/group.py'>, 'computers/domaincontroller_slave': <module 'univention.admin.handlers.computers.domaincontroller_slave' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/domaincontroller_slave.py'>, 'policies/dhcp_routing': <module 'univention.admin.handlers.policies.dhcp_routing' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/dhcp_routing.py'>, 'settings/ldapschema': <module 'univention.admin.handlers.settings.ldapschema' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/ldapschema.py'>, 'shares/print': <module 'univention.admin.handlers.shares.print' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/shares/print.py'>, 'dns/forward_zone': <module 'univention.admin.handlers.dns.forward_zone' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dns/forward_zone.py'>, 'computers/computer': <module 'univention.admin.handlers.computers.computer' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/computer.py'>, 'policies/repositorysync': <module 'univention.admin.handlers.policies.repositorysync' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/repositorysync.py'>, 'nagios/timeperiod': <module 'univention.admin.handlers.nagios.timeperiod' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/nagios/timeperiod.py'>, 'users/ldap': <module 'univention.admin.handlers.users.ldap' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/users/ldap.py'>, 'dhcp/host': <module 'univention.admin.handlers.dhcp.host' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dhcp/host.py'>, 'policies/dhcp_netbios': <module 'univention.admin.handlers.policies.dhcp_netbios' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/dhcp_netbios.py'>, 'uvmm/info': <module 'univention.admin.handlers.uvmm.info' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/uvmm/info.py'>, 'settings/udm_module': <module 'univention.admin.handlers.settings.udm_module' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/udm_module.py'>, 'policies/dhcp_dnsupdate': <module 'univention.admin.handlers.policies.dhcp_dnsupdate' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/dhcp_dnsupdate.py'>, 'policies/dhcp_scope': <module 'univention.admin.handlers.policies.dhcp_scope' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/dhcp_scope.py'>, 'settings/usertemplate': <module 'univention.admin.handlers.settings.usertemplate' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/usertemplate.py'>, 'shares/share': <module 'univention.admin.handlers.shares.share' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/shares/share.py'>, 'policies/memberpackages': <module 'univention.admin.handlers.policies.memberpackages' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/memberpackages.py'>, 'container/msgpo': <module 'univention.admin.handlers.container.msgpo' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/container/msgpo.py'>, 'settings/extended_attribute': <module 'univention.admin.handlers.settings.extended_attribute' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/extended_attribute.py'>, 'policies/desktop': <module 'univention.admin.handlers.policies.desktop' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/desktop.py'>, 'computers/ipmanagedclient': <module 'univention.admin.handlers.computers.ipmanagedclient' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/ipmanagedclient.py'>, 'settings/sambaconfig': <module 'univention.admin.handlers.settings.sambaconfig' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/sambaconfig.py'>, 'nagios/service': <module 'univention.admin.handlers.nagios.service' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/nagios/service.py'>, 'computers/domaincontroller_backup': <module 'univention.admin.handlers.computers.domaincontroller_backup' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/domaincontroller_backup.py'>, 'policies/slavepackages': <module 'univention.admin.handlers.policies.slavepackages' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/slavepackages.py'>, 'settings/udm_hook': <module 'univention.admin.handlers.settings.udm_hook' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/udm_hook.py'>, 'policies/registry': <module 'univention.admin.handlers.policies.registry' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/registry.py'>, 'settings/cn': <module 'univention.admin.handlers.settings.cn' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/cn.py'>, 'dns/reverse_zone': <module 'univention.admin.handlers.dns.reverse_zone' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dns/reverse_zone.py'>, 'container/cn': <module 'univention.admin.handlers.container.cn' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/container/cn.py'>, 'users/contact': <module 'univention.admin.handlers.users.contact' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/users/contact.py'>, 'uvmm/cloudtype': <module 'univention.admin.handlers.uvmm.cloudtype' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/uvmm/cloudtype.py'>, 'settings/default': <module 'univention.admin.handlers.settings.default' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/default.py'>, 'settings/extended_options': <module 'univention.admin.handlers.settings.extended_options' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/extended_options.py'>, 'kerberos/kdcentry': <module 'univention.admin.handlers.kerberos.kdcentry' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/kerberos/kdcentry.py'>, 'settings/printermodel': <module 'univention.admin.handlers.settings.printermodel' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/printermodel.py'>, 'settings/umc_operationset': <module 'univention.admin.handlers.settings.umc_operationset' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/umc_operationset.py'>, 'dns/ns_record': <module 'univention.admin.handlers.dns.ns_record' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dns/ns_record.py'>, 'policies/dhcp_boot': <module 'univention.admin.handlers.policies.dhcp_boot' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/dhcp_boot.py'>, 'settings/portal_category': <module 'univention.admin.handlers.settings.portal_category' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/portal_category.py'>, 'policies/printserver': <module 'univention.admin.handlers.policies.printserver' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/printserver.py'>, 'dns/ptr_record': <module 'univention.admin.handlers.dns.ptr_record' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dns/ptr_record.py'>, 'shares/printergroup': <module 'univention.admin.handlers.shares.printergroup' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/shares/printergroup.py'>, 'networks/network': <module 'univention.admin.handlers.networks.network' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/networks/network.py'>, 'dhcp/subnet': <module 'univention.admin.handlers.dhcp.subnet' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dhcp/subnet.py'>, 'dns/alias': <module 'univention.admin.handlers.dns.alias' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dns/alias.py'>, 'dhcp/server': <module 'univention.admin.handlers.dhcp.server' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dhcp/server.py'>, 'dhcp/shared': <module 'univention.admin.handlers.dhcp.shared' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dhcp/shared.py'>, 'settings/portal_entry': <module 'univention.admin.handlers.settings.portal_entry' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/portal_entry.py'>, 'settings/packages': <module 'univention.admin.handlers.settings.packages' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/packages.py'>, 'dns/host_record': <module 'univention.admin.handlers.dns.host_record' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dns/host_record.py'>, 'policies/maintenance': <module 'univention.admin.handlers.policies.maintenance' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/maintenance.py'>, 'dns/srv_record': <module 'univention.admin.handlers.dns.srv_record' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dns/srv_record.py'>, 'mail/lists': <module 'univention.admin.handlers.mail.lists' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/mail/lists.py'>, 'dns/txt_record': <module 'univention.admin.handlers.dns.txt_record' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/dns/txt_record.py'>, 'computers/memberserver': <module 'univention.admin.handlers.computers.memberserver' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/computers/memberserver.py'>, 'settings/msprintconnectionpolicy': <module 'univention.admin.handlers.settings.msprintconnectionpolicy' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/settings/msprintconnectionpolicy.py'>, 'policies/print_quota': <module 'univention.admin.handlers.policies.print_quota' from '/var/lib/jenkins/workspace/Mitarbeiter/phahn/UCS-API-Doc/py/univention/admin/handlers/policies/print_quota.py'>}

Mapping from module name to Python module.

univention.admin.modules.update()[source]

Scan file system and update internal list of UDM handler modules.

univention.admin.modules.get(module)[source]

Get UDM module.

Parameters:module – either the name (str) of a module or the module itself.
Returns:the module or None if no module exists with the requested name.
univention.admin.modules.get_module(module)[source]

interim function, must only be used by univention-directory-manager-modules!

Deprecated since version UCS: 4.4

Parameters:module – either the name (str) of a module or the module itself.
Returns:the module or None if no module exists with the requested name.
univention.admin.modules.init(lo, position, module, template_object=None, force_reload=False)[source]

Initialize UDM handler module.

Parameters:
  • loLDAP connection.
  • positionUDM position instance.
  • moduleUDM handler module.
  • template_object – Reference to a instance, from which the default values are used.
  • force_reload – With True force Python to reload the module from the file system.
univention.admin.modules.update_extended_options(lo, module, position)[source]

Overwrite options defined via LDAP.

class univention.admin.modules.EA_Layout(**kwargs)[source]

Bases: dict

Extended attribute layout.

name
overwrite
tabName
groupName
position
groupPosition
advanced
is_app_tab
univention.admin.modules.update_extended_attributes(lo, module, position)[source]

Load extended attribute from LDAP and modify UDM handler.

univention.admin.modules.identify(dn, attr, module_name='', canonical=0, module_base=None)[source]

Return list of UDM handlers capable of handling the given LDAP object.

Parameters:
  • dnDN of the LDAP object.
  • atrLDAP attributes.
  • module_name – If given only the given module name is used if it is capable to handle the object.
  • canonical – UNUSED!
  • module_base – Optional string the module names must start with.
Returns:

the list of UDM modules.

univention.admin.modules.identifyOne(dn, attr, type='')[source]

Return the UDM handler capable of handling the given LDAP object.

Parameters:
  • dnDN of the LDAP object.
  • atrLDAP attributes.
  • type – If given only the given module name is used if it is capable to handle the object.
Returns:

the UDM modules or None.

univention.admin.modules.recognize(module_name, dn, attr)[source]
univention.admin.modules.name(module)[source]

Return name of module.

univention.admin.modules.superordinate_names(module_name)[source]

Return name of superordinate module.

univention.admin.modules.superordinate_name(module_name)[source]

Return name of first superordinate module.

Deprecated since version UCS: 4.2 Use superordinate_names() instead.

univention.admin.modules.superordinate(module)[source]

Return instance of superordinate module.

Deprecated since version UCS: 4.2 Use superordinates() instead.

univention.admin.modules.superordinates(module)[source]

Return instance of superordinate module.

univention.admin.modules.subordinates(module)[source]

Return list of instances of subordinate modules.

Parameters:module

???

Returns:list of UDM handler modules.
univention.admin.modules.find_superordinate(dn, co, lo)[source]

For a given DN, search in the LDAP path whether this LDAP object is below an object that is a superordinate or is a superordinate itself.

Parameters:
  • dnDN.
  • coUDM configuation object.
  • loLDAP connection.
Returns:

the superordinate module or None.

univention.admin.modules.layout(module_name, object=None)[source]

return layout of properties

univention.admin.modules.options(module_name)[source]

return options available for module

univention.admin.modules.attributes(module_name)[source]

Return attributes for module.

Parameters:module_name – the name of the UDM module, e.g. users/user.
univention.admin.modules.short_description(module_name)[source]

Return short description for module.

Parameters:module_name – the name of the UDM module, e.g. users/user.
Returns:The short descriptive text.
univention.admin.modules.policy_short_description(module_name)[source]

Return short description for policy module primarily used for tab headers.

Parameters:module_name – the name of the UDM policy module, e.g. policies/pwhistory.
Returns:The short descriptive text.
univention.admin.modules.long_description(module_name)[source]

Return long description for module.

Parameters:module_name – the name of the UDM module, e.g. users/user.
Returns:The long descriptive text.
univention.admin.modules.childs(module_name)[source]

Return whether module may have subordinate modules.

Parameters:module_name – the name of the UDM module, e.g. users/user.
Returns:1 if the module has children, 0 otherwise.
univention.admin.modules.virtual(module_name)[source]

Return whether module may have subordinate modules.

Parameters:module_name – the name of the UDM module, e.g. users/user.
Returns:True if the module is virtual, False otherwise.
univention.admin.modules.lookup(module_name, co, lo, filter='', base='', superordinate=None, scope='base+one', unique=False, required=False, timeout=-1, sizelimit=0)[source]

Return objects of module that match the given criteria.

Parameters:module_name – the name of the UDM module, e.g. users/user.
univention.admin.modules.quickDescription(module_name, dn)[source]
univention.admin.modules.isSuperordinate(module)[source]

Check if the module is a UDM superoridnate module.

Parameters:module – A UDM handler class.
Returns:True if the handler is a superoridnate module, False otherwise.
univention.admin.modules.isContainer(module)[source]

Check if the module is a UDM container module.

Parameters:module – A UDM handler class.
Returns:True if the handler is a container module, False otherwise.
univention.admin.modules.isPolicy(module)[source]

Check if the module is a UDM policy module.

Parameters:module – A UDM handler class.
Returns:True if the handler is a policy module, False otherwise.
univention.admin.modules.defaultPosition(module, superordinate=None)[source]

Returns default position for object of module.

Parameters:
  • module – A UDM handler class.
  • superordinate – A optional superordinate UDM object instance.
Returns:

The DN of the container for the object.

univention.admin.modules.supports(module_name, operation)[source]

Check if module supports operation

Parameters:
  • module_name – the name of the UDM module, e.g. users/user.
  • operation – the name of the operation, e.g. ‘modify’.
Returns:

True if the operation is supported, False otherwise.

univention.admin.modules.objectType(co, lo, dn, attr=None, modules=[], module_base=None)[source]
univention.admin.modules.objectShadowType(co, lo, dn, attr=None, modules=[])[source]
univention.admin.modules.findObject(co, lo, dn, type, attr=None, module_base=None)[source]
univention.admin.modules.policyOc(module_name)[source]

Return the LDAP objectClass used to store the policy.

Parameters:module_name – the name of the UDM policy module, e.g. policies/pwhistory.
Returns:the objectClass.
univention.admin.modules.policiesGroup(module_name)[source]

Return the name of the group the UDM policy belongs to.

Parameters:module_name – the name of the UDM policy module, e.g. policies/pwhistory.
Returns:the group name.
univention.admin.modules.policies()[source]
univention.admin.modules.policyTypes(module_name)[source]

Returns a list of policy types applying to the given module.

Parameters:module_name – the name of the UDM module, e.g. users/user.
Returns:a list of UDM policy modules, e.g. policies/pwhistory.
univention.admin.modules.policyPositionDnPrefix(module_name)[source]

Return the relative DN for a policy.

Parameters:module_name – the name of the UDM policy module, e.g. policies/pwhistory.
Returns:A DN string to append to the LDAP base to get the container for the policy.
univention.admin.modules.defaultContainers(module)[source]

Checks for the attribute default_containers that should contain a list of RDNs of default containers.

Parameters:moduleUDM
Returns:a list of DNs.
univention.admin.modules.childModules(module_name)[source]

Return child modules if module is a super module.

Parameters:module_name – the name of the UDM module, e.g. users/user.
Returns:List of child module names.

univention.admin.nagios module

UDM methods and defines for Nagios related attributes.

univention.admin.nagios.addPropertiesMappingOptionsAndLayout(new_property, new_mapping, new_options, new_layout)[source]

Add Nagios properties.

class univention.admin.nagios.Support[source]

Bases: object

nagiosGetAssignedServices()[source]
nagiosGetParentHosts()[source]
nagios_open()[source]
nagiosSaveParentHostList(ml)[source]
nagios_ldap_modlist(ml)[source]
nagios_ldap_pre_modify()[source]
nagios_ldap_pre_create()[source]
nagiosModifyServiceList()[source]
nagiosRemoveHostFromServices()[source]
nagiosRemoveHostFromParent()[source]
nagios_ldap_post_modify()[source]
nagios_ldap_post_create()[source]
nagios_ldap_post_remove()[source]
nagios_cleanup()[source]
_Support__change_fqdn(oldfqdn, newfqdn)
_Support__getFQDN()

univention.admin.objects module

UDM objects.

univention.admin.objects.module(object)[source]

Return handler name for UDM object.

Parameters:objectUDM object instance
Returns:UDM handler name or None.
univention.admin.objects.get_superordinate(module, co, lo, dn)[source]

Searches for the superordinate object for the given DN.

Parameters:
  • module

    ???

  • coUDM configuation object.
  • loLDAP connection.
  • dnDN.
Returns:

the superoridnate or None if the object does not require a superordinate object or it is not found.

univention.admin.objects.get(module, co, lo, position, dn='', attr=None, superordinate=None, attributes=None)[source]

Return object of module while trying to create objects of superordinate modules as well.

Parameters:
  • moduleUDM handler.
  • coUDM configuation object.
  • loLDAP connection.
  • positionUDM position instance.
univention.admin.objects.open(object)[source]

Initialization of properties not neccessary for browsing etc.

Parameters:objectUDM object.
univention.admin.objects.default(module, co, lo, position)[source]

Create UDM object and initialize default values.

Parameters:
  • moduleUDM handler.
  • coUDM configuation object.
  • loLDAP connection.
  • positionUDM position instance.
Returns:

An initialized UDM object.

univention.admin.objects.description(object)[source]

Return short description for object.

Parameters:objectUDM object.
univention.admin.objects.shadow(lo, module, object, position)[source]

If object is a container, return object and module the container shadows (that is usually the one that is subordinate in the LDAP tree).

Parameters:
  • loLDAP connection.
  • moduleUDM handler.
  • objectUDM object.
  • positionUDM position instance.
Returnd:

2-tuple (module, object) or (None, None)

univention.admin.objects.dn(object)[source]

Return the DN of the object.

Parameters:objectUDM object.
Returns:the DN or None.
univention.admin.objects.ocToType(oc)[source]

Return the UDM module capabale of handling the given LDAP objectClass.

Parameters:ocLDAP object class.
Returns:name of the UDM module.
univention.admin.objects.fixedAttribute(object, key)[source]

Check if the named property is a fixed attribute (not overwritten my more specific policies).

Parameters:
  • objectUDM object.
  • keyUDM property name
Returns:

1 if the property is fixed, 0 otherwise.

univention.admin.objects.emptyAttribute(object, key)[source]

Check if the named property is an empty attribute (reset to empty by a general policy).

Parameters:
  • objectUDM object.
  • keyUDM property name
Returns:

1 if the property is empty, 0 otherwise.

univention.admin.objects.getPolicyReference(object, policy_type)[source]

Return the policy of the requested type.

Parameters:
  • objectUDM object.
  • policy_type – Name of the UDM policy to lookup.
Returns:

The policy applying to the object or None.

univention.admin.objects.removePolicyReference(object, policy_type)[source]

Remove the policy of the requested type.

Parameters:
  • objectUDM object.
  • policy_type – Name of the UDM policy to lookup.
univention.admin.objects.replacePolicyReference(object, policy_type, new_reference)[source]

Replace the policy of the requested type with a new instance.

Parameters:
  • objectUDM object.
  • policy_type – Name of the UDM policy to lookup.
univention.admin.objects.restorePolicyReference(object, policy_type)[source]

Restore the policy of the requested type.

Parameters:
  • objectUDM object.
  • policy_type – Name of the UDM policy to lookup.
univention.admin.objects.wantsCleanup(object)[source]

Check if the given object wants to perform a cleanup (delete other objects, etc.) before it is deleted itself.

Parameters:object – parent object.
Returns:1´ if a cleanup is requested, `0 otherwise.
univention.admin.objects.performCleanup(object)[source]

some objects create other objects. remove those if neccessary.

Parameters:object – parent object.

univention.admin.password module

UDM password encryption methods.

univention.admin.password.crypt(password, method_id=None, salt=None)[source]

Return crypt hash.

Parameters:
  • password – password string.
  • method_id – optional hash type, MD5, SHA256/SHA-256, SHA512/SHA-512.
  • salt – salt for randomize the hashing.
Returns:

the hashed password string.

univention.admin.password.ntlm(password)[source]

Return tuple with NT and LanMan hash.

Parameters:password – password string.
Returns:2-tuple (NT, LanMan)
univention.admin.password.krb5_asn1(principal, password, krb5_context=None)[source]

Generate Kerberos password hashes.

Parameters:
  • principal – Kerberos principal name.
  • password – password string.
  • krb5_context – optional Kerberos context.
Returns:

list of ASN1 encoded Kerberos hashes.

univention.admin.password.is_locked(password)[source]

Check is the password (hash) is locked

Parameters:password – password hash.
Returns:True when locked, False otherwise.
>>> is_locked('foo')
False
>>> is_locked('{crypt}$1$foo')
False
>>> is_locked('{crypt}!$1$foo')
True
>>> is_locked('{KINIT}')
False
>>> is_locked('{LANMAN}!')
True
univention.admin.password.unlock_password(password)[source]

Remove prefix from password used for locking.

Parameters:password – password hash.
Returns:the unlocked password hash.
>>> unlock_password('{crypt}!$1$foo')
'{crypt}$1$foo'
>>> unlock_password('{LANMAN}!')
'{LANMAN}'
>>> unlock_password('{SASL}!')
'{SASL}'
>>> unlock_password('{KINIT}!')
'{KINIT}'
univention.admin.password.lock_password(password)[source]

Add prefix to password used for locking.

Parameters:password – password hash.
Returns:the locked password hash.
>>> lock_password('{crypt}$1$foo')
'{crypt}!$1$foo'
>>> lock_password('{LANMAN}')
'{LANMAN}!'
>>> lock_password('{SASL}')
'{SASL}!'
>>> lock_password('{KINIT}')
'{KINIT}!'
>>> lock_password('foo').startswith('{crypt}!$')
True
univention.admin.password.password_is_auth_saslpassthrough(password)[source]

Check if the password hash indicates the use of |SASL|.

Parameters:apssword – password hash.
Returns:True is |SASL| shall be used, False otherwise.
univention.admin.password.get_password_history(newpwhash, pwhistory, pwhlen)[source]

Append the given password hash to the history of password hashed

Parameters:
  • newpwhash – new password hash.
  • pwhistory – history of previous password hashes.
  • pwhlen – length of the password history.
Returns:

modified password hash history.

univention.admin.password.password_already_used(password, pwhistory)[source]

Check if the password is already used in the password hash history.

Parameters:
  • password – new password hash.
  • pwhistory – history of previous password hashes.
Returns:

True when already used, False otherwise,

class univention.admin.password.PasswortHistoryPolicy(pwhistoryPolicy)[source]

Bases: object

Policy for handling history of password hashes.

univention.admin.policy module

UDM policy utilities

univention.admin.policy.register_policy_mapping(mapping)[source]
univention.admin.policy.policy_object_tab()[source]
univention.admin.policy.requiredObjectClassesProperty(**kwargs)[source]
univention.admin.policy.prohibitedObjectClassesProperty(**kwargs)[source]
univention.admin.policy.fixedAttributesProperty(**kwargs)[source]
univention.admin.policy.emptyAttributesProperty(**kwargs)[source]
univention.admin.policy.ldapFilterProperty(**kwargs)[source]

univention.admin.samba module

UDM samba related code

class univention.admin.samba.acctFlags(flagstring=None, flags=None, fallbackflags=None)[source]
decode()[source]
set(flag)[source]
unset(flag)[source]

univention.admin.syntax module

UDM syntax definitions.

univention.admin.syntax.import_syntax_files()[source]

Load all additional syntax files from */univention/admin/syntax.d/*.py.

univention.admin.syntax.__register_choice_update_function(func)[source]

Register a function to be called when the syntax classes are to be re-loaded.

univention.admin.syntax.update_choices()[source]

Update choices which are defined in LDAP

univention.admin.syntax.is_syntax(syntax_obj, syntax_type)[source]

Returns True if the syntax object/class matches the given type.

Parameters:
  • syntax_obj – The instance to check.
  • syntax_type – A syntax class type.
class univention.admin.syntax.ClassProperty(getter)[source]

Bases: object

A decorator that can be used to define read-only class properties.

univention.admin.syntax.SIZES = ('OneThird', 'Half', 'TwoThirds', 'One', 'FourThirds', 'OneAndAHalf', 'FiveThirds')

Widget sizes. UDM uses a two-column layout and by default any widget uses one column. Widgets can also be configured to span (partly) both columns.

class univention.admin.syntax.ISyntax[source]

Bases: object

Base class for all syntax classes.

size = 'One'

Widget size. See SIZES.

name = 'ISyntax'
type = 'ISyntax'
classmethod tostring(text)[source]

Convert from internal representation to textual representation.

Parameters:text – internal representation.
Returns:textual representation.
class univention.admin.syntax.simple[source]

Bases: univention.admin.syntax.ISyntax

Base class for single value entries.

regex = None

Regular expression to validate the value.

error_message = 'Invalid value'

Error message when an invalid item is selected.

classmethod parse(text)[source]

Validate the value by parsing it.

Returns:the parsed textual value.
Raises:univention.admin.uexceptions.valueError – if the value is invalid.
classmethod new()[source]

Return the initial value.

classmethod any()[source]

Return the default search filter.

classmethod checkLdap(lo, value)[source]

Check the given value against the current LDAP state by reading directly from LDAP directory. The function returns nothing or raises an exception, if the value does not match with predefined constrains.

Parameters:
  • lo – LDAP connection.
  • value – The value to check.
Returns:

None on errors.

Raises:

Exception – on errors.

class univention.admin.syntax.select[source]

Bases: univention.admin.syntax.ISyntax

Select item from list of choices:

self.choice = [(id, _("Display text"), ...]
empty_value = False

Allow the empty value.

classmethod parse(text)[source]
classmethod new()[source]
classmethod any()[source]
class univention.admin.syntax.MultiSelect[source]

Bases: univention.admin.syntax.ISyntax

Select multiple items from a list of choices.

choices = ()

The list of choices.

empty_value = True

Allow the empty value.

error_message = 'Invalid value'

Error message when an invalid item is selected.

classmethod parse(value)[source]
class univention.admin.syntax.complex[source]

Bases: univention.admin.syntax.ISyntax

Base class for complex syntax classes consisting of multiple sub-items.

delimiter = ' '

Delimiter to separate the sub-items. Two possibilities:

  1. Either a single string like =, which is used to to concatenate all subitems.
  2. A sequence of n+1 strings like [‘’, ‘: ‘, ‘=’, ‘’] to concatenate n sub-items. The first and last value is used as a prefix/suffix.
min_elements = None

Minimum number of required values.

all_required = True

All sub-values must contain a value.

classmethod parse(texts, minn=None)[source]
classmethod tostring(texts)[source]
classmethod new()[source]
any()[source]
class univention.admin.syntax.UDM_Objects[source]

Bases: univention.admin.syntax.ISyntax

Base class to lookup selectable items from LDAP enties using their DN.

See UDM_Attribute for an alternative to use values from one LDAP entry..

udm_modules = ()

Sequence of UDM module names to search for.

udm_filter = ''

A LDAP filter string to further restrict the matching LDAP objects.

key = 'dn'

The LDAP attribute name to use as the value for this syntax class.

label = None

The UDM property name, which is used as the displayed value.

regex = <_sre.SRE_Pattern object>

Regular expression for validating the values.

static_values = None

Sequence of additional static items.

empty_value = False

Allow to select no entry.

depends = None

The name of another UDM property this syntax sepends on.

error_message = 'Not a valid LDAP DN'

Error message when an invalid item is selected.

simple = False

With True, only a single object can be selected using a ComboBox. With False multiple entries can be selected using a MultiObjectSelect widget.

use_objects = True

By default with True create Python UDM instance for each LDAP entry. With False only work with the LDAP attribute data.

classmethod parse(text)[source]
class univention.admin.syntax.UDM_Attribute[source]

Bases: univention.admin.syntax.ISyntax

Base class to lookup selectable items from LDAP enties using attribute values.

See UDM_Objects for an alternative to use multiple LDAP entries.

udm_module = None

UDM module name to search for.

udm_filter = ''

A LDAP filter string to further restrict the matching LDAP objects.

attribute = None

The UDM property name to use as the value for this syntax class.

is_complex = False

True for a complex item consisting of multiple sub-items.

key_index = 0

When the UDM property is complex: The number of the sub-item, which is uses as the value for this syntax class.

label_index = 0

When the UDM property is complex: The number of the sub-item, which is uses as the didsplay value.

label_format = None

Python format string used to convert the UDM properties to the displayed value.

regex = None

Regular expression for validating the values.

static_values = None

Sequence of additional static items.

empty_value = False

Allow to select no entry.

depends = None

The name of another UDM property this syntax sepends on.

error_message = 'Invalid value'

Error message when an invalid item is selected.

classmethod parse(text)[source]
class univention.admin.syntax.none[source]

Bases: univention.admin.syntax.simple

class univention.admin.syntax.string[source]

Bases: univention.admin.syntax.simple

Syntax for a string with unlimited length.

min_length = 0
max_length = 0
classmethod parse(text)[source]
class univention.admin.syntax.string64[source]

Bases: univention.admin.syntax.simple

Syntax for a string with up to 64 characters.

classmethod parse(text)[source]
class univention.admin.syntax.OneThirdString[source]

Bases: univention.admin.syntax.string

Syntax for a string with an input field spanning 1/3 of the width.

size = 'OneThird'
class univention.admin.syntax.HalfString[source]

Bases: univention.admin.syntax.string

Syntax for a string with an input field spanning 1/2 of the width.

size = 'Half'
class univention.admin.syntax.TwoThirdsString[source]

Bases: univention.admin.syntax.string

Syntax for a string with an input field spanning 2/3 of the width.

size = 'TwoThirds'
class univention.admin.syntax.FourThirdsString[source]

Bases: univention.admin.syntax.string

Syntax for a string with an input field spanning 4/3 of the width.

size = 'FourThirds'
class univention.admin.syntax.OneAndAHalfString[source]

Bases: univention.admin.syntax.string

Syntax for a string with an input field spanning 3/2 of the width.

size = 'OneAndAHalf'
class univention.admin.syntax.FiveThirdsString[source]

Bases: univention.admin.syntax.string

Syntax for a string with an input field spanning 5/3 of the width.

size = 'FiveThirds'
class univention.admin.syntax.TwoString[source]

Bases: univention.admin.syntax.string

Syntax for a string with an input field spanning 2/1 of the width.

size = 'Two'
class univention.admin.syntax.TextArea[source]

Bases: univention.admin.syntax.string

Syntax for a string with an input allowing multi-line input.

class univention.admin.syntax.Editor[source]

Bases: univention.admin.syntax.string

class univention.admin.syntax.TwoEditor[source]

Bases: univention.admin.syntax.Editor

size = 'Two'
class univention.admin.syntax.UCSVersion[source]

Bases: univention.admin.syntax.string

Syntax for an UCS release version major.minor-patchlevel.

classmethod parse(value)[source]
class univention.admin.syntax.DebianPackageVersion[source]

Bases: univention.admin.syntax.string

Syntax for a Debian package version.

invalid_chars_regex = <_sre.SRE_Pattern object>
classmethod parse(value)[source]
class univention.admin.syntax.BaseFilename[source]

Bases: univention.admin.syntax.string

Syntax for a file name. Sub- and parent directories are not allowed.

classmethod parse(value)[source]
class univention.admin.syntax.Upload[source]

Bases: univention.admin.syntax.ISyntax

Syntax to allow uploading a binary file.

classmethod parse(value)[source]
class univention.admin.syntax.Base64GzipText[source]

Bases: univention.admin.syntax.TextArea

Syntax for some gzip-compressed and base64-encoded data.

classmethod parse(text)[source]
class univention.admin.syntax.Base64Bzip2Text[source]

Bases: univention.admin.syntax.TextArea

Syntax for some bzip2-compressed and base64-encoded data.

classmethod parse(text)[source]
class univention.admin.syntax.Base64Upload[source]

Bases: univention.admin.syntax.Upload

Syntax to allow uploading a base64 encoded file.

classmethod parse(text)[source]
class univention.admin.syntax.Base64BaseUpload[source]

Bases: univention.admin.syntax.Base64Upload

Syntax to allow uploading a base64 encoded file.

classmethod parse(text)[source]
class univention.admin.syntax.jpegPhoto[source]

Bases: univention.admin.syntax.Upload

Syntax to allow uploading a JPEG or PNG photo.

classmethod tostring(value)[source]
classmethod parse(text)[source]
class univention.admin.syntax.Base64Bzip2XML[source]

Bases: univention.admin.syntax.TextArea

Syntax for some bzip2-compressed XML data.

classmethod parse(text)[source]
class univention.admin.syntax.Base64UMCIcon[source]

Bases: univention.admin.syntax.TextArea

Syntax fore a base64 encoded icon (SVG, PNG, JPEG).

classmethod parse(text)[source]
class univention.admin.syntax.GNUMessageCatalog[source]

Bases: univention.admin.syntax.TextArea

Syntax fore a base64 encoded binary message catalog .mo.

classmethod parse(text)[source]
class univention.admin.syntax.Localesubdirname[source]

Bases: univention.admin.syntax.string

Syntax for a locale, e.g. language[_COUNTRY][.encoding][@variant].

Must match a directory in /usr/share/locale/.

classmethod parse(text)[source]
class univention.admin.syntax.Localesubdirname_and_GNUMessageCatalog[source]

Bases: univention.admin.syntax.complex

Syntax for a message catalog and its language.

See GNUMessageCatalog and Localesubdirname.

delimiter = ': '
subsyntaxes = [('Locale subdir name', <class 'univention.admin.syntax.Localesubdirname'>), ('GNU message catalog', <class 'univention.admin.syntax.GNUMessageCatalog'>)]
all_required = True
class univention.admin.syntax.integer[source]

Bases: univention.admin.syntax.simple

Syntax for positive numeric values.

>>> integer.parse('1')
'1'
>>> integer.parse('0')
'0'
>>> integer.parse('-1') 
Traceback (most recent call last):
        ...
valueError:
>>> integer.parse('1.1') 
Traceback (most recent call last):
        ...
valueError:
>>> integer.parse('text') 
Traceback (most recent call last):
        ...
valueError:
>>> integer.parse('') 
Traceback (most recent call last):
        ...
valueError:
min_length = 1
max_length = 0
_re = <_sre.SRE_Pattern object>
size = 'Half'
classmethod parse(text)[source]
class univention.admin.syntax.integerOrEmpty[source]

Bases: univention.admin.syntax.integer

Syntax for positive numeric values or the empty value.

classmethod parse(text)[source]
class univention.admin.syntax.boolean[source]

Bases: univention.admin.syntax.simple

Syntax for a boolean checkbox, which internally stores the state as 0 and 1.

>>> boolean.parse('')
''
>>> boolean.parse('0')
'0'
>>> boolean.parse('1')
'1'
>>> boolean.parse(True)
'1'
>>> boolean.parse(False)
'0'
>>> boolean.parse('2') 
Traceback (most recent call last):
        ...
valueError:
>>> boolean.parse('0.1') 
Traceback (most recent call last):
        ...
valueError:
>>> boolean.parse('text') 
Traceback (most recent call last):
        ...
valueError:
min_length = 1
max_length = 1
regex = <_sre.SRE_Pattern object>
error_message = 'Value must be 0 or 1'
classmethod parse(text)[source]
classmethod get_object_property_filter(object_property, object_property_value)[source]
classmethod sanitize_property_search_value(search_value)[source]
class univention.admin.syntax.AppActivatedBoolean[source]

Bases: univention.admin.syntax.boolean

class univention.admin.syntax.filesize[source]

Bases: univention.admin.syntax.simple

Syntax class for a file size supporting SI suffixes like KB.

>>> filesize.parse('0')
'0'
>>> filesize.parse('1b')
'1b'
>>> filesize.parse('2kB')
'2kB'
>>> filesize.parse('3Mb')
'3Mb'
>>> filesize.parse('4GB')
'4GB'
>>> filesize.parse('5pb') 
Traceback (most recent call last):
        ...
valueError:
>>> filesize.parse('-6') 
Traceback (most recent call last):
        ...
valueError:
>>> filesize.parse('-7.8') 
Traceback (most recent call last):
        ...
valueError:
>>> filesize.parse('text') 
Traceback (most recent call last):
        ...
valueError:
min_length = 1
max_length = 0
regex = <_sre.SRE_Pattern object>
error_message = 'Value must be an integer followed by one of GB,MB,KB,B or nothing (equals B)!'
class univention.admin.syntax.mail_folder_name[source]

Bases: univention.admin.syntax.simple

Syntax for IMAP mail folder names.

>>> mail_folder_name.parse('folder_name')
'folder_name'
>>> mail_folder_name.parse('folder name') 
Traceback (most recent call last):
        ...
valueError:
>>> mail_folder_name.parse('folder      name') 
Traceback (most recent call last):
        ...
valueError:
>>> mail_folder_name.parse('folder!name') 
Traceback (most recent call last):
        ...
valueError:
classmethod parse(text)[source]
class univention.admin.syntax.mail_folder_type[source]

Bases: univention.admin.syntax.select

Syntax for IMAP mail folder types.

>>> mail_folder_type.parse('')
''
>>> mail_folder_type.parse('mail')
'mail'
>>> mail_folder_type.parse('event')
'event'
>>> mail_folder_type.parse('contact')
'contact'
>>> mail_folder_type.parse('task')
'task'
>>> mail_folder_type.parse('note')
'note'
>>> mail_folder_type.parse('journal')
'journal'
>>> mail_folder_type.parse('invalid')
name = 'mail_folder_type'
choices = [('', 'undefined'), ('mail', 'mails'), ('event', 'events'), ('contact', 'contacts'), ('task', 'tasks'), ('note', 'notes'), ('journal', 'journals')]
class univention.admin.syntax.string_numbers_letters_dots[source]

Bases: univention.admin.syntax.simple

Syntax for string consisting of only digits, letters and dots.

>>> string_numbers_letters_dots.parse('a') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots.parse('A') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots.parse('0') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots.parse('aA')
'aA'
>>> string_numbers_letters_dots.parse('a.A')
'a.A'
>>> string_numbers_letters_dots.parse('a_A')
'a_A'
>>> string_numbers_letters_dots.parse('a-A')
'a-A'
>>> string_numbers_letters_dots.parse('.') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots.parse('_') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots.parse('-') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots.parse('/') 
Traceback (most recent call last):
        ...
valueError:
regex = <_sre.SRE_Pattern object>
error_message = 'Value must not contain anything other than digits, letters or dots, must be at least 2 characters long, and start and end with a digit or letter!'
class univention.admin.syntax.string_numbers_letters_dots_spaces[source]

Bases: univention.admin.syntax.simple

Syntax for string consisting of only digits, letters, dots and spaces. The later two are not allowed at the beginning and at the end.

>>> string_numbers_letters_dots_spaces.parse('a') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots_spaces.parse('A') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots_spaces.parse('0') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots_spaces.parse('aA')
'aA'
>>> string_numbers_letters_dots_spaces.parse('a.A')
'a.A'
>>> string_numbers_letters_dots_spaces.parse('a_A')
'a_A'
>>> string_numbers_letters_dots_spaces.parse('a-A')
'a-A'
>>> string_numbers_letters_dots_spaces.parse('a A')
'a A'
>>> string_numbers_letters_dots_spaces.parse('.') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots_spaces.parse('_') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots_spaces.parse('-') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots_spaces.parse(' ') 
Traceback (most recent call last):
        ...
valueError:
>>> string_numbers_letters_dots_spaces.parse('/') 
Traceback (most recent call last):
        ...
valueError:
regex = <_sre.SRE_Pattern object>
error_message = 'Value must not contain anything other than digits, letters, dots or spaces, must be at least 2 characters long, and start and end with a digit or letter!'
class univention.admin.syntax.phone[source]

Bases: univention.admin.syntax.simple

Syntax for (international) telephone numbers.

>>> phone.parse('+49 421 22232-0')
'+49 421 22232-0'
>>> phone.parse('++49 (0)700 Vanity')
'++49 (0)700 Vanity'
>>> phone.parse('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._ ()\/+-')
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._ ()\\/+-'
>>> phone.parse('^°!$§%&[]{}<>|*~#",.;:') 
Traceback (most recent call last):
        ...
valueError:
min_length = 1
max_length = 16
regex = <_sre.SRE_Pattern object>
error_message = 'Value must not contain anything other than digits, letters, dots, brackets, slash, plus, or minus!'
class univention.admin.syntax.IA5string[source]

Bases: univention.admin.syntax.string

Syntax for string from International Alphabet 5 (printable ASCII)

>>> IA5string.parse(''' !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~''')
' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
>>> IA5string.parse('öäüÖÄÜ߀') 
Traceback (most recent call last):
        ...
valueError:
classmethod parse(text)[source]
class univention.admin.syntax.uid[source]

Bases: univention.admin.syntax.simple

Syntax for user account names.

>>> uid.parse('a') 
Traceback (most recent call last):
        ...
valueError:
>>> uid.parse('A') 
Traceback (most recent call last):
        ...
valueError:
>>> uid.parse('0') 
Traceback (most recent call last):
        ...
valueError:
>>> uid.parse('aA')
'aA'
>>> uid.parse('a.A')
'a.A'
>>> uid.parse('a_A')
'a_A'
>>> uid.parse('a-A')
'a-A'
>>> uid.parse('.') 
Traceback (most recent call last):
        ...
valueError:
>>> uid.parse('_') 
Traceback (most recent call last):
        ...
valueError:
>>> uid.parse('-') 
Traceback (most recent call last):
        ...
valueError:
>>> uid.parse('/') 
Traceback (most recent call last):
        ...
valueError:
>>> uid.parse('admin') 
Traceback (most recent call last):
        ...
valueError:
>>> uid.parse('Admin')
'Admin'
min_length = 1
max_length = 16
regex = <_sre.SRE_Pattern object>
error_message = 'Value must not contain anything other than digits, letters, dots, dash or underscore, must be at least 2 characters long, must start and end with a digit or letter, and must not be admin!'
class univention.admin.syntax.uid_umlauts[source]

Bases: univention.admin.syntax.simple

Syntax for user account names supporting umlauts.

name = 'uid'
min_length = 1
max_length = 16
_re = <_sre.SRE_Pattern object>
classmethod parse(text)[source]
class univention.admin.syntax.uid_umlauts_lower_except_first_letter[source]

Bases: univention.admin.syntax.simple

Syntax for user account names supporting umlauts expecpt for the first character.

min_length = 1
max_length = 16
_re = <_sre.SRE_Pattern object>
classmethod parse(text)[source]
class univention.admin.syntax.gid[source]

Bases: univention.admin.syntax.simple

Syntax for group account names.

min_length = 1
max_length = 32
regex = <_sre.SRE_Pattern object>
error_message = 'A group name must start and end with a letter, number or underscore. In between additionally spaces, dashes and dots are allowed.'
class univention.admin.syntax.sharePath[source]

Bases: univention.admin.syntax.simple

Syntax for file share paths. The path must be absolute and the following paths are not allowed:

  • /dev/
  • /proc/
  • /root/
  • /sys/
  • /tmp/
regex = <_sre.SRE_Pattern object>
error_message = 'Value may not contain double quotes (")!'
classmethod parse(text)[source]
class univention.admin.syntax.passwd[source]

Bases: univention.admin.syntax.simple

Syntax for passwords.

min_length = 8
max_length = 0
_re1 = <_sre.SRE_Pattern object>
_re2 = <_sre.SRE_Pattern object>
_re3 = <_sre.SRE_Pattern object>
classmethod parse(text)[source]
class univention.admin.syntax.userPasswd[source]

Bases: univention.admin.syntax.simple

Syntax for user account passwords.

classmethod parse(text)[source]
class univention.admin.syntax.hostName[source]

Bases: univention.admin.syntax.simple

hostname based upon RFC 1123:

<let-or-digit>[*[<let-or-digit-or-hyphen>]<let-or-digit>]

also allow _ for Microsoft.

>>> hostName.parse('a')
'a'
>>> hostName.parse('0')
'0'
>>> hostName.parse('')
Traceback (most recent call last):
...
valueError: This is not a valid hostname.
>>> hostName.parse('a' * 64)
Traceback (most recent call last):
...
valueError: This is not a valid hostname.
>>> hostName.parse('!')
Traceback (most recent call last):
...
valueError: This is not a valid hostname.
>>> hostName.parse('-')
Traceback (most recent call last):
...
valueError: This is not a valid hostname.
min_length = 1
max_length = 63
regex = <_sre.SRE_Pattern object>
error_message = 'This is not a valid hostname.'
univention.admin.syntax.windowsHostName

alias of hostName

class univention.admin.syntax.ipv4Address[source]

Bases: univention.admin.syntax.simple

Syntax class for an IPv4 address. 0.0.0.0 is allowed.

>>> ipv4Address.parse('0.0.0.0')
'0.0.0.0'
classmethod parse(text)[source]
class univention.admin.syntax.ipAddress[source]

Bases: univention.admin.syntax.simple

Syntax class for an IPv4 or IPv6 address. 0.0.0.0 and IPv4-mapped IPv6 addresses are allowed.

>>> ipAddress.parse('0.0.0.0')
'0.0.0.0'
>>> ipAddress.parse('::1')
'::1'
classmethod parse(text)[source]
class univention.admin.syntax.hostOrIP[source]

Bases: univention.admin.syntax.simple

Syntax class for an IPv4 or IPv6 address or a host name. 0.0.0.0 and IPv4-mapped IPv6 addresses are allowed.

>>> hostOrIP.parse('1.2.3.4')
'1.2.3.4'
>>> hostOrIP.parse('1:2:3:4:5:6:7:8')
'1:2:3:4:5:6:7:8'
>>> hostOrIP.parse('0x7f000001')
'0x7f000001'
>>> hostOrIP.parse('example')
'example'
min_length = 0
max_length = 0
classmethod ipAddress(text)[source]
classmethod hostName(text)[source]
classmethod parse(text)[source]
class univention.admin.syntax.v4netmask[source]

Bases: univention.admin.syntax.simple

Syntax for a IPv4 network mask. May be entered as a bit mask or the number of bits.

>>> v4netmask.parse('255.255.255.0')
'24'
>>> v4netmask.parse('24')
'24'
>>> v4netmask.parse('0.0.0.0')
'0'
>>> v4netmask.parse('255.255.255.255')
'32'
>>> v4netmask.parse('33') 
Traceback (most recent call last):
...
valueError: Not a valid netmask!
min_length = 1
max_length = 15
classmethod netmaskBits(dotted)[source]
classmethod parse(text)[source]
class univention.admin.syntax.netmask[source]

Bases: univention.admin.syntax.simple

Syntax for a IPv4 network mask. May be entered as a bit mask or the number of bits.

>>> netmask.parse('255.255.255.0')
'24'
>>> netmask.parse('1')
'1'
>>> netmask.parse('127')
'127'
>>> netmask.parse('0') 
Traceback (most recent call last):
...
valueError: Not a valid netmask!
>>> netmask.parse('128') 
Traceback (most recent call last):
...
valueError: Not a valid netmask!
classmethod parse(text)[source]
class univention.admin.syntax.ipnetwork[source]

Bases: univention.admin.syntax.simple

Syntax for a IPv4 or IPv6 network address block.

>>> ipnetwork.parse('1.2.3.4/255.255.255.0') 
'1.2.3.0/24'
>>> ipnetwork.parse('1.2.3.4/24') 
'1.2.3.0/24'
>>> ipnetwork.parse('1:2:3:4:5:6:7:8/64') 
'1:2:3:4/64'
classmethod parse(text)[source]
class univention.admin.syntax.IP_AddressRange[source]

Bases: univention.admin.syntax.complex

Syntax for an IPv4 or IPv6 address range.

>>> IP_AddressRange.parse(('1.2.3.4', '')) 
['1.2.3.4']
>>> IP_AddressRange.parse(('1.2.3.4', '5.6.7.8'))
['1.2.3.4', '5.6.7.8']
>>> IP_AddressRange.parse(('::1', '::2'))
['::1', '::2']
>>> IP_AddressRange.parse(('5.6.7.8', '1.2.3.4')) 
Traceback (most recent call last):
...
valueInvalidSyntax: Illegal range
>>> IP_AddressRange.parse(('::2', '::1'))  
Traceback (most recent call last):
...
valueInvalidSyntax: Illegal range
>>> IP_AddressRange.parse(('1.2.3.4', '::1')) 
Traceback (most recent call last):
...
valueError: Not a valid IP address!
subsyntaxes = (('First address', <class 'univention.admin.syntax.ipAddress'>), ('Last address', <class 'univention.admin.syntax.ipAddress'>))
classmethod parse(texts)[source]
class univention.admin.syntax.IPv4_AddressRange[source]

Bases: univention.admin.syntax.IP_AddressRange

Syntax for an IPv4 address range.

>>> IPv4_AddressRange.parse(('1.2.3.4',))
['1.2.3.4']
>>> IPv4_AddressRange.parse(('1.2.3.4', '5.6.7.8'))
['1.2.3.4', '5.6.7.8']
>>> IPv4_AddressRange.parse(('5.6.7.8', '1.2.3.4')) 
Traceback (most recent call last):
...
valueInvalidSyntax: Illegal range
min_elements = 1
all_required = False
subsyntaxes = (('First address', <class 'univention.admin.syntax.ipv4Address'>), ('Last address', <class 'univention.admin.syntax.ipv4Address'>))
class univention.admin.syntax.ipProtocol[source]

Bases: univention.admin.syntax.select

Syntax class to choose between TCP und UDP.

choices = [('tcp', 'TCP'), ('udp', 'UDP')]
class univention.admin.syntax.ipProtocolSRV[source]

Bases: univention.admin.syntax.select

Syntax for DNS service record.

choices = [('tcp', 'TCP'), ('udp', 'UDP'), ('msdcs', 'MSDCS'), ('sites', 'SITES'), ('DomainDnsZones', 'DOMAINDNSZONES'), ('ForestDnsZones', 'FORESTDNSZONES')]
size = 'OneThird'
class univention.admin.syntax.absolutePath[source]

Bases: univention.admin.syntax.simple

Syntax for an absolute file system path.

min_length = 1
max_length = 0
_re = <_sre.SRE_Pattern object>
classmethod parse(text)[source]
class univention.admin.syntax.emailForwardSetting[source]

Bases: univention.admin.syntax.select

Syntax for selecting the e-mail forwarding setting.

choices = [('0', 'Redirect all e-mails to forward addresses'), ('1', 'Keep e-mails and forward a copy')]
class univention.admin.syntax.emailAddress[source]

Bases: univention.admin.syntax.simple

Syntax class for an e-mail address.

min_length = 3
max_length = 0
classmethod parse(text)[source]
class univention.admin.syntax.emailAddressTemplate[source]

Bases: univention.admin.syntax.emailAddress

Syntax class for an e-mail address in the UDM univention.admin.handlers.settings.usertemplate module.

class univention.admin.syntax.emailAddressValidDomain[source]

Bases: univention.admin.syntax.emailAddress

Syntax class for an e-mail address in one of the registered e-mail domains.

name = 'emailAddressValidDomain'
errMsgDomain = 'The domain part of the following mail addresses is not in list of configured mail domains: %s'
classmethod checkLdap(lo, mailaddresses)[source]
class univention.admin.syntax.primaryEmailAddressValidDomain[source]

Bases: univention.admin.syntax.emailAddressValidDomain

Syntax class for the primary e-mail address in one of the registered e-mail domains.

name = 'primaryEmailAddressValidDomain'
errMsgDomain = 'The domain part of the primary mail address is not in list of configured mail domains: %s'
class univention.admin.syntax.iso8601Date[source]

Bases: univention.admin.syntax.simple

A date of the format:

  • yyyy-ddd (2009-213)
  • yyyy-mm (2009-05)
  • yyyy-mm-dd (2009-05-13)
  • yyyy-Www (2009-W21)
  • yyyy-Www-D (2009-W21-4)

with the dashes being optional

regex = <_sre.SRE_Pattern object>
error_message = 'The given date does not conform to iso8601, example: "2009-01-01".'
class univention.admin.syntax.date[source]

Bases: univention.admin.syntax.simple

Syntax for a German date (DD.MM.YY). Also accepts the ISO format (YYYY-MM-DD).

Warning

Centuries are always stripped! See date2.

>>> date.parse('21.12.03')
'21.12.03'
>>> date.parse('1961-01-01')
'01.01.61'
>>> date.parse('2061-01-01')
'01.01.61'
>>> date.parse('01.02.00')
'01.02.00'
>>> date.parse('01.02.99')
'01.02.99'
>>> date.parse('00.00.01') 
Traceback (most recent call last):
...
valueError:
>>> date.parse('01x02y03') 
Traceback (most recent call last):
...
valueError:

Bug #20230: >>> date.parse(‘31.2.1’) #doctest: +IGNORE_EXCEPTION_DETAIL +SKIP Traceback (most recent call last): ... valueError:

name = 'date'
min_length = 5
max_length = 0
_re_iso = <_sre.SRE_Pattern object>
_re_de = <_sre.SRE_Pattern object>
classmethod parse(text)[source]
class univention.admin.syntax.date2[source]

Bases: univention.admin.syntax.date

Syntax for an ISO date (YYYY-MM-DD). Also accepts the German format (DD.MM.YY). If no century is specified, the date is mapped to 1970..2069.

>>> date2.parse('21.12.75')
'1975-12-21'
>>> date2.parse('21.12.03')
'2003-12-21'
>>> date2.parse('1961-01-01')
'1961-01-01'
>>> date2.parse('2001-02-31')  
'2001-02-31'
classmethod parse(text)[source]
class univention.admin.syntax.reverseLookupSubnet[source]

Bases: univention.admin.syntax.simple

Syntax for IPv4 or IPv6 sub-network.

>>> reverseLookupSubnet.parse('1.2.3')
'1.2.3'
>>> reverseLookupSubnet.parse('1')
'1'
>>> reverseLookupSubnet.parse('1000:2000:3000:4000:5000:6000:7000:800')
'1000:2000:3000:4000:5000:6000:7000:800'
regex_IPv4 = '((([1-9]?[0-9])|(1[0-9]{0,2})|(2([0-4][0-9]|5[0-5])))\\.){1,2}(([1-9]?[0-9])|(1[0-9]{0,2})|(2([0-4][0-9]|5[0-5])))'
regex_IPv6 = '(([0-9a-f]{4}:){0,7}[0-9a-f]{1,3})|(([0-9a-f]{4}:){0,6}[0-9a-f]{1,4})'
regex = <_sre.SRE_Pattern object>
error_message = 'A subnet for reverse lookup consists of the first 1-3 octets of an IPv4 address (example: "192.168.0") or of the first 1 to 31 nibbles of an expanded (with leading zeroes and without ::-substitution) IPv6 address (example: "2001:0db8:010" for "2001:db8:100::/24")'
class univention.admin.syntax.reverseLookupZoneName[source]

Bases: univention.admin.syntax.simple

Syntax for a DNS reverse zone name.

>>> reverseLookupZoneName.parse('3.2.1.in-addr.arpa')
'3.2.1.in-addr.arpa'
>>> reverseLookupZoneName.parse('8.7.6.5.4.3.2.1.ip6.arpa')
'8.7.6.5.4.3.2.1.ip6.arpa'
regex = <_sre.SRE_Pattern object>
error_message = 'The name of a reverse zone for IPv4 consists of the reversed subnet address followed by .in-addr.arpa (example: "0.168.192.in-addr.arpa") or for IPv6 in nibble format followed by .ip6.arpa (example: "0.0.0.0.0.0.1.0.8.b.d.0.1.0.0.2.ip6.arpa")'
class univention.admin.syntax.dnsName[source]

Bases: univention.admin.syntax.simple

RFC 1123: a ‘.’ separated FQDN

>>> dnsName.parse('')
Traceback (most recent call last):
...
valueError: Missing value!

A host name (label) can be up to 63 characters

>>> dnsName.parse('0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz')
Traceback (most recent call last):
...
valueError: Labels must be between 1 and 63 characters long!
>>> dnsName.parse('a..')
Traceback (most recent call last):
...
valueError: Labels must be between 1 and 63 characters long!

A full domain name is limited to 253 octets (including the separators).

>>> dnsName.parse('a.' * 128)
Traceback (most recent call last):
...
valueError: Full domain name must be between 1 and 253 characters long!
min_length = 1
max_length = 253
classmethod parse(text)[source]
univention.admin.syntax.DNS_Name

alias of dnsName

univention.admin.syntax.dnsZone

alias of dnsName

class univention.admin.syntax.dnsHostname[source]

Bases: univention.admin.syntax.dnsName

RFC 1123: a ‘.’ separated FQHN

A host name (label) can start or end with a letter or a number

>>> dnsHostname.parse('a')
'a'
>>> dnsHostname.parse('A.')
'A.'
>>> dnsName.parse('0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')
'0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> dnsName.parse('0.example.com')
'0.example.com'

A host name (label) MUST NOT consist of all numeric values

>>> dnsHostname.parse('0')
Traceback (most recent call last):
...
valueError: Full name must not be all numeric!

A host name (label) MUST NOT start or end with a ‘-‘ (dash)

>>> dnsHostname.parse('-')
Traceback (most recent call last):
...
valueError: A host name or FQDN must start and end with a letter or number. In between additionally dashes, dots and underscores are allowed.
LABEL = <_sre.SRE_Pattern object>
NUMERIC = <_sre.SRE_Pattern object>
classmethod parse(text)[source]
class univention.admin.syntax.dnsName_umlauts[source]

Bases: univention.admin.syntax.simple

>>> dnsName_umlauts.parse(u'ä')
u'\xe4'
>>> dnsName_umlauts.parse('a_0-A')
'a_0-A'
>>> dnsName_umlauts.parse('0')
Traceback (most recent call last):
...
valueError: A host name or FQDN must start and end with a letter or number. In between additionally dashes, dots and underscores are allowed.
>>> dnsName_umlauts.parse('-')
Traceback (most recent call last):
...
valueError: A host name or FQDN must start and end with a letter or number. In between additionally dashes, dots and underscores are allowed.
>>> dnsName_umlauts.parse('_')
Traceback (most recent call last):
...
valueError: A host name or FQDN must start and end with a letter or number. In between additionally dashes, dots and underscores are allowed.
min_length = 1
max_length = 63
regex = <_sre.SRE_Pattern object>
error_message = 'A host name or FQDN must start and end with a letter or number. In between additionally dashes, dots and underscores are allowed.'
class univention.admin.syntax.keyAndValue[source]

Bases: univention.admin.syntax.complex

Syntax for key-value-pairs separated by =.

>>> keyAndValue.parse(('key', 'value'))
['key', 'value']
delimiter = ' = '
subsyntaxes = [('Key', <class 'univention.admin.syntax.string'>), ('Value', <class 'univention.admin.syntax.string'>)]
all_required = 1
class univention.admin.syntax.dnsMX[source]

Bases: univention.admin.syntax.complex

Syntax for DNS mail exchange record.

>>> dnsMX.parse(('10', 'mail.my.domain'))
['10', 'mail.my.domain']
subsyntaxes = [('Priority', <class 'univention.admin.syntax.integer'>), ('Mail server', <class 'univention.admin.syntax.dnsHostname'>)]
all_required = True
class univention.admin.syntax.dnsSRVName[source]

Bases: univention.admin.syntax.complex

Syntax for the name of a DNS service record.

>>> dnsSRVName.parse(('ldap', 'tcp'))
['ldap', 'tcp']
>>> dnsSRVName.parse(('ldap', 'tcp'))
['ldap', 'tcp']

See also

min_elements = 2
all_required = False
subsyntaxes = (('Service', <class 'univention.admin.syntax.string'>), ('Protocol', <class 'univention.admin.syntax.ipProtocolSRV'>), ('Extension', <class 'univention.admin.syntax.string'>))
size = ('Half', 'Half', 'One')
class univention.admin.syntax.dnsPTR[source]

Bases: univention.admin.syntax.simple

DNS pointer record.

>>> dnsPTR.parse('1')
'1'
>>> dnsPTR.parse('1.2.3')
'1.2.3'
>>> dnsPTR.parse('f')
'f'
>>> dnsPTR.parse('1.2.3.4.5.6.7.8.9.a.b.c.d.e.f.0.1.2.3.4.5.6.7.8.9.a.b.c.d.e.f')
'1.2.3.4.5.6.7.8.9.a.b.c.d.e.f.0.1.2.3.4.5.6.7.8.9.a.b.c.d.e.f'
regexp = <_sre.SRE_Pattern object>
error_message = 'The reversed host name for IPv4 consists of the reversed host address (example: "4.3") or for IPv6 in nibble format (example: "8.0.0.0.7.0.0.0.0.6.0.0.0.0.5.0").'
class univention.admin.syntax.postalAddress[source]

Bases: univention.admin.syntax.complex

Syntax for a postal address consisting of street, postal code and city name.

>>> postalAddress.parse(('street', 'zip', 'city'))
['street', 'zip', 'city']
delimiter = ', '
subsyntaxes = [('Street', <class 'univention.admin.syntax.string'>), ('Postal code', <class 'univention.admin.syntax.OneThirdString'>), ('City', <class 'univention.admin.syntax.TwoThirdsString'>)]
all_required = True
class univention.admin.syntax.dnsSRVLocation[source]

Bases: univention.admin.syntax.complex

Syntax for DNS service record.

>>> dnsSRVLocation.parse(('10', '100', '389', 'server.my.domain'))
['10', '100', '389', 'server.my.domain']
subsyntaxes = [('Priority', <class 'univention.admin.syntax.integer'>), ('Weighting', <class 'univention.admin.syntax.integer'>), ('Port', <class 'univention.admin.syntax.integer'>), ('Server', <class 'univention.admin.syntax.dnsHostname'>)]
size = ('OneThird', 'OneThird', 'OneThird', 'One')
all_required = True
class univention.admin.syntax.unixTime[source]

Bases: univention.admin.syntax.simple

Syntax for a UNIX time stamp - seconds since 1970-01-01.

regex = <_sre.SRE_Pattern object>
error_message = 'Not a valid time format'
class univention.admin.syntax.TimeUnits[source]

Bases: univention.admin.syntax.select

Syntax to select a time unit.

size = 'Half'
choices = (('seconds', 'seconds'), ('minutes', 'minutes'), ('hours', 'hours'), ('days', 'days'))
class univention.admin.syntax.TimeString[source]

Bases: univention.admin.syntax.simple

Syntax for the time of day, e.g. hour, minute and optional seconds.

>>> TimeString.parse('00:00')
'00:00'
>>> TimeString.parse('23:59:59')
'23:59:59'
error_message = 'Not a valid time format'
regex = <_sre.SRE_Pattern object>
class univention.admin.syntax.UNIX_TimeInterval[source]

Bases: univention.admin.syntax.complex

Syntax for a time interval.

>>> UNIX_TimeInterval.parse(('1',))
['1']
>>> UNIX_TimeInterval.parse(('2', 'seconds'))
['2', 'seconds']
>>> UNIX_TimeInterval.parse(('3', 'minutes'))
['3', 'minutes']
>>> UNIX_TimeInterval.parse(('4', 'hours'))
['4', 'hours']
>>> UNIX_TimeInterval.parse(('5', 'days'))
['5', 'days']
min_elements = 1
subsyntaxes = (('', <class 'univention.admin.syntax.integerOrEmpty'>), ('', <class 'univention.admin.syntax.TimeUnits'>))
size = ('Half', 'Half')
classmethod parse(texts)[source]
class univention.admin.syntax.UNIX_BoundedTimeInterval[source]

Bases: univention.admin.syntax.UNIX_TimeInterval

Syntax for a time interval with additional constraints.

lower_bound = -1
upper_bound = -1
error_message = 'Value out of bounds (%d - %d seconds)'
classmethod parse(texts)[source]
class univention.admin.syntax.SambaMinPwdAge[source]

Bases: univention.admin.syntax.UNIX_BoundedTimeInterval

Syntax for the minimum password age in Samba: 0..998 days

lower_bound = 0
upper_bound = 86227200
class univention.admin.syntax.SambaMaxPwdAge[source]

Bases: univention.admin.syntax.UNIX_BoundedTimeInterval

Syntax for the maximum password age in Samba: 0..999 days

lower_bound = 0
upper_bound = 86313600
class univention.admin.syntax.NetworkType[source]

Bases: univention.admin.syntax.select

Syntax to select network technology type.

choices = (('ethernet', 'Ethernet'), ('fddi', 'FDDI'), ('token-ring', 'Token-Ring'))
class univention.admin.syntax.MAC_Address[source]

Bases: univention.admin.syntax.simple

Syntax to enter MAC address. The address is stored with octets separated by :.

>>> MAC_Address.parse('86:f5:d1:f5:6b:3e')
'86:f5:d1:f5:6b:3e'
>>> MAC_Address.parse('86-f5-d1-f5-6b-3e')
'86:f5:d1:f5:6b:3e'
>>> MAC_Address.parse('86f5d1f56b3e')
'86:f5:d1:f5:6b:3e'
>>> MAC_Address.parse('86f5.d1f5.6b3e')
'86:f5:d1:f5:6b:3e'
regexLinuxFormat = <_sre.SRE_Pattern object>
regexWindowsFormat = <_sre.SRE_Pattern object>
regexRawFormat = <_sre.SRE_Pattern object>
regexCiscoFormat = <_sre.SRE_Pattern object>
error_message = 'This is not a valid MAC address (valid examples are 86:f5:d1:f5:6b:3e, 86-f5-d1-f5-6b-3e, 86f5d1f56b3e, 86f5.d1f5.6b3e)'
classmethod parse(text)[source]
class univention.admin.syntax.DHCP_HardwareAddress[source]

Bases: univention.admin.syntax.complex

Syntax to enter DHCP hardware address consisting of network technology type and MAC address.

subsyntaxes = (('Type', <class 'univention.admin.syntax.NetworkType'>), ('Address', <class 'univention.admin.syntax.MAC_Address'>))
size = ('One', 'One')
all_required = True
class univention.admin.syntax.Packages[source]

Bases: univention.admin.syntax.UDM_Attribute

Syntax to select a Debian package name from lists stored in LDAP using univention.admin.handlers.settings.packages.

udm_module = 'settings/packages'
attribute = 'packageList'
label_format = '%(name)s: %($attribute$)s'
class univention.admin.syntax.PackagesRemove[source]

Bases: univention.admin.syntax.Packages

Syntax to select a Debian package name from lists stored in LDAP using univention.admin.handlers.settings.packages. This blacklists some important packages to prevent their removal.

classmethod parse(text)[source]
class univention.admin.syntax.userAttributeList[source]

Bases: univention.admin.syntax.string

Syntax to enter a users attribute.

Note

unused

classmethod parse(text)[source]
class univention.admin.syntax.ldapDn[source]

Bases: univention.admin.syntax.simple

LDAP distinguished name.

>>> ldapDn.parse('dc=foo,dc=bar,dc=test')
'dc=foo,dc=bar,dc=test'

Deprecated since version 3.1-0: Use UDM_Objects.

regex = <_sre.SRE_Pattern object>
error_message = 'Not a valid LDAP DN'
class univention.admin.syntax.UMC_OperationSet[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a UMC operation set from lists stored in LDAP using univention.admin.handlers.settings.umc_operationset.

udm_modules = ('settings/umc_operationset',)
label = '%(description)s (%(name)s)'
simple = True
class univention.admin.syntax.UMC_CommandPattern[source]

Bases: univention.admin.syntax.complex

Syntax to enter a UMC command pattern.

subsyntaxes = (('Command pattern', <class 'univention.admin.syntax.string'>), ('Option Pattern', <class 'univention.admin.syntax.string'>))
min_elements = 1
all_required = False
size = ('One', 'One')
class univention.admin.syntax.LDAP_Server[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a LDAP server.

udm_modules = ('computers/domaincontroller_master', 'computers/domaincontroller_backup', 'computers/domaincontroller_slave')
udm_filter = '!(univentionObjectFlag=docker)'
label = '%(fqdn)s'
simple = True
class univention.admin.syntax.IMAP_POP3[source]

Bases: univention.admin.syntax.select

Syntax to select between IMAP and POP3.

choices = (('IMAP', 'IMAP'), ('POP3', 'POP3'))
class univention.admin.syntax.IMAP_Right[source]

Bases: univention.admin.syntax.select

Syntax to select an IMAP access control permission.

choices = (('none', 'No access'), ('read', 'Read'), ('post', 'Post'), ('append', 'Append'), ('write', 'Write'), ('all', 'All'))
class univention.admin.syntax.UserMailAddress[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a primary e-mail address of an user name from LDAP.

udm_modules = ('users/user',)
udm_filter = '(mailPrimaryAddress=*)'
key = '%(mailPrimaryAddress)s'
static_values = (('anyone', 'Anyone'),)
regex = <_sre.SRE_Pattern object>
class univention.admin.syntax.GroupName[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a group name from LDAP.

udm_modules = ('groups/group',)
key = '%(name)s'
regex = <_sre.SRE_Pattern object>
simple = True
use_objects = False
class univention.admin.syntax.UserName[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select an user name from LDAP.

udm_modules = ('users/user',)
key = '%(username)s'
regex = <_sre.SRE_Pattern object>
simple = True
use_objects = False
class univention.admin.syntax.SharedFolderUserACL[source]

Bases: univention.admin.syntax.complex

Syntax to assign an IMAP access control permission for an user from LDAP.

subsyntaxes = (('User', <class 'univention.admin.syntax.UserMailAddress'>), ('Access right', <class 'univention.admin.syntax.IMAP_Right'>))
class univention.admin.syntax.SharedFolderGroupACL[source]

Bases: univention.admin.syntax.complex

Syntax to assign an IMAP access control permission for a group from LDAP.

subsyntaxes = (('Group', <class 'univention.admin.syntax.GroupName'>), ('Access right', <class 'univention.admin.syntax.IMAP_Right'>))
class univention.admin.syntax.SharedFolderSimpleUserACL[source]

Bases: univention.admin.syntax.complex

Syntax to assign an IMAP access control permission for any user.

subsyntaxes = (('User', <class 'univention.admin.syntax.string'>), ('Access right', <class 'univention.admin.syntax.IMAP_Right'>))
class univention.admin.syntax.SharedFolderSimpleGroupACL[source]

Bases: univention.admin.syntax.complex

Syntax to assign an IMAP access control permission for any group.

subsyntaxes = (('Group', <class 'univention.admin.syntax.string'>), ('Access right', <class 'univention.admin.syntax.IMAP_Right'>))
class univention.admin.syntax.ldapDnOrNone[source]

Bases: univention.admin.syntax.simple

LDAP distinguished name or None.

>>> ldapDnOrNone.parse('dc=foo,dc=bar,dc=test')
'dc=foo,dc=bar,dc=test'
>>> ldapDnOrNone.parse('None')
'None'

Deprecated since version 3.1-0: Use UDM_Objects.

_re = <_sre.SRE_Pattern object>
classmethod parse(text)[source]
class univention.admin.syntax.ldapObjectClass[source]

Bases: univention.admin.syntax.simple

Syntax to enter a LDAP objectClass name.

classmethod parse(text)[source]
class univention.admin.syntax.ldapAttribute[source]

Bases: univention.admin.syntax.simple

Syntax to enter a LDAP attribute name.

classmethod parse(text)[source]
class univention.admin.syntax.ldapFilter[source]

Bases: univention.admin.syntax.simple

Syntax to enter a LDAP search filter.

classmethod parse(text)[source]
class univention.admin.syntax.XResolution[source]

Bases: univention.admin.syntax.simple

Syntax to enter display resolution for X11.

regex = <_sre.SRE_Pattern object>
error_message = 'Value consists of two integer numbers separated by an "x" (e.g. "1024x768")'
class univention.admin.syntax.XSync[source]

Bases: univention.admin.syntax.simple

Syntax to enter display timing settings for X11.

regex = <_sre.SRE_Pattern object>
error_message = 'Value consists of two integer numbers separated by a "-" (e.g. "30-70")'
class univention.admin.syntax.XColorDepth[source]

Bases: univention.admin.syntax.simple

Syntax to enter color depth for X11.

regex = <_sre.SRE_Pattern object>
class univention.admin.syntax.XModule[source]

Bases: univention.admin.syntax.select

Syntax to select graphics driver for X11.

choices = [('', ''), ('apm', 'apm'), ('ark', 'Ark'), ('ati', 'ATI'), ('chips', 'chips'), ('cirrus', 'Cirrus'), ('cyrix', 'Cyrix'), ('dummy', 'dummy'), ('fbdev', 'fbdev'), ('fglrx', 'fglrx (AMD/ATI closed source)'), ('geode', 'Geode GX2/LX'), ('glide', 'glide'), ('glint', 'glint'), ('i128', 'I128'), ('i740', 'I740'), ('i810', 'I810'), ('imstt', 'IMSTT'), ('intel', 'Intel'), ('mach64', 'Mach64 (ATI)'), ('mga', 'MGA'), ('neomagic', 'Neomagic'), ('newport', 'Newport'), ('nouveau', 'nouveau - new Nvidia OSS driver'), ('nsc', 'NSC'), ('nv', 'NV'), ('nvidia', 'NVidia (closed source)'), ('openchrome', 'OpenChrome (VIA)'), ('r128', 'ATI Rage'), ('radeonhd', 'Radeon (AMD/ATI)'), ('rendition', 'Rendition'), ('s3', 'S3'), ('s3virge', 'S3 Virge'), ('savage', 'S3 Savage'), ('siliconmotion', 'Siliconmotion'), ('sis', 'SiS'), ('sisusb', 'SiS USB'), ('tdfx', 'tdfx'), ('tga', 'Tga'), ('trident', 'Trident'), ('tseng', 'Tseng'), ('vesa', 'Vesa'), ('vga', 'VGA'), ('via', 'VIA'), ('vmware', 'VMWare')]
class univention.admin.syntax.XMouseProtocol[source]

Bases: univention.admin.syntax.select

Syntax to select mouse protocol for X11.

choices = [('', ''), ('Auto', 'Auto'), ('IMPS/2', 'IMPS/2'), ('PS/2', 'PS/2'), ('ExplorerPS/2', 'ExplorerPS/2'), ('usb', 'USB'), ('ThinkingMouse', 'ThinkingMouse'), ('ThinkingMousePS/2', 'ThinkingMousePS/2'), ('NetScrollPS/2', 'NetScrollPS/2'), ('IntelliMouse', 'IntelliMouse'), ('NetMousePS/2', 'NetMousePS/2'), ('GlidePoint', 'GlidePoint'), ('GlidePointPS/2', 'GlidePointPS/2'), ('MouseManPlusPS/2', 'MouseManPlusPS/2'), ('ms', 'Serial')]
class univention.admin.syntax.XDisplayPosition[source]

Bases: univention.admin.syntax.select

Syntax to select display position for X11.

choices = [('', ''), ('left', 'Left of primary display'), ('right', 'Right of primary display'), ('above', 'Above primary display'), ('below', 'Below primary display')]
class univention.admin.syntax.XMouseDevice[source]

Bases: univention.admin.syntax.select

Syntax to select mouse device for X11.

choices = [('', ''), ('/dev/psaux', 'PS/2'), ('/dev/input/mice', 'USB'), ('/dev/ttyS0', 'Serial')]
class univention.admin.syntax.XKeyboardLayout[source]

Bases: univention.admin.syntax.select

Syntax to select keyboard layout for X11.

choices = [('', ''), ('ad', 'Andorra'), ('af', 'Afghanistan'), ('al', 'Albania'), ('am', 'Armenia'), ('ara', 'Arabic'), ('az', 'Azerbaijan'), ('ba', 'Bosnia and Herzegovina'), ('bd', 'Bangladesh'), ('be', 'Belgium'), ('bg', 'Bulgaria'), ('brai', 'Braille'), ('br', 'Brazil'), ('bt', 'Bhutan'), ('by', 'Belarus'), ('ca', 'Canada'), ('cd', 'Congo, Democratic Republic of the'), ('ch', 'Switzerland'), ('cn', 'China'), ('cz', 'Czechia'), ('de', 'Germany'), ('dk', 'Denmark'), ('ee', 'Estonia'), ('epo', 'Esperanto'), ('es', 'Spain'), ('et', 'Ethiopia'), ('fi', 'Finland'), ('fo', 'Faroe Islands'), ('fr', 'France'), ('gb', 'United Kingdom'), ('ge', 'Georgia'), ('gh', 'Ghana'), ('gn', 'Guinea'), ('gr', 'Greece'), ('hr', 'Croatia'), ('hu', 'Hungary'), ('ie', 'Ireland'), ('il', 'Israel'), ('in', 'India'), ('iq', 'Iraq'), ('ir', 'Iran'), ('is', 'Iceland'), ('it', 'Italy'), ('jp', 'Japan'), ('kg', 'Kyrgyzstan'), ('kh', 'Cambodia'), ('kr', 'Korea, Republic of'), ('kz', 'Kazakhstan'), ('la', 'Laos'), ('latam', 'Latin American'), ('lk', 'Sri Lanka'), ('lt', 'Lithuania'), ('lv', 'Latvia'), ('ma', 'Morocco'), ('mao', 'Maori'), ('me', 'Montenegro'), ('mk', 'Macedonia'), ('mm', 'Myanmar'), ('mn', 'Mongolia'), ('mt', 'Malta'), ('mv', 'Maldives'), ('nec_vndr/jp', 'Japan (PC-98xx Series)'), ('ng', 'Nigeria'), ('nl', 'Netherlands'), ('no', 'Norway'), ('np', 'Nepal'), ('pk', 'Pakistan'), ('pl', 'Poland'), ('pt', 'Portugal'), ('ro', 'Romania'), ('rs', 'Serbia'), ('ru', 'Russia'), ('se', 'Sweden'), ('si', 'Slovenia'), ('sk', 'Slovakia'), ('sn', 'Senegal'), ('sy', 'Syria'), ('th', 'Thailand'), ('tj', 'Tajikistan'), ('tm', 'Turkmenistan'), ('tr', 'Turkey'), ('ua', 'Ukraine'), ('us', 'USA'), ('uz', 'Uzbekistan'), ('vn', 'Vietnam'), ('za', 'South Africa')]
class univention.admin.syntax.soundModule[source]

Bases: univention.admin.syntax.select

Syntax to select ALSA audio device driver.

choices = [('', ''), ('auto', 'auto detect'), ('snd-ad1816a', 'AD1816A, AD1815'), ('snd-adlib', 'AdLib FM'), ('snd-ak4114', 'AK4114 IEC958 (S/PDIF) receiver by Asahi Kasei'), ('snd-ak4117', 'AK4117 IEC958 (S/PDIF) receiver by Asahi Kasei'), ('snd-ali5451', 'ALI M5451'), ('snd-opl3-synth', 'ALSA driver for OPL3 FM synth'), ('snd-sb16-csp', 'ALSA driver for SB16 Creative Signal Processor'), ('snd-sb-common', 'ALSA lowlevel driver for Sound Blaster cards'), ('snd-interwave', 'AMD InterWave'), ('snd-interwave-stb', 'AMD InterWave STB with TEA6330T'), ('snd-ad1889', 'Analog Devices AD1889 ALSA sound driver'), ('snd-atiixp', 'ATI IXP AC97 controller'), ('snd-atiixp-modem', 'ATI IXP MC97 controller'), ('aedsp16', 'Audio Excel DSP 16 Driver Version 1.3'), ('snd-au8810', 'Aureal vortex 8810'), ('snd-au8820', 'Aureal vortex 8820'), ('snd-au8830', 'Aureal vortex 8830'), ('snd-als100', 'Avance Logic ALS1X0'), ('snd-als300', 'Avance Logic ALS300'), ('snd-als4000', 'Avance Logic ALS4000'), ('snd-azt3328', 'Aztech AZF3328 (PCI168)'), ('snd-sgalaxy', 'Aztech Sound Galaxy'), ('snd-azt2320', 'Aztech Systems AZT2320'), ('snd-bt87x', 'Brooktree Bt87x audio driver'), ('snd-ca0106', 'CA0106'), ('snd-cs4232', 'Cirrus Logic CS4232'), ('snd-cs4236', 'Cirrus Logic CS4235-9'), ('snd-cs4281', 'Cirrus Logic CS4281'), ('snd-cmi8330', 'C-Media CMI8330'), ('snd-cmipci', 'C-Media CMI8x38 PCI'), ('snd-vx-lib', 'Common routines for Digigram VX drivers'), ('snd-cs5535audio', 'CS5535 Audio'), ('snd-dt019x', 'Diamond Technologies DT-019X / Avance Logic ALS-007'), ('snd-mixart', 'Digigram miXart'), ('snd-pcxhr', 'Digigram pcxhr 0.8.4'), ('snd-vx222', 'Digigram VX222 V2/Mic'), ('snd-vxpocket', 'Digigram VXPocket'), ('snd-dummy', 'Dummy soundcard (/dev/null)'), ('snd-virmidi', 'Dummy soundcard for virtual rawmidi devices'), ('snd-darla20', 'Echoaudio Darla20 soundcards driver'), ('snd-darla24', 'Echoaudio Darla24 soundcards driver'), ('snd-echo3g', 'Echoaudio Echo3G soundcards driver'), ('snd-gina20', 'Echoaudio Gina20 soundcards driver'), ('snd-gina24', 'Echoaudio Gina24 soundcards driver'), ('snd-indigodj', 'Echoaudio Indigo DJ soundcards driver'), ('snd-indigoio', 'Echoaudio Indigo IO soundcards driver'), ('snd-indigo', 'Echoaudio Indigo soundcards driver'), ('snd-layla20', 'Echoaudio Layla20 soundcards driver'), ('snd-layla24', 'Echoaudio Layla24 soundcards driver'), ('snd-mia', 'Echoaudio Mia soundcards driver'), ('snd-mona', 'Echoaudio Mona soundcards driver'), ('snd-emu10k1', 'EMU10K1'), ('snd-emu10k1x', 'EMU10K1X'), ('snd-emu8000-synth', 'Emu8000 synth plug-in routine'), ('snd-ens1370', 'Ensoniq AudioPCI ES1370'), ('snd-ens1371', 'Ensoniq/Creative AudioPCI ES1371+'), ('snd-sscape', 'ENSONIQ SoundScape PnP driver'), ('snd-es968', 'ESS AudioDrive ES968'), ('snd-es18xx', 'ESS ES18xx AudioDrive'), ('snd-es1688-lib', 'ESS ESx688 lowlevel module'), ('snd-es1968', 'ESS Maestro'), ('snd-maestro3', 'ESS Maestro3 PCI'), ('snd-es1938', 'ESS Solo-1'), ('snd-fm801', 'ForteMedia FM801'), ('snd-ad1848', 'Generic AD1848/AD1847/CS4248'), ('snd-cs4231', 'Generic CS4231'), ('snd-es1688', 'Generic ESS ES1688/ES688 AudioDrive'), ('snd-i2c', 'Generic i2c interface for ALSA'), ('snd-util-mem', 'Generic memory management routines for soundcard memory allocation'), ('snd-gusclassic', 'Gravis UltraSound Classic'), ('snd-gusextreme', 'Gravis UltraSound Extreme'), ('snd-gusmax', 'Gravis UltraSound MAX'), ('snd-ice1712', 'ICEnsemble ICE1712 (Envy24)'), ('snd-ice17xx-ak4xxx', 'ICEnsemble ICE17xx <-> AK4xxx AD/DA chip interface'), ('snd-cs8427', 'IEC958 (S/PDIF) receiver & transmitter by Cirrus Logic'), ('snd-intel8x0', 'Intel 82801AA,82901AB,i810,i820,i830,i840,i845,MX440; SiS 7012; Ali 5455'), ('snd-intel8x0m', 'Intel 82801AA,82901AB,i810,i820,i830,i840,i845,MX440; SiS 7013; NVidia MCP/2/2S/3 modems'), ('snd-hda-intel', 'Intel HDA driver'), ('kahlua', 'Kahlua VSA1 PCI Audio'), ('snd-korg1212', 'korg1212'), ('snd-serial-u16550', 'MIDI serial u16550'), ('snd-miro', 'Miro miroSOUND PCM1 pro, PCM12, PCM20 Radio'), ('pss', 'Module for PSS sound cards (based on AD1848, ADSP-2115 and ESC614).'), ('snd-mtpav', 'MOTU MidiTimePiece AV multiport MIDI'), ('snd-mpu401', 'MPU-401 UART'), ('snd-nm256', 'NeoMagic NM256AV/ZX'), ('snd-opl4-lib', 'OPL4 driver'), ('snd-opl4-synth', 'OPL4 wavetable synth driver'), ('snd-opti92x-ad1848', 'OPTi92X - AD1848'), ('snd-opti92x-cs4231', 'OPTi92X - CS4231'), ('snd-opti93x', 'OPTi93X'), ('sb', 'OSS Soundblaster ISA PnP and legacy sound driver'), ('snd-riptide', 'riptide'), ('snd-rme32', 'RME Digi32, Digi32/8, Digi32 PRO'), ('snd-rme9652', 'RME Digi9652/Digi9636'), ('snd-rme96', 'RME Digi96, Digi96/8, Digi96/8 PRO, Digi96/8 PST, Digi96/8 PAD'), ('snd-hdsp', 'RME Hammerfall DSP'), ('snd-hdspm', 'RME HDSPM'), ('snd-sb16-dsp', 'Routines for control of 16-bit SoundBlaster cards and clones'), ('snd-sb8-dsp', 'Routines for control of 8-bit SoundBlaster cards and clones'), ('snd-ad1848-lib', 'Routines for control of AD1848/AD1847/CS4248'), ('snd-opl3-lib', 'Routines for control of AdLib FM cards (OPL2/OPL3/OPL4 chips)'), ('snd-ak4xxx-adda', 'Routines for control of AK452x / AK43xx AD/DA converters'), ('snd-cs4231-lib', 'Routines for control of CS4231(A)/CS4232/InterWave & compatible chips'), ('snd-cs4236-lib', 'Routines for control of CS4235/4236B/4237B/4238B/4239 chips'), ('snd-emu10k1-synth', 'Routines for control of EMU10K1 WaveTable synth'), ('snd-emux-synth', 'Routines for control of EMU WaveTable chip'), ('snd-mpu401-uart', 'Routines for control of MPU-401 in UART mode'), ('snd-tea575x-tuner', 'Routines for control of TEA5757/5759 Philips AM/FM radio tuner chips'), ('snd-tea6330t', 'Routines for control of the TEA6330T circuit via i2c bus'), ('snd-gus-lib', 'Routines for Gravis UltraSound soundcards'), ('snd-sonicvibes', 'S3 SonicVibes PCI'), ('snd-sb8', 'Sound Blaster 1.0/2.0/Pro'), ('snd-sb16', 'Sound Blaster 16'), ('snd-sbawe', 'Sound Blaster AWE'), ('snd-pdaudiocf', 'Sound Core PDAudio-CF'), ('snd-usb-usx2y', 'TASCAM US-X2Y Version 0.8.7.2'), ('snd-trident', 'Trident 4D-WaveDX/NX & SiS SI7018'), ('trident', 'Trident 4DWave/SiS 7018/ALi 5451 and Tvia/IGST CyberPro5050 PCI Audio Driver'), ('snd-wavefront', 'Turtle Beach Wavefront'), ('snd-ac97-codec', "Universal interface for Audio Codec '97"), ('snd-ak4531-codec', 'Universal routines for AK4531 codec'), ('snd-usb-audio', 'USB Audio'), ('snd-usb-lib', 'USB Audio/MIDI helper module'), ('snd-ice1724', 'VIA ICEnsemble ICE1724/1720 (Envy24HT/PT)'), ('snd-via82xx', 'VIA VT82xx audio'), ('snd-via82xx-modem', 'VIA VT82xx modem'), ('snd-ymfpci', 'Yamaha DS-1 PCI'), ('snd-opl3sa2', 'Yamaha OPL3SA2+')]
class univention.admin.syntax.GroupDN[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a group from LDAP by DN.

udm_modules = ('groups/group',)
use_objects = False
class univention.admin.syntax.GroupDNOrEmpty[source]

Bases: univention.admin.syntax.GroupDN

Syntax to select a group from LDAP by DN or none.

See also

empty_value = True
class univention.admin.syntax.UserDN[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select an user from LDAP by DN.

See also

udm_modules = ('users/user',)
use_objects = False
class univention.admin.syntax.HostDN[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a host from LDAP by DN.

See also

udm_modules = ('computers/computer',)
udm_filter = '!(univentionObjectFlag=docker)'
class univention.admin.syntax.UserID[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select an user from LDAP by numeric user identifier.

See also

udm_modules = ('users/user',)
key = '%(uidNumber)s'
label = '%(username)s'
regex = <_sre.SRE_Pattern object>
static_values = (('0', 'root'),)
use_objects = False
class univention.admin.syntax.GroupID[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a group from LDAP by numeric user identifier.

udm_modules = ('groups/group',)
key = '%(gidNumber)s'
label = '%(name)s'
regex = <_sre.SRE_Pattern object>
static_values = (('0', 'root'),)
use_objects = False
class univention.admin.syntax.PortalComputer[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a UCS host from LDAP by FQDN running the portal service.

udm_modules = ('computers/domaincontroller_master', 'computers/domaincontroller_backup', 'computers/domaincontroller_slave', 'computers/memberserver')
udm_filter = '!(univentionObjectFlag=docker)'
use_objects = False
class univention.admin.syntax.IComputer_FQDN[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a host from LDAP by FQDN.

See also

udm_modules = ()
key = '%(name)s.%(domain)s'
label = '%(name)s.%(domain)s'
regex = <_sre.SRE_Pattern object>
error_message = 'Not a valid FQDN'
udm_filter = '!(univentionObjectFlag=docker)'
simple = True
class univention.admin.syntax.DomainController[source]

Bases: univention.admin.syntax.IComputer_FQDN

Syntax to select a UCS domain controller from LDAP by FQDN.

udm_modules = ('computers/domaincontroller_master', 'computers/domaincontroller_backup', 'computers/domaincontroller_slave')
use_objects = False
class univention.admin.syntax.Windows_Server[source]

Bases: univention.admin.syntax.IComputer_FQDN

Syntax to select a Windows server from LDAP by FQDN.

udm_modules = ('computers/windows', 'computers/windows_domaincontroller')
class univention.admin.syntax.UCS_Server[source]

Bases: univention.admin.syntax.IComputer_FQDN

Syntax to select a UCS host from LDAP by FQDN.

udm_modules = ('computers/domaincontroller_master', 'computers/domaincontroller_backup', 'computers/domaincontroller_slave', 'computers/memberserver')
use_objects = False
class univention.admin.syntax.ServicePrint_FQDN[source]

Bases: univention.admin.syntax.IComputer_FQDN

Syntax to select a UCS host from LDAP by FQDN offering print services.

See also

udm_modules = ('computers/domaincontroller_master', 'computers/domaincontroller_backup', 'computers/domaincontroller_slave', 'computers/memberserver')
udm_filter = '(&(!(univentionObjectFlag=docker))(service=Print))'
class univention.admin.syntax.MailHomeServer[source]

Bases: univention.admin.syntax.IComputer_FQDN

Syntax to select a UCS host from LDAP by FQDN offering IMAP services.

See also

udm_modules = ('computers/computer',)
udm_filter = '(&(!(univentionObjectFlag=docker))(objectClass=univentionHost)(service=IMAP))'
empty_value = True
class univention.admin.syntax.KDE_Profile[source]

Bases: univention.admin.syntax.UDM_Attribute

Syntax to select a KDE profile from lists stored in LDAP using univention.admin.handlers.settings.default.

udm_module = 'settings/default'
attribute = 'defaultKdeProfiles'
class univention.admin.syntax.primaryGroup[source]

Bases: univention.admin.syntax.ldapDn

Syntax to select a group from LDAP.

Deprecated since version 3.1-0: Use GroupDN.

searchFilter = 'objectClass=posixGroup'
description = 'Primary Group'
class univention.admin.syntax.primaryGroup2[source]

Bases: univention.admin.syntax.ldapDn

Syntax to select a group from LDAP.

Deprecated since version 3.1-0: Use GroupDN.

searchFilter = 'objectClass=posixGroup'
description = 'Primary Group'
class univention.admin.syntax.network[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a network declaration from LDAP using univention.admin.handlers.networks.network.

udm_modules = ('networks/network',)
description = 'Network'
label = '%(name)s'
empty_value = True
class univention.admin.syntax.IP_AddressList[source]

Bases: univention.admin.syntax.ipAddress, univention.admin.syntax.select

Syntax to select an IP address from the lists of addresses stored with the machine account.

choices = ()
depends = 'ip'
class univention.admin.syntax.IP_AddressListEmpty[source]

Bases: univention.admin.syntax.IP_AddressList

Syntax to select no or an IP address from the lists of addresses stored with the machine account.

choices = [('', 'From known-hosts pool')]
empty_value = True
classmethod parse(text)[source]
class univention.admin.syntax.MAC_AddressList[source]

Bases: univention.admin.syntax.MAC_Address, univention.admin.syntax.select

Syntax to select a MAC address from the lists of addresses stored with the machine account.

choices = ()
depends = 'mac'
class univention.admin.syntax.DNS_ForwardZone[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select no or one DNS forward zone from LDAP using univention.admin.handlers.dns.forward_zone.

description = 'DNS forward zone'
udm_modules = ('dns/forward_zone',)
empty_value = True
use_objects = False
class univention.admin.syntax.DNS_ReverseZone[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select no or one DNS reverse zone from LDAP using univention.admin.handlers.dns.reverse_zone.

description = 'DNS reverse zone'
udm_modules = ('dns/reverse_zone',)
label = '%(subnet)s'
empty_value = True
use_objects = False
class univention.admin.syntax.DNS_ReverseZoneNonempty[source]

Bases: univention.admin.syntax.DNS_ReverseZone

Syntax to select one DNS reverse zone from LDAP using univention.admin.handlers.dns.reverse_zone.

empty_value = False
class univention.admin.syntax.DNS_ForwardZoneNonempty[source]

Bases: univention.admin.syntax.DNS_ForwardZone

Syntax to select one DNS forward zone from LDAP using univention.admin.handlers.dns.forward_zone.

empty_value = False
class univention.admin.syntax.dnsEntry[source]

Bases: univention.admin.syntax.complex

Syntax to configure a DNS forward zone entry for a computer.

description = 'DNS Entry'
subsyntaxes = (('DNS forward zone', <class 'univention.admin.syntax.DNS_ForwardZoneNonempty'>), ('IP address', <class 'univention.admin.syntax.IP_AddressList'>))
size = ('One', 'One')
min_elements = 1
class univention.admin.syntax.dnsEntryReverse[source]

Bases: univention.admin.syntax.complex

Syntax to configure a DNS reverse zone entry for a computer.

description = 'DNS Entry Reverse'
subsyntaxes = (('DNS reverse zone', <class 'univention.admin.syntax.DNS_ReverseZoneNonempty'>), ('IP address', <class 'univention.admin.syntax.IP_AddressList'>))
size = ('One', 'One')
min_elements = 1
class univention.admin.syntax.DNS_ForwardZoneList[source]

Bases: univention.admin.syntax.select

Syntax to select DNS forward zone for alias entries.

depends = 'dnsEntryZoneForward'
class univention.admin.syntax.dnsEntryAlias[source]

Bases: univention.admin.syntax.complex

Syntax to configure a DNS alias record.

description = 'DNS Entry Alias'
subsyntaxes = (('Zone of existing host record', <class 'univention.admin.syntax.DNS_ForwardZoneList'>), ('DNS forward zone', <class 'univention.admin.syntax.DNS_ForwardZone'>), ('Alias', <class 'univention.admin.syntax.dnsName'>))
size = ('TwoThirds', 'TwoThirds', 'TwoThirds')
class univention.admin.syntax.dhcpService[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a DHCP service from LDAP using univention.admin.handlers.dhcp.service.

udm_modules = ('dhcp/service',)
description = 'DHCP service'
label = '%(name)s'
empty_value = True
class univention.admin.syntax.dhcpEntry[source]

Bases: univention.admin.syntax.complex

Syntax to configure a DHCP host entry.

min_elements = 1
all_required = False
subsyntaxes = (('DHCP service', <class 'univention.admin.syntax.dhcpService'>), ('IP address', <class 'univention.admin.syntax.IP_AddressListEmpty'>), ('MAC address', <class 'univention.admin.syntax.MAC_AddressList'>))
description = 'DHCP Entry'
size = ('TwoThirds', 'TwoThirds', 'TwoThirds')
classmethod parse(text)[source]
class univention.admin.syntax.DHCP_Option[source]

Bases: univention.admin.syntax.complex

Syntax to enter free-form DHCP options.

subsyntaxes = (('Name', <class 'univention.admin.syntax.string'>), ('Value', <class 'univention.admin.syntax.string'>))
description = 'DHCP option'
size = ('One', 'One')
class univention.admin.syntax.WritableShare[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax for selecting defined writeable NFS shares.

See also

udm_modules = ('shares/share',)
udm_filter = 'writeable=1'
label = '%(name)s (%(path)s on %(host)s)'
size = 'OneAndAHalf'
empty_value = True
use_objects = False
class univention.admin.syntax.AllowDenyIgnore[source]

Bases: univention.admin.syntax.select

Syntax class for a tri-state select between allow, deny and ignore.

choices = [('', ''), ('allow', 'allow'), ('deny', 'deny'), ('ignore', 'ignore')]
class univention.admin.syntax.IStates[source]

Bases: univention.admin.syntax.select

Base syntax to select item from list of choices with a mapping between Python and LDAP values.

values = []

Map Python type to 2-tuple (LDAP-value, translated-text).

choices = []
classmethod parse(text)[source]
classmethod get_object_property_filter(object_property, object_property_value)[source]
classmethod sanitize_property_search_value(search_value)[source]
class univention.admin.syntax.AllowDeny[source]

Bases: univention.admin.syntax.IStates

Syntax class for a tri-state select between None, “allow” and “deny”.

values = ((None, ('', '')), (True, ('allow', 'allow')), (False, ('deny', 'deny')))
class univention.admin.syntax.booleanNone[source]

Bases: univention.admin.syntax.IStates

Syntax class for a tri-state select between None, “yes” and “no”.

values = ((None, ('', '')), (True, ('yes', 'Yes')), (False, ('no', 'No')))
class univention.admin.syntax.auto_one_zero[source]

Bases: univention.admin.syntax.select

Syntax class for a tri-state select between “Auto”, “Yes” and “No”.

choices = [('Auto', 'Auto'), ('1', 'Yes'), ('0', 'No')]
class univention.admin.syntax.TrueFalse[source]

Bases: univention.admin.syntax.IStates

Syntax class for a tri-state select between None, “true” and “false”.

values = ((None, ('', '')), (True, ('true', 'True')), (False, ('false', 'False')))
class univention.admin.syntax.TrueFalseUpper[source]

Bases: univention.admin.syntax.IStates

Syntax class for a tri-state select between None, “TRUE” and “FALSE”.

values = ((None, ('', '')), (True, ('TRUE', 'True')), (False, ('FALSE', 'False')))
class univention.admin.syntax.TrueFalseUp[source]

Bases: univention.admin.syntax.IStates

Syntax for bool’ean value matching LDAP boolean (OID 1.3.6.1.4.1.1466.115.121.1.7).

values = ((True, ('TRUE', 'True')), (False, ('FALSE', 'False')))
class univention.admin.syntax.AppActivatedTrue[source]

Bases: univention.admin.syntax.TrueFalseUp

class univention.admin.syntax.OkOrNot[source]

Bases: univention.admin.syntax.IStates

Syntax class to a boolean select between “OK” and “Not”.

values = ((True, ('OK', 'OK')), (False, ('Not', 'Not OK')))
class univention.admin.syntax.AppActivatedOK[source]

Bases: univention.admin.syntax.OkOrNot

class univention.admin.syntax.ddnsUpdateStyle[source]

Bases: univention.admin.syntax.select

Syntax to select the DHCP dynamic DNS update style.

choices = [('', ''), ('ad-hoc', 'ad-hoc'), ('interim', 'interim'), ('none', 'none')]
class univention.admin.syntax.ddnsUpdates[source]

Bases: univention.admin.syntax.IStates

Syntax class for a tri-state select between None, “on” and “off”.

values = ((None, ('', '')), (True, ('on', 'on')), (False, ('off', 'off')))
class univention.admin.syntax.netbiosNodeType[source]

Bases: univention.admin.syntax.select

Syntax to select the Windows name server mode.

choices = [('', ''), ('1', '1 B-node: Broadcast - no WINS'), ('2', '2 P-node: Peer - WINS only'), ('4', '4 M-node: Mixed - broadcast, then WINS'), ('8', '8 H-node: Hybrid - WINS, then broadcast')]
class univention.admin.syntax.kdeProfile[source]

Bases: univention.admin.syntax.select

Syntax to select KDE profile type.

choices = [('', 'none'), ('/home/kde.restricted', 'restricted'), ('/home/kde.lockeddown', 'locked down')]
class univention.admin.syntax.language[source]

Bases: univention.admin.syntax.select

Syntax for selecting a language by name.

choices = [('', ''), ('af_ZA', 'Afrikaans/South Africa'), ('af_ZA.UTF-8', 'Afrikaans/South Africa(UTF-8)'), ('sq_AL', 'Albanian/Albania'), ('sq_AL.UTF-8', 'Albanian/Albania(UTF-8)'), ('am_ET', 'Amharic/Ethiopia'), ('ar_DZ', 'Arabic/Algeria'), ('ar_DZ.UTF-8', 'Arabic/Algeria(UTF-8)'), ('ar_BH', 'Arabic/Bahrain'), ('ar_BH.UTF-8', 'Arabic/Bahrain(UTF-8)'), ('ar_EG', 'Arabic/Egypt'), ('ar_EG.UTF-8', 'Arabic/Egypt(UTF-8)'), ('ar_IN', 'Arabic/India'), ('ar_IQ', 'Arabic/Iraq'), ('ar_IQ.UTF-8', 'Arabic/Iraq(UTF-8)'), ('ar_JO', 'Arabic/Jordan'), ('ar_JO.UTF-8', 'Arabic/Jordan(UTF-8)'), ('ar_KW', 'Arabic/Kuwait'), ('ar_KW.UTF-8', 'Arabic/Kuwait(UTF-8)'), ('ar_LB', 'Arabic/Lebanon'), ('ar_LB.UTF-8', 'Arabic/Lebanon(UTF-8)'), ('ar_LY', 'Arabic/Libyan Arab Jamahiriya'), ('ar_LY.UTF-8', 'Arabic/Libyan Arab Jamahiriya(UTF-8)'), ('ar_MA', 'Arabic/Morocco'), ('ar_MA.UTF-8', 'Arabic/Morocco(UTF-8)'), ('ar_OM', 'Arabic/Oman'), ('ar_OM.UTF-8', 'Arabic/Oman(UTF-8)'), ('ar_QA', 'Arabic/Qatar'), ('ar_QA.UTF-8', 'Arabic/Qatar(UTF-8)'), ('ar_SA', 'Arabic/Saudi Arabia'), ('ar_SA.UTF-8', 'Arabic/Saudi Arabia(UTF-8)'), ('ar_SD', 'Arabic/Sudan'), ('ar_SD.UTF-8', 'Arabic/Sudan(UTF-8)'), ('ar_SY', 'Arabic/Syrian Arab Republic'), ('ar_SY.UTF-8', 'Arabic/Syrian Arab Republic(UTF-8)'), ('ar_TN', 'Arabic/Tunisia'), ('ar_TN.UTF-8', 'Arabic/Tunisia(UTF-8)'), ('ar_AE', 'Arabic/United Arab Emirates'), ('ar_AE.UTF-8', 'Arabic/United Arab Emirates(UTF-8)'), ('ar_YE', 'Arabic/Yemen'), ('ar_YE.UTF-8', 'Arabic/Yemen(UTF-8)'), ('an_ES', 'Aragonese/Spain'), ('an_ES.UTF-8', 'Aragonese/Spain(UTF-8)'), ('hy_AM', 'Armenian/Armenia'), ('az_AZ', 'Azeri/Azerbaijan'), ('eu_ES@euro', 'Basque/Spain'), ('eu_ES.UTF-8', 'Basque/Spain(UTF-8)'), ('be_BY', 'Belarusian/Belarus'), ('be_BY.UTF-8', 'Belarusian/Belarus(UTF-8)'), ('bn_BD', 'Bengali/BD'), ('bn_IN', 'Bengali/India'), ('bs_BA', 'Bosnian/Bosnia and Herzegowina'), ('bs_BA.UTF-8', 'Bosnian/Bosnia and Herzegowina(UTF-8)'), ('br_FR@euro', 'Breton/France'), ('br_FR.UTF-8', 'Breton/France(UTF-8)'), ('bg_BG', 'Bulgarian/Bulgaria'), ('bg_BG.UTF-8', 'Bulgarian/Bulgaria(UTF-8)'), ('ca_ES@euro', 'Catalan/Spain'), ('ca_ES.UTF-8', 'Catalan/Spain(UTF-8)'), ('zh_HK', 'Chinese/Hong Kong'), ('zh_HK.UTF-8', 'Chinese/Hong Kong(UTF-8)'), ('zh_CN', 'Chinese/P.R. of China'), ('zh_CN.UTF-8', 'Chinese/P.R. of China(UTF-8)'), ('zh_SG', 'Chinese/Singapore'), ('zh_SG.UTF-8', 'Chinese/Singapore(UTF-8)'), ('zh_TW', 'Chinese/Taiwan R.O.C.'), ('zh_TW.UTF-8', 'Chinese/Taiwan R.O.C.(UTF-8)'), ('kw_GB', 'Cornish/Britain'), ('kw_GB.UTF-8', 'Cornish/Britain(UTF-8)'), ('hr_HR', 'Croatian/Croatia'), ('hr_HR.UTF-8', 'Croatian/Croatia(UTF-8)'), ('cs_CZ', 'Czech/Czech Republic'), ('cs_CZ.UTF-8', 'Czech/Czech Republic(UTF-8)'), ('da_DK', 'Danish/Denmark'), ('da_DK.UTF-8', 'Danish/Denmark(UTF-8)'), ('nl_BE@euro', 'Dutch/Belgium'), ('nl_BE.UTF-8', 'Dutch/Belgium(UTF-8)'), ('nl_NL@euro', 'Dutch/Netherlands'), ('nl_NL.UTF-8', 'Dutch/Netherlands(UTF-8)'), ('en_AU', 'English/Australia'), ('en_AU.UTF-8', 'English/Australia(UTF-8)'), ('en_BW', 'English/Botswana'), ('en_BW.UTF-8', 'English/Botswana(UTF-8)'), ('en_CA', 'English/Canada'), ('en_CA.UTF-8', 'English/Canada(UTF-8)'), ('en_DK', 'English/Denmark'), ('en_DK.UTF-8', 'English/Denmark(UTF-8)'), ('en_GB', 'English/Great Britain'), ('en_GB.UTF-8', 'English/Great Britain(UTF-8)'), ('en_HK', 'English/Hong Kong'), ('en_HK.UTF-8', 'English/Hong Kong(UTF-8)'), ('en_IN', 'English/India'), ('en_IE@euro', 'English/Ireland'), ('en_IE.UTF-8', 'English/Ireland(UTF-8)'), ('en_NZ', 'English/New Zealand'), ('en_NZ.UTF-8', 'English/New Zealand(UTF-8)'), ('en_PH', 'English/Philippines'), ('en_PH.UTF-8', 'English/Philippines(UTF-8)'), ('en_SG', 'English/Singapore'), ('en_SG.UTF-8', 'English/Singapore(UTF-8)'), ('en_ZA', 'English/South Africa'), ('en_ZA.UTF-8', 'English/South Africa(UTF-8)'), ('en_US', 'English/USA'), ('en_US.UTF-8', 'English/USA(UTF-8)'), ('en_ZW', 'English/Zimbabwe'), ('en_ZW.UTF-8', 'English/Zimbabwe(UTF-8)'), ('eo_EO', 'Esperanto/Esperanto'), ('et_EE', 'Estonian/Estonia'), ('et_EE.UTF-8', 'Estonian/Estonia(UTF-8)'), ('fo_FO', 'Faroese/Faroe Islands'), ('fo_FO.UTF-8', 'Faroese/Faroe Islands(UTF-8)'), ('fi_FI@euro', 'Finnish/Finland'), ('fi_FI.UTF-8', 'Finnish/Finland(UTF-8)'), ('fr_BE@euro', 'French/Belgium'), ('fr_BE.UTF-8', 'French/Belgium(UTF-8)'), ('fr_CA', 'French/Canada'), ('fr_CA.UTF-8', 'French/Canada(UTF-8)'), ('fr_FR@euro', 'French/France'), ('fr_FR.UTF-8', 'French/France(UTF-8)'), ('fr_LU@euro', 'French/Luxemburg'), ('fr_LU.UTF-8', 'French/Luxemburg(UTF-8)'), ('fr_CH', 'French/Switzerland'), ('fr_CH.UTF-8', 'French/Switzerland(UTF-8)'), ('gl_ES@euro', 'Galician/Spain'), ('gl_ES.UTF-8', 'Galician/Spain(UTF-8)'), ('ka_GE', 'Georgian/Georgia'), ('ka_GE.UTF-8', 'Georgian/Georgia(UTF-8)'), ('de_AT@euro', 'German/Austria'), ('de_AT.UTF-8', 'German/Austria(UTF-8)'), ('de_BE@euro', 'German/Belgium'), ('de_BE.UTF-8', 'German/Belgium(UTF-8)'), ('de_DE', 'German/Germany'), ('de_DE.UTF-8', 'German/Germany(UTF-8)'), ('de_DE@euro', 'German/Germany(euro)'), ('de_LU@euro', 'German/Luxemburg'), ('de_LU.UTF-8', 'German/Luxemburg(UTF-8)'), ('de_CH', 'German/Switzerland'), ('de_CH.UTF-8', 'German/Switzerland(UTF-8)'), ('el_GR@euro', 'Greek/Greece'), ('el_GR.UTF-8', 'Greek/Greece(UTF-8)'), ('kl_GL', 'Greenlandic/Greenland'), ('kl_GL.UTF-8', 'Greenlandic/Greenland(UTF-8)'), ('iw_IL', 'Hebrew/Israel'), ('iw_IL.UTF-8', 'Hebrew/Israel(UTF-8)'), ('he_IL', 'Hebrew/Israel'), ('he_IL.UTF-8', 'Hebrew/Israel(UTF-8)'), ('hi_IN', 'Hindi/India'), ('hu_HU', 'Hungarian/Hungary'), ('hu_HU.UTF-8', 'Hungarian/Hungary(UTF-8)'), ('is_IS', 'Icelandic/Iceland'), ('is_IS.UTF-8', 'Icelandic/Iceland(UTF-8)'), ('id_ID', 'Indonesian/Indonesia'), ('id_ID.UTF-8', 'Indonesian/Indonesia(UTF-8)'), ('ga_IE@euro', 'Irish/Ireland'), ('ga_IE.UTF-8', 'Irish/Ireland(UTF-8)'), ('it_IT@euro', 'Italian/Italy'), ('it_IT.UTF-8', 'Italian/Italy(UTF-8)'), ('it_CH', 'Italian/Switzerland'), ('it_CH.UTF-8', 'Italian/Switzerland(UTF-8)'), ('ja_JP', 'Japanese/Japan'), ('ko_KR', 'Korean/Republic of Korea'), ('lo_LA', 'Lao/Laos'), ('lv_LV', 'Latvian/Latvia'), ('lv_LV.UTF-8', 'Latvian/Latvia(UTF-8)'), ('lt_LT', 'Lithuanian/Lithuania'), ('lt_LT.UTF-8', 'Lithuanian/Lithuania(UTF-8)'), ('lug_UG', 'Luganda/Uganda'), ('mk_MK', 'Macedonian/Macedonia'), ('mk_MK.UTF-8', 'Macedonian/Macedonia(UTF-8)'), ('ms_MY', 'Malay/Malaysia'), ('ms_MY.UTF-8', 'Malay/Malaysia(UTF-8)'), ('ml_IN', 'Malayalam/India'), ('mt_MT', 'Maltese/malta'), ('mt_MT.UTF-8', 'Maltese/malta(UTF-8)'), ('gv_GB', 'Manx Gaelic/Britain'), ('gv_GB.UTF-8', 'Manx Gaelic/Britain(UTF-8)'), ('mi_NZ', 'Maori/New Zealand'), ('mi_NZ.UTF-8', 'Maori/New Zealand(UTF-8)'), ('mr_IN', 'Marathi/India'), ('mn_MN', 'Mongolian/Mongolia'), ('se_NO', 'Northern Saami/Norway'), ('nn_NO', 'Norwegian, Nynorsk/Norway'), ('nn_NO.UTF-8', 'Norwegian, Nynorsk/Norway(UTF-8)'), ('no_NO', 'Norwegian/Norway'), ('no_NO.UTF-8', 'Norwegian/Norway(UTF-8)'), ('oc_FR', 'Occitan/France'), ('oc_FR.UTF-8', 'Occitan/France(UTF-8)'), ('fa_IR', 'Persian/Iran'), ('pl_PL', 'Polish/Poland'), ('pl_PL.UTF-8', 'Polish/Poland(UTF-8)'), ('pt_BR', 'Portuguese/Brasil'), ('pt_BR.UTF-8', 'Portuguese/Brasil(UTF-8)'), ('pt_PT@euro', 'Portuguese/Portugal'), ('pt_PT.UTF-8', 'Portuguese/Portugal(UTF-8)'), ('ro_RO', 'Romanian/Romania'), ('ro_RO.UTF-8', 'Romanian/Romania(UTF-8)'), ('ru_RU', 'Russian/Russia'), ('ru_RU.UTF-8', 'Russian/Russia(UTF-8)'), ('ru_UA', 'Russian/Ukraine'), ('ru_UA.UTF-8', 'Russian/Ukraine(UTF-8)'), ('gd_GB', 'Scots Gaelic/Great Britain'), ('gd_GB.UTF-8', 'Scots Gaelic/Great Britain(UTF-8)'), ('sr_YU@cyrillic', 'Serbian/Yugoslavia'), ('sk_SK', 'Slovak/Slovak'), ('sk_SK.UTF-8', 'Slovak/Slovak(UTF-8)'), ('sl_SI', 'Slovenian/Slovenia'), ('sl_SI.UTF-8', 'Slovenian/Slovenia(UTF-8)'), ('st_ZA', 'Sotho/South Africa'), ('st_ZA.UTF-8', 'Sotho/South Africa(UTF-8)'), ('es_AR', 'Spanish/Argentina'), ('es_AR.UTF-8', 'Spanish/Argentina(UTF-8)'), ('es_BO', 'Spanish/Bolivia'), ('es_BO.UTF-8', 'Spanish/Bolivia(UTF-8)'), ('es_CL', 'Spanish/Chile'), ('es_CL.UTF-8', 'Spanish/Chile(UTF-8)'), ('es_CO', 'Spanish/Colombia'), ('es_CO.UTF-8', 'Spanish/Colombia(UTF-8)'), ('es_CR', 'Spanish/Costa Rica'), ('es_CR.UTF-8', 'Spanish/Costa Rica(UTF-8)'), ('es_DO', 'Spanish/Dominican Republic'), ('es_DO.UTF-8', 'Spanish/Dominican Republic(UTF-8)'), ('es_EC', 'Spanish/Ecuador'), ('es_EC.UTF-8', 'Spanish/Ecuador(UTF-8)'), ('es_SV', 'Spanish/El Salvador'), ('es_SV.UTF-8', 'Spanish/El Salvador(UTF-8)'), ('es_GT', 'Spanish/Guatemala'), ('es_GT.UTF-8', 'Spanish/Guatemala(UTF-8)'), ('es_HN', 'Spanish/Honduras'), ('es_HN.UTF-8', 'Spanish/Honduras(UTF-8)'), ('es_MX', 'Spanish/Mexico'), ('es_MX.UTF-8', 'Spanish/Mexico(UTF-8)'), ('es_NI', 'Spanish/Nicaragua'), ('es_NI.UTF-8', 'Spanish/Nicaragua(UTF-8)'), ('es_PA', 'Spanish/Panama'), ('es_PA.UTF-8', 'Spanish/Panama(UTF-8)'), ('es_PY', 'Spanish/Paraguay'), ('es_PY.UTF-8', 'Spanish/Paraguay(UTF-8)'), ('es_PE', 'Spanish/Peru'), ('es_PE.UTF-8', 'Spanish/Peru(UTF-8)'), ('es_PR', 'Spanish/Puerto Rico'), ('es_PR.UTF-8', 'Spanish/Puerto Rico(UTF-8)'), ('es_ES@euro', 'Spanish/Spain'), ('es_ES.UTF-8', 'Spanish/Spain(UTF-8)'), ('es_US', 'Spanish/USA'), ('es_US.UTF-8', 'Spanish/USA(UTF-8)'), ('es_UY', 'Spanish/Uruguay'), ('es_UY.UTF-8', 'Spanish/Uruguay(UTF-8)'), ('es_VE', 'Spanish/Venezuela'), ('es_VE.UTF-8', 'Spanish/Venezuela(UTF-8)'), ('sv_FI@euro', 'Swedish/Finland'), ('sv_FI.UTF-8', 'Swedish/Finland(UTF-8)'), ('sv_SE', 'Swedish/Sweden'), ('sv_SE.UTF-8', 'Swedish/Sweden(UTF-8)'), ('tl_PH', 'Tagalog/Philippines'), ('tl_PH.UTF-8', 'Tagalog/Philippines(UTF-8)'), ('tg_TJ', 'Tajik/Tajikistan'), ('tg_TJ.UTF-8', 'Tajik/Tajikistan(UTF-8)'), ('ta_IN', 'Tamil/India'), ('tt_RU', 'Tatar/Tatarstan'), ('te_IN', 'Telgu/India'), ('th_TH', 'Thai/Thailand'), ('th_TH.UTF-8', 'Thai/Thailand(UTF-8)'), ('ti_ER', 'Tigrigna/Eritrea'), ('ti_ET', 'Tigrigna/Ethiopia'), ('tr_TR', 'Turkish/Turkey'), ('tr_TR.UTF-8', 'Turkish/Turkey(UTF-8)'), ('uk_UA', 'Ukrainian/Ukraine'), ('uk_UA.UTF-8', 'Ukrainian/Ukraine(UTF-8)'), ('ur_PK', 'Urdu/Pakistan'), ('uz_UZ', 'Uzbek/Uzbekistan'), ('uz_UZ.UTF-8', 'Uzbek/Uzbekistan(UTF-8)'), ('vi_VN', 'Vietnamese/Vietnam'), ('wa_BE@euro', 'Walloon/Belgium'), ('wa_BE.UTF-8', 'Walloon/Belgium(UTF-8)'), ('cy_GB', 'Welsh/Great Britain'), ('cy_GB.UTF-8', 'Welsh/Great Britain(UTF-8)'), ('xh_ZA', 'Xhosa/South Africa'), ('xh_ZA.UTF-8', 'Xhosa/South Africa(UTF-8)'), ('yi_US', 'Yiddish/USA'), ('yi_US.UTF-8', 'Yiddish/USA(UTF-8)'), ('zu_ZA', 'Zulu/South Africa'), ('zu_ZA.UTF-8', 'Zulu/South Africa(UTF-8)')]
class univention.admin.syntax.Month[source]

Bases: univention.admin.syntax.select

Syntax to select the month of a year.

choices = [('', ''), ('all', 'all'), ('January', 'January'), ('February', 'February'), ('March', 'March'), ('April', 'April'), ('May', 'May'), ('June', 'June'), ('July', 'July'), ('August', 'August'), ('September', 'September'), ('October', 'October'), ('November', 'November'), ('December', 'December')]
class univention.admin.syntax.Weekday[source]

Bases: univention.admin.syntax.select

Syntax to select the day of a week.

choices = [('', ''), ('all', 'all'), ('Monday', 'Monday'), ('Tuesday', 'Tuesday'), ('Wednesday', 'Wednesday'), ('Thursday', 'Thursday'), ('Friday', 'Friday'), ('Saturday', 'Saturday'), ('Sunday', 'Sunday')]
class univention.admin.syntax.Day[source]

Bases: univention.admin.syntax.select

Syntax to select the day of a month.

choices = [('', ''), ('all', 'all'), ('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15'), ('16', '16'), ('17', '17'), ('18', '18'), ('19', '19'), ('20', '20'), ('21', '21'), ('22', '22'), ('23', '23'), ('24', '24'), ('25', '25'), ('26', '26'), ('27', '27'), ('28', '28'), ('29', '29'), ('30', '30'), ('31', '31')]
class univention.admin.syntax.Hour[source]

Bases: univention.admin.syntax.select

Syntax to select the hour of a day or all or none.

choices = [('', ''), ('all', 'all'), ('00', '0'), ('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15'), ('16', '16'), ('17', '17'), ('18', '18'), ('19', '19'), ('20', '20'), ('21', '21'), ('22', '22'), ('23', '23')]
class univention.admin.syntax.HourSimple[source]

Bases: univention.admin.syntax.select

Syntax to select the hour of a day.

choices = [('00', '0'), ('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15'), ('16', '16'), ('17', '17'), ('18', '18'), ('19', '19'), ('20', '20'), ('21', '21'), ('22', '22'), ('23', '23')]
class univention.admin.syntax.Minute[source]

Bases: univention.admin.syntax.select

Syntax to select the minute of a hour or all or none.

choices = [('', ''), ('all', 'all'), ('00', '0'), ('5', '5'), ('10', '10'), ('15', '15'), ('20', '20'), ('25', '25'), ('30', '30'), ('35', '35'), ('40', '40'), ('45', '45'), ('50', '50'), ('55', '55')]
class univention.admin.syntax.MinuteSimple[source]

Bases: univention.admin.syntax.select

Syntax to select the minute of a hour.

choices = [('00', '0'), ('5', '5'), ('10', '10'), ('15', '15'), ('20', '20'), ('25', '25'), ('30', '30'), ('35', '35'), ('40', '40'), ('45', '45'), ('50', '50'), ('55', '55')]
class univention.admin.syntax.UNIX_AccessRight[source]

Bases: univention.admin.syntax.simple

Syntax to configure UNIX file permissions.

class univention.admin.syntax.UNIX_AccessRight_extended[source]

Bases: univention.admin.syntax.simple

Syntax to configure UNIX file permissions including setUID, setGID and sticky bits.

See also

class univention.admin.syntax.sambaGroupType[source]

Bases: univention.admin.syntax.select

Syntax to select Samba group type.

choices = [('', ''), ('2', 'Domain Group'), ('3', 'Local Group'), ('5', 'Well-Known Group')]
class univention.admin.syntax.adGroupType[source]

Bases: univention.admin.syntax.select

Syntax to select Active Directory group type.

choices = [('', ''), ('-2147483643', 'Local (Type: Security)'), ('-2147483646', 'Global (Type: Security)'), ('-2147483640', 'Universal (Type: Security)'), ('-2147483644', 'Domain local (Type: Security)'), ('4', 'Local (Type: Distribution)'), ('2', 'Global (Type: Distribution)'), ('8', 'Universal (Type: Distribution)')]
class univention.admin.syntax.SambaLogonHours[source]

Bases: univention.admin.syntax.MultiSelect

Syntax to select hour slots per day for Samba login.

choices = [(0, 'Sun 0-1'), (1, 'Sun 1-2'), (2, 'Sun 2-3'), (3, 'Sun 3-4'), (4, 'Sun 4-5'), (5, 'Sun 5-6'), (6, 'Sun 6-7'), (7, 'Sun 7-8'), (8, 'Sun 8-9'), (9, 'Sun 9-10'), (10, 'Sun 10-11'), (11, 'Sun 11-12'), (12, 'Sun 12-13'), (13, 'Sun 13-14'), (14, 'Sun 14-15'), (15, 'Sun 15-16'), (16, 'Sun 16-17'), (17, 'Sun 17-18'), (18, 'Sun 18-19'), (19, 'Sun 19-20'), (20, 'Sun 20-21'), (21, 'Sun 21-22'), (22, 'Sun 22-23'), (23, 'Sun 23-24'), (24, 'Mon 0-1'), (25, 'Mon 1-2'), (26, 'Mon 2-3'), (27, 'Mon 3-4'), (28, 'Mon 4-5'), (29, 'Mon 5-6'), (30, 'Mon 6-7'), (31, 'Mon 7-8'), (32, 'Mon 8-9'), (33, 'Mon 9-10'), (34, 'Mon 10-11'), (35, 'Mon 11-12'), (36, 'Mon 12-13'), (37, 'Mon 13-14'), (38, 'Mon 14-15'), (39, 'Mon 15-16'), (40, 'Mon 16-17'), (41, 'Mon 17-18'), (42, 'Mon 18-19'), (43, 'Mon 19-20'), (44, 'Mon 20-21'), (45, 'Mon 21-22'), (46, 'Mon 22-23'), (47, 'Mon 23-24'), (48, 'Tue 0-1'), (49, 'Tue 1-2'), (50, 'Tue 2-3'), (51, 'Tue 3-4'), (52, 'Tue 4-5'), (53, 'Tue 5-6'), (54, 'Tue 6-7'), (55, 'Tue 7-8'), (56, 'Tue 8-9'), (57, 'Tue 9-10'), (58, 'Tue 10-11'), (59, 'Tue 11-12'), (60, 'Tue 12-13'), (61, 'Tue 13-14'), (62, 'Tue 14-15'), (63, 'Tue 15-16'), (64, 'Tue 16-17'), (65, 'Tue 17-18'), (66, 'Tue 18-19'), (67, 'Tue 19-20'), (68, 'Tue 20-21'), (69, 'Tue 21-22'), (70, 'Tue 22-23'), (71, 'Tue 23-24'), (72, 'Wed 0-1'), (73, 'Wed 1-2'), (74, 'Wed 2-3'), (75, 'Wed 3-4'), (76, 'Wed 4-5'), (77, 'Wed 5-6'), (78, 'Wed 6-7'), (79, 'Wed 7-8'), (80, 'Wed 8-9'), (81, 'Wed 9-10'), (82, 'Wed 10-11'), (83, 'Wed 11-12'), (84, 'Wed 12-13'), (85, 'Wed 13-14'), (86, 'Wed 14-15'), (87, 'Wed 15-16'), (88, 'Wed 16-17'), (89, 'Wed 17-18'), (90, 'Wed 18-19'), (91, 'Wed 19-20'), (92, 'Wed 20-21'), (93, 'Wed 21-22'), (94, 'Wed 22-23'), (95, 'Wed 23-24'), (96, 'Thu 0-1'), (97, 'Thu 1-2'), (98, 'Thu 2-3'), (99, 'Thu 3-4'), (100, 'Thu 4-5'), (101, 'Thu 5-6'), (102, 'Thu 6-7'), (103, 'Thu 7-8'), (104, 'Thu 8-9'), (105, 'Thu 9-10'), (106, 'Thu 10-11'), (107, 'Thu 11-12'), (108, 'Thu 12-13'), (109, 'Thu 13-14'), (110, 'Thu 14-15'), (111, 'Thu 15-16'), (112, 'Thu 16-17'), (113, 'Thu 17-18'), (114, 'Thu 18-19'), (115, 'Thu 19-20'), (116, 'Thu 20-21'), (117, 'Thu 21-22'), (118, 'Thu 22-23'), (119, 'Thu 23-24'), (120, 'Fri 0-1'), (121, 'Fri 1-2'), (122, 'Fri 2-3'), (123, 'Fri 3-4'), (124, 'Fri 4-5'), (125, 'Fri 5-6'), (126, 'Fri 6-7'), (127, 'Fri 7-8'), (128, 'Fri 8-9'), (129, 'Fri 9-10'), (130, 'Fri 10-11'), (131, 'Fri 11-12'), (132, 'Fri 12-13'), (133, 'Fri 13-14'), (134, 'Fri 14-15'), (135, 'Fri 15-16'), (136, 'Fri 16-17'), (137, 'Fri 17-18'), (138, 'Fri 18-19'), (139, 'Fri 19-20'), (140, 'Fri 20-21'), (141, 'Fri 21-22'), (142, 'Fri 22-23'), (143, 'Fri 23-24'), (144, 'Sat 0-1'), (145, 'Sat 1-2'), (146, 'Sat 2-3'), (147, 'Sat 3-4'), (148, 'Sat 4-5'), (149, 'Sat 5-6'), (150, 'Sat 6-7'), (151, 'Sat 7-8'), (152, 'Sat 8-9'), (153, 'Sat 9-10'), (154, 'Sat 10-11'), (155, 'Sat 11-12'), (156, 'Sat 12-13'), (157, 'Sat 13-14'), (158, 'Sat 14-15'), (159, 'Sat 15-16'), (160, 'Sat 16-17'), (161, 'Sat 17-18'), (162, 'Sat 18-19'), (163, 'Sat 19-20'), (164, 'Sat 20-21'), (165, 'Sat 21-22'), (166, 'Sat 22-23'), (167, 'Sat 23-24')]
classmethod parse(value)[source]
day = 'Sat'
hour = 23
idx = 6
class univention.admin.syntax.SambaPrivileges[source]

Bases: univention.admin.syntax.select

Syntax to select Samba privileges.

empty_value = True
choices = [('SeMachineAccountPrivilege', 'Add machines to domain'), ('SeSecurityPrivilege', 'Manage auditing and security log'), ('SeTakeOwnershipPrivilege', 'Take ownership of files or other objects'), ('SeBackupPrivilege', 'Back up files and directories'), ('SeRestorePrivilege', 'Restore files and directories'), ('SeRemoteShutdownPrivilege', 'Force shutdown from a remote system'), ('SePrintOperatorPrivilege', 'Manage printers'), ('SeAddUsersPrivilege', 'Add users and groups to the domain'), ('SeDiskOperatorPrivilege', 'Manage disk shares')]
class univention.admin.syntax.UCSServerRole[source]

Bases: univention.admin.syntax.select

Syntax to select UCS server role.

empty_value = True
choices = [('domaincontroller_master', 'Domaincontroller Master'), ('domaincontroller_backup', 'Domaincontroller Backup'), ('domaincontroller_slave', 'Domaincontroller Slave'), ('memberserver', 'Memberserver')]
class univention.admin.syntax.ServiceMail[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a UCS host from LDAP by DN offering SMTP services.

See also

udm_modules = ('computers/domaincontroller_master', 'computers/domaincontroller_backup', 'computers/domaincontroller_slave', 'computers/memberserver')
udm_filter = '(&(!(univentionObjectFlag=docker))(service=SMTP))'
class univention.admin.syntax.ServicePrint[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a UCS host from LDAP by DN offering print services.

udm_modules = ('computers/domaincontroller_master', 'computers/domaincontroller_backup', 'computers/domaincontroller_slave', 'computers/memberserver')
udm_filter = '(&(!(univentionObjectFlag=docker))(service=Print))'
class univention.admin.syntax.Service[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a UCS service types from LDAP using univention.admin.handlers.settings.service.

udm_modules = ('settings/service',)
regex = None
key = '%(name)s'
label = '%(name)s'
simple = True
class univention.admin.syntax.nfssync[source]

Bases: univention.admin.syntax.select

Syntax to select the NFS synchronization type.

choices = [('sync', 'synchronous'), ('async', 'asynchronous')]
class univention.admin.syntax.univentionAdminModules[source]

Bases: univention.admin.syntax.select

Syntax for selecting an UDM module.

choices = [('appcenter/app', 'Appcenter: App Metadata'), ('computers/domaincontroller_backup', 'Computer: Domain Controller Backup'), ('computers/domaincontroller_master', 'Computer: Domain Controller Master'), ('computers/domaincontroller_slave', 'Computer: Domain Controller Slave'), ('computers/trustaccount', 'Computer: Domain trust account'), ('computers/ipmanagedclient', 'Computer: IP managed client'), ('computers/linux', 'Computer: Linux'), ('computers/macos', 'Computer: Mac OS X Client'), ('computers/memberserver', 'Computer: Member Server'), ('computers/ubuntu', 'Computer: Ubuntu'), ('computers/windows_domaincontroller', 'Computer: Windows Domaincontroller'), ('computers/windows', 'Computer: Windows Workstation/Server'), ('users/contact', 'Contact'), ('container/cn', 'Container: Container'), ('container/dc', 'Container: Domain'), ('container/msgpo', 'Container: MS Group Policy'), ('container/ou', 'Container: Organisational Unit'), ('dhcp/host', 'DHCP: Host'), ('dhcp/pool', 'DHCP: Pool'), ('dhcp/server', 'DHCP: Server'), ('dhcp/service', 'DHCP: Service'), ('dhcp/shared', 'DHCP: Shared network'), ('dhcp/sharedsubnet', 'DHCP: Shared subnet'), ('dhcp/subnet', 'DHCP: Subnet'), ('dns/alias', 'DNS: Alias record'), ('dns/forward_zone', 'DNS: Forward lookup zone'), ('dns/host_record', 'DNS: Host Record'), ('dns/ns_record', 'DNS: NS Record'), ('dns/ptr_record', 'DNS: Pointer record'), ('dns/reverse_zone', 'DNS: Reverse lookup zone'), ('dns/srv_record', 'DNS: Service record'), ('dns/txt_record', 'DNS: TXT Record'), ('settings/data', 'Data'), ('groups/group', 'Group'), ('test/ip_phone', u'IP-Phone'), ('kerberos/kdcentry', 'Kerberos: KDC Entry'), ('mail/domain', 'Mail domain'), ('mail/folder', 'Mail folder (IMAP)'), ('mail/lists', 'Mailing list'), ('nagios/service', 'Nagios service'), ('nagios/timeperiod', 'Nagios time period'), ('networks/network', 'Networks: Network'), ('policies/release', 'Policy: Automatic updates'), ('policies/autostart', 'Policy: Autostart'), ('policies/dhcp_scope', 'Policy: DHCP Allow/Deny'), ('policies/dhcp_boot', 'Policy: DHCP Boot'), ('policies/dhcp_dns', 'Policy: DHCP DNS'), ('policies/dhcp_dnsupdate', 'Policy: DHCP Dynamic DNS'), ('policies/dhcp_netbios', 'Policy: DHCP NetBIOS'), ('policies/dhcp_leasetime', 'Policy: DHCP lease time'), ('policies/dhcp_routing', 'Policy: DHCP routing'), ('policies/dhcp_statements', 'Policy: DHCP statements'), ('policies/desktop', 'Policy: Desktop'), ('policies/ldapserver', 'Policy: LDAP server'), ('policies/maintenance', 'Policy: Maintenance'), ('policies/masterpackages', 'Policy: Master packages'), ('policies/memberpackages', 'Policy: Member Server packages'), ('policies/nfsmounts', 'Policy: NFS mounts'), ('policies/pwhistory', 'Policy: Passwords'), ('policies/print_quota', 'Policy: Print quota'), ('policies/printserver', 'Policy: Print server'), ('policies/repositoryserver', 'Policy: Repository server'), ('policies/repositorysync', 'Policy: Repository synchronisation'), ('policies/slavepackages', 'Policy: Slave packages'), ('policies/umc', 'Policy: UMC'), ('policies/registry', 'Policy: Univention Configuration Registry'), ('policies/admin_container', 'Policy: Univention Directory Manager container settings'), ('policies/share_userquota', 'Policy: User quota'), ('settings/portal_category', 'Portal: Category'), ('settings/portal_entry', 'Portal: Entry'), ('settings/portal', 'Portal: Portal'), ('settings/default', 'Preferences: Default'), ('settings/directory', 'Preferences: Default Container'), ('settings/xconfig_choices', 'Preferences: X Configuration Choices'), ('shares/printer', 'Printer share: Printer'), ('shares/printergroup', 'Printer share: Printer group'), ('saml/idpconfig', u'SAML IdP configuration'), ('saml/serviceprovider', u'SAML service provider'), ('settings/extended_attribute', 'Settings: Extended attribute'), ('settings/extended_options', 'Settings: Extended option'), ('settings/ldapacl', 'Settings: LDAP ACL Extension'), ('settings/ldapschema', 'Settings: LDAP Schema Extension'), ('settings/license', 'Settings: License'), ('settings/lock', 'Settings: Lock'), ('settings/msprintconnectionpolicy', 'Settings: MS Print Connection Policy'), ('settings/mswmifilter', 'Settings: MS WMI Filter'), ('settings/packages', 'Settings: Package List'), ('settings/printermodel', 'Settings: Printer Driver List'), ('settings/printeruri', 'Settings: Printer URI List'), ('settings/prohibited_username', 'Settings: Prohibited user names'), ('settings/sambaconfig', 'Settings: Samba Configuration'), ('settings/sambadomain', 'Settings: Samba Domain'), ('settings/service', 'Settings: Service'), ('settings/syntax', 'Settings: Syntax Definition'), ('settings/udm_hook', 'Settings: UDM Hook'), ('settings/udm_module', 'Settings: UDM Module'), ('settings/udm_syntax', 'Settings: UDM Syntax'), ('settings/umc_operationset', 'Settings: UMC operation set'), ('settings/usertemplate', 'Settings: User Template'), ('shares/share', 'Share: Directory'), ('users/ldap', 'Simple authentication account'), ('uvmm/cloudconnection', 'UVMM: Cloud Connection'), ('uvmm/cloudtype', 'UVMM: Cloud Type'), ('uvmm/info', 'UVMM: Machine information'), ('uvmm/profile', 'UVMM: Profile'), ('settings/cn', 'Univention Settings'), ('users/user', 'User'), ('users/passwd', 'User: Password'), ('users/self', 'User: Self')]
classmethod parse(text)[source]
univention.admin.syntax.univentionAdminModules_update()[source]

Update internal list of UDM modules in univentionAdminModules.

class univention.admin.syntax.UDM_PropertySelect[source]

Bases: univention.admin.syntax.complex

Syntax to enter UDM module and property name.

subsyntaxes = (('UDM module', <class 'univention.admin.syntax.string'>), ('property', <class 'univention.admin.syntax.string'>))
class univention.admin.syntax.listAttributes[source]

Bases: univention.admin.syntax.string

Syntax to enter UDM property name.

Deprecated since version Old: syntax required by univention.admin.handler.settings.syntax. Should be removed after migrating to UDM_PropertySelect.

classmethod parse(text)[source]
class univention.admin.syntax.timeSpec[source]

Bases: univention.admin.syntax.select

Time format used by at.

_times = [('00:00', '00:00'), ('00:15', '00:15'), ('00:30', '00:30'), ('00:45', '00:45'), ('01:00', '01:00'), ('01:15', '01:15'), ('01:30', '01:30'), ('01:45', '01:45'), ('02:00', '02:00'), ('02:15', '02:15'), ('02:30', '02:30'), ('02:45', '02:45'), ('03:00', '03:00'), ('03:15', '03:15'), ('03:30', '03:30'), ('03:45', '03:45'), ('04:00', '04:00'), ('04:15', '04:15'), ('04:30', '04:30'), ('04:45', '04:45'), ('05:00', '05:00'), ('05:15', '05:15'), ('05:30', '05:30'), ('05:45', '05:45'), ('06:00', '06:00'), ('06:15', '06:15'), ('06:30', '06:30'), ('06:45', '06:45'), ('07:00', '07:00'), ('07:15', '07:15'), ('07:30', '07:30'), ('07:45', '07:45'), ('08:00', '08:00'), ('08:15', '08:15'), ('08:30', '08:30'), ('08:45', '08:45'), ('09:00', '09:00'), ('09:15', '09:15'), ('09:30', '09:30'), ('09:45', '09:45'), ('10:00', '10:00'), ('10:15', '10:15'), ('10:30', '10:30'), ('10:45', '10:45'), ('11:00', '11:00'), ('11:15', '11:15'), ('11:30', '11:30'), ('11:45', '11:45'), ('12:00', '12:00'), ('12:15', '12:15'), ('12:30', '12:30'), ('12:45', '12:45'), ('13:00', '13:00'), ('13:15', '13:15'), ('13:30', '13:30'), ('13:45', '13:45'), ('14:00', '14:00'), ('14:15', '14:15'), ('14:30', '14:30'), ('14:45', '14:45'), ('15:00', '15:00'), ('15:15', '15:15'), ('15:30', '15:30'), ('15:45', '15:45'), ('16:00', '16:00'), ('16:15', '16:15'), ('16:30', '16:30'), ('16:45', '16:45'), ('17:00', '17:00'), ('17:15', '17:15'), ('17:30', '17:30'), ('17:45', '17:45'), ('18:00', '18:00'), ('18:15', '18:15'), ('18:30', '18:30'), ('18:45', '18:45'), ('19:00', '19:00'), ('19:15', '19:15'), ('19:30', '19:30'), ('19:45', '19:45'), ('20:00', '20:00'), ('20:15', '20:15'), ('20:30', '20:30'), ('20:45', '20:45'), ('21:00', '21:00'), ('21:15', '21:15'), ('21:30', '21:30'), ('21:45', '21:45'), ('22:00', '22:00'), ('22:15', '22:15'), ('22:30', '22:30'), ('22:45', '22:45'), ('23:00', '23:00'), ('23:15', '23:15'), ('23:30', '23:30'), ('23:45', '23:45')]
choices = [('', 'No Reboot'), ('now', 'Immediately'), ('00:00', '00:00'), ('00:15', '00:15'), ('00:30', '00:30'), ('00:45', '00:45'), ('01:00', '01:00'), ('01:15', '01:15'), ('01:30', '01:30'), ('01:45', '01:45'), ('02:00', '02:00'), ('02:15', '02:15'), ('02:30', '02:30'), ('02:45', '02:45'), ('03:00', '03:00'), ('03:15', '03:15'), ('03:30', '03:30'), ('03:45', '03:45'), ('04:00', '04:00'), ('04:15', '04:15'), ('04:30', '04:30'), ('04:45', '04:45'), ('05:00', '05:00'), ('05:15', '05:15'), ('05:30', '05:30'), ('05:45', '05:45'), ('06:00', '06:00'), ('06:15', '06:15'), ('06:30', '06:30'), ('06:45', '06:45'), ('07:00', '07:00'), ('07:15', '07:15'), ('07:30', '07:30'), ('07:45', '07:45'), ('08:00', '08:00'), ('08:15', '08:15'), ('08:30', '08:30'), ('08:45', '08:45'), ('09:00', '09:00'), ('09:15', '09:15'), ('09:30', '09:30'), ('09:45', '09:45'), ('10:00', '10:00'), ('10:15', '10:15'), ('10:30', '10:30'), ('10:45', '10:45'), ('11:00', '11:00'), ('11:15', '11:15'), ('11:30', '11:30'), ('11:45', '11:45'), ('12:00', '12:00'), ('12:15', '12:15'), ('12:30', '12:30'), ('12:45', '12:45'), ('13:00', '13:00'), ('13:15', '13:15'), ('13:30', '13:30'), ('13:45', '13:45'), ('14:00', '14:00'), ('14:15', '14:15'), ('14:30', '14:30'), ('14:45', '14:45'), ('15:00', '15:00'), ('15:15', '15:15'), ('15:30', '15:30'), ('15:45', '15:45'), ('16:00', '16:00'), ('16:15', '16:15'), ('16:30', '16:30'), ('16:45', '16:45'), ('17:00', '17:00'), ('17:15', '17:15'), ('17:30', '17:30'), ('17:45', '17:45'), ('18:00', '18:00'), ('18:15', '18:15'), ('18:30', '18:30'), ('18:45', '18:45'), ('19:00', '19:00'), ('19:15', '19:15'), ('19:30', '19:30'), ('19:45', '19:45'), ('20:00', '20:00'), ('20:15', '20:15'), ('20:30', '20:30'), ('20:45', '20:45'), ('21:00', '21:00'), ('21:15', '21:15'), ('21:30', '21:30'), ('21:45', '21:45'), ('22:00', '22:00'), ('22:15', '22:15'), ('22:30', '22:30'), ('22:45', '22:45'), ('23:00', '23:00'), ('23:15', '23:15'), ('23:30', '23:30'), ('23:45', '23:45')]
hour = 23
minute = 45
time = '23:45'
class univention.admin.syntax.optionsUsersUser[source]

Bases: univention.admin.syntax.select

Syntax to select options for UDM module univention.admin.handlers.users.user.

choices = [('pki', 'Public key infrastructure account')]
classmethod update_choices()[source]
class univention.admin.syntax.nagiosHostsEnabledDn[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select Nagios enabled hosts from LDAP.

udm_modules = ('computers/computer',)
udm_filter = '(&(!(univentionObjectFlag=docker))(objectClass=univentionNagiosHostClass)(univentionNagiosEnabled=1)(aRecord=*))'
class univention.admin.syntax.nagiosServiceDn[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a Nagios services from LDAP using univention.admin.handlers.nagios.service.

udm_modules = ('nagios/service',)
class univention.admin.syntax.UCR_Variable[source]

Bases: univention.admin.syntax.complex

Syntax to enter UCR variable name and value.

subsyntaxes = (('Variable', <class 'univention.admin.syntax.string'>), ('Value', <class 'univention.admin.syntax.string'>))

Bases: univention.admin.syntax.select

Selection list from LDAP search.

Searches can be either defined dynamically via a UDM settings/syntax definition and using

LDAP_Search( syntax_name = ‘<NAME>’ )

or programmatically by directly instantiating

LDAP_Search( filter = ‘<LDAP-Search-Filter>’, attribute = [ ‘<LDAP attributes>’, ... ], value = ‘<LDAP attribute>’, base = ‘<LDAP base>’ )

Creates an syntax object providing a list of choices defined by a LDAP objects

Parameters:
  • syntax_name – name of the syntax LDAP object.
  • filter – an LDAP filter to find the LDAP objects providing the list of choices. The filter may contain patterns, that are ...
  • attribute – a list of UDM module attributes definitions like shares/share: dn to be used as human readable representation for each element of the choices.
  • value – the UDM module attribute that will be stored to identify the selected element. The value is specified like shares/share: dn.
  • viewonly – If set to True the values can not be changed.
  • addEmptyValue – If set to True an empty value is add to the list of choices.
  • appendEmptyValue – Same as addEmptyValue but added at the end. Used to automatically choose an existing entry in frontend.
FILTER_PATTERN = '(&(objectClass=univentionSyntax)(cn=%s))'
classmethod parse(text)[source]
_load(lo)[source]

Loads an LDAP_Search object from the LDAP directory. If no syntax name is given the object is expected to be created with the required settings programmatically.

_prepare(lo, filter=None)[source]
class univention.admin.syntax.nfsShare[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax for selecting defined NFS shares.

See also

udm_modules = ('shares/share',)
label = '%(name)s (%(host)s)'
udm_filter = 'objectClass=univentionShareNFS'
use_objects = False
class univention.admin.syntax.nfsMounts[source]

Bases: univention.admin.syntax.complex

Syntax to define a NFS mount point.

subsyntaxes = [('NFS share', <class 'univention.admin.syntax.nfsShare'>), ('Mount point', <class 'univention.admin.syntax.string'>)]
all_required = True
class univention.admin.syntax.languageCode[source]

Bases: univention.admin.syntax.string

Syntax for a language, e.g. language_COUNTRY.

min_length = 5
max_length = 5
_re = <_sre.SRE_Pattern object>
classmethod parse(text)[source]
class univention.admin.syntax.translationTuple[source]

Bases: univention.admin.syntax.complex

Syntax for some translatable text.

delimiter = ': '
subsyntaxes = [('Language code (e.g. en_US)', <class 'univention.admin.syntax.languageCode'>), ('Text', <class 'univention.admin.syntax.string'>)]
all_required = 1
class univention.admin.syntax.translationTupleShortDescription[source]

Bases: univention.admin.syntax.translationTuple

Syntax for a translated short description of an UDM property.

subsyntaxes = [('Language code (e.g. en_US)', <class 'univention.admin.syntax.languageCode'>), ('Translated short description', <class 'univention.admin.syntax.string'>)]
class univention.admin.syntax.translationTupleLongDescription[source]

Bases: univention.admin.syntax.translationTuple

Syntax for a translated long description of an UDM property.

subsyntaxes = [('Language code (e.g. en_US)', <class 'univention.admin.syntax.languageCode'>), ('Translated long description', <class 'univention.admin.syntax.string'>)]
class univention.admin.syntax.translationTupleTabName[source]

Bases: univention.admin.syntax.translationTuple

Syntax for a translated UMC tab name for an UDM property.

subsyntaxes = [('Language code (e.g. en_US)', <class 'univention.admin.syntax.languageCode'>), ('Translated tab name', <class 'univention.admin.syntax.string'>)]
class univention.admin.syntax.I18N_GroupName[source]

Bases: univention.admin.syntax.translationTuple

Syntax for a translated group name.

subsyntaxes = [('Language code (e.g. en_US)', <class 'univention.admin.syntax.languageCode'>), ('Translated group name', <class 'univention.admin.syntax.string'>)]
class univention.admin.syntax.disabled[source]

Bases: univention.admin.syntax.boolean

Syntax to select account disabled state.

classmethod parse(text)[source]
class univention.admin.syntax.locked[source]

Bases: univention.admin.syntax.boolean

Syntax to select account locked state.

classmethod parse(text)[source]
class univention.admin.syntax.Printers[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a printers from LDAP using univention.admin.handlers.shares.printer.

See also

udm_modules = ('shares/printer',)
depends = 'spoolHost'
simple = True
key = '%(name)s'
classmethod udm_filter(options)[source]
class univention.admin.syntax.PrinterNames[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a printers from LDAP using univention.admin.handlers.shares.printer.

See also

udm_modules = ('shares/printer',)
depends = 'spoolHost'
simple = True
key = '%(name)s'
regex = <_sre.SRE_Pattern object>
classmethod udm_filter(options)[source]
class univention.admin.syntax.PrintQuotaGroup[source]

Bases: univention.admin.syntax.complex

Syntax to configure a page quota for all users of a group together.

subsyntaxes = (('Soft limit (pages)', <class 'univention.admin.syntax.integer'>), ('Hard limit (pages)', <class 'univention.admin.syntax.integer'>), ('Group', <class 'univention.admin.syntax.GroupName'>))
class univention.admin.syntax.PrintQuotaGroupPerUser[source]

Bases: univention.admin.syntax.complex

Syntax to configure a page quota for all individual users of a group.

subsyntaxes = (('Soft limit (pages)', <class 'univention.admin.syntax.integer'>), ('Hard limit (pages)', <class 'univention.admin.syntax.integer'>), ('Group', <class 'univention.admin.syntax.GroupName'>))
class univention.admin.syntax.PrintQuotaUser[source]

Bases: univention.admin.syntax.complex

Syntax to configure a page quota for an individual user.

subsyntaxes = (('Soft limit (pages)', <class 'univention.admin.syntax.integer'>), ('Hard limit (pages)', <class 'univention.admin.syntax.integer'>), ('User', <class 'univention.admin.syntax.UserName'>))
class univention.admin.syntax.printerName[source]

Bases: univention.admin.syntax.simple

Syntax to enter a printer name.

min_length = 1
max_length = 16
_re = <_sre.SRE_Pattern object>
classmethod parse(text)[source]
class univention.admin.syntax.printerModel[source]

Bases: univention.admin.syntax.complex

Syntax to enter a printer model description.

subsyntaxes = [('Driver', <class 'univention.admin.syntax.string'>), ('Description', <class 'univention.admin.syntax.string'>)]
all_required = True
class univention.admin.syntax.PrinterDriverList[source]

Bases: univention.admin.syntax.UDM_Attribute

Syntax to select a printer driver from LDAP using univention.admin.handlers.settings.printermodel.

udm_module = 'settings/printermodel'
attribute = 'printmodel'
is_complex = True
key_index = 0
label_index = 1
udm_filter = 'dn'
depends = 'producer'
class univention.admin.syntax.PrinterProducerList[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a printer producer from LDAP using univention.admin.handlers.settings.printermodel.

udm_modules = ('settings/printermodel',)
label = '%(name)s'
class univention.admin.syntax.PrinterProtocol[source]

Bases: univention.admin.syntax.UDM_Attribute

Syntax to select a printer URI from LDAP using univention.admin.handlers.settings.printeruri.

udm_module = 'settings/printeruri'
attribute = 'printeruri'
is_complex = False
class univention.admin.syntax.PrinterURI[source]

Bases: univention.admin.syntax.complex

Syntax to configure printer.

subsyntaxes = (('Protocol', <class 'univention.admin.syntax.PrinterProtocol'>), ('Destination', <class 'univention.admin.syntax.string'>))
classmethod parse(texts)[source]
class univention.admin.syntax.policyName[source]

Bases: univention.admin.syntax.string

Syntax to enter UDM policy name.

_re = <_sre.SRE_Pattern object>
classmethod parse(text)[source]
class univention.admin.syntax.Portals[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a portal from LDAP using univention.admin.handlers.settings.portal.

udm_modules = ('settings/portal',)
label = '%(name)s'
empty_value = True
class univention.admin.syntax.PortalEntries[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a portal entries from LDAP using univention.admin.handlers.settings.portal_entry.

udm_modules = ('settings/portal_entry',)
label = '%(name)s'
empty_value = True
class univention.admin.syntax.PortalLinksPosition[source]

Bases: univention.admin.syntax.select

Syntax to select the position of links on the portal.

choices = [('footer', 'Footer')]

Bases: univention.admin.syntax.complex

Syntax to configure links on the portal.

delimiter = '$$'
subsyntaxes = [('Position', <class 'univention.admin.syntax.PortalLinksPosition'>), ('Link', <class 'univention.admin.syntax.string'>), ('Locale', <class 'univention.admin.syntax.languageCode'>), ('Name', <class 'univention.admin.syntax.string'>)]
all_required = True
class univention.admin.syntax.PortalCategory[source]

Bases: univention.admin.syntax.select

Syntax to select a portal category version 1 from a static list with just 2 categories.

See also

choices = [('admin', 'Shown in category "Administration"'), ('service', 'Shown in category "Installed services"')]
class univention.admin.syntax.PortalCategoryV2[source]

Bases: univention.admin.syntax.UDM_Objects

Syntax to select a portal category version 2 from LDAP using univention.admin.handlers.settings.portal_category.

See also

udm_modules = ('settings/portal_category',)
label = '%(name)s'
empty_value = True
class univention.admin.syntax.ExampleSyntax

Bases: univention.admin.syntax.select

This is an example for a syntax having 3 values.

choices = [('value1', 'This item selects value 1'), ('value2', 'This item selects value 2'), ('value3', 'This item selects value 3')]
class univention.admin.syntax.UvmmCapacity

Bases: univention.admin.syntax.simple

error_message = 'Value must be an positive capacity (xx.x [kmgtp][[i]B])'
max_length = 0
min_length = 1
regex = <_sre.SRE_Pattern object>
class univention.admin.syntax.UvmmCloudType

Bases: univention.admin.syntax.UDM_Objects

description = 'UVMM: Cloud Types'
label = '%(name)s'
udm_modules = ('uvmm/cloudtype',)
use_objects = False
class univention.admin.syntax.UvmmProfiles

Bases: univention.admin.syntax.UDM_Objects

description = 'UVMM: Profile'
empty_value = True
label = '%(name)s (%(virttech)s)'
udm_modules = ('uvmm/profile',)
use_objects = False
class univention.admin.syntax.samlserviceprovider

Bases: univention.admin.syntax.UDM_Objects

regex = None
udm_modules = ('saml/serviceprovider',)
class univention.admin.syntax.PortalEntrySelection[source]

Bases: univention.admin.syntax.complex

Syntax to select a portal entry.

subsyntaxes = [('Portal Entry', <class 'univention.admin.syntax.PortalEntries'>)]
class univention.admin.syntax.PortalCategorySelection[source]

Bases: univention.admin.syntax.simple

Syntax to select a portal category.

subsyntaxes = [('Portal Category', <class 'univention.admin.syntax.PortalCategoryV2'>), ('Portal Entry', <class 'univention.admin.syntax.PortalEntrySelection'>)]
classmethod parse(texts, minn=None)[source]
classmethod tostring(texts)[source]
class univention.admin.syntax.AuthRestriction[source]

Bases: univention.admin.syntax.select

Syntax to select the authentication restriction for the portal.

choices = [('admin', 'Visible for Admins only'), ('authenticated', 'Visible for authenticated users'), ('anonymous', 'Visible for everyone')]
class univention.admin.syntax.PortalFontColor[source]

Bases: univention.admin.syntax.select

Syntax to select the color of the font in the portal.

choices = [('white', 'White'), ('black', 'Black')]
class univention.admin.syntax.PortalDefaultLinkTarget[source]

Bases: univention.admin.syntax.select

choices = [('samewindow', 'Same tab'), ('newwindow', 'New tab')]
class univention.admin.syntax.PortalEntryLinkTarget[source]

Bases: univention.admin.syntax.select

choices = [('useportaldefault', 'Use default of portal'), ('samewindow', 'Same tab'), ('newwindow', 'New tab')]
class univention.admin.syntax.LocalizedDisplayName[source]

Bases: univention.admin.syntax.translationTuple

Syntax for a translated display name of a portal entry.

subsyntaxes = [('Language code (e.g. en_US)', <class 'univention.admin.syntax.languageCode'>), ('Display Name', <class 'univention.admin.syntax.string'>)]
class univention.admin.syntax.LocalizedDescription[source]

Bases: univention.admin.syntax.translationTuple

Syntax for a translated description of a portal entry.

subsyntaxes = [('Language code (e.g. en_US)', <class 'univention.admin.syntax.languageCode'>), ('Description', <class 'univention.admin.syntax.string'>)]
class univention.admin.syntax.LocalizedAnonymousEmpty[source]

Bases: univention.admin.syntax.translationTuple

Syntax for a translated description of a portal entry. In addition to LocalizedDescription it allows to specify a fallback for anonymous visitors.

subsyntaxes = [('Language code (e.g. en_US)', <class 'univention.admin.syntax.languageCode'>), ('Message that is shown to anonymous visitors when the portal is empty', <class 'univention.admin.syntax.TwoEditor'>)]
class univention.admin.syntax.mailHomeServer[source]

Bases: univention.admin.syntax.LDAP_Search

Syntax to select UCS servers providing the IMAP service.

Deprecated since version 3.2-1: Use MailHomeServer.

class univention.admin.syntax.hostname_or_ipadress_or_network[source]

Bases: univention.admin.syntax.simple

Syntax for (fully qualified) host name or IP address or IP network.

>>> hostname_or_ipadress_or_network.parse('hostname')
'hostname'
>>> hostname_or_ipadress_or_network.parse('10.10.10.0/24')
'10.10.10.0/24'
>>> hostname_or_ipadress_or_network.parse('10.10.10.0/255.255.255.0')
'10.10.10.0/255.255.255.0'
>>> hostname_or_ipadress_or_network.parse('illegalhostname$!"§%&/(') 
Traceback (most recent call last):
...
valueError:
>>> hostname_or_ipadress_or_network.parse('10.10.10.0/') 
Traceback (most recent call last):
...
valueError:
>>> hostname_or_ipadress_or_network.parse('/24') 
Traceback (most recent call last):
...
valueError:
>>> hostname_or_ipadress_or_network.parse('10.10.10.0/255') 
Traceback (most recent call last):
...
valueError:
classmethod parse(text)[source]
class univention.admin.syntax.ObjectFlag[source]

Bases: univention.admin.syntax.select

Syntax for UDM object flags.

empty_value = True
choices = [('hidden', 'Mark this object as hidden'), ('temporary', 'Mark this object as temporary'), ('functional', 'Ignore this object in standard UDM modules'), ('docker', 'This object is related to a Docker App container'), ('synced', 'This object is synchronized from Active Directory')]
class univention.admin.syntax.Country[source]

Bases: univention.admin.syntax.select

Syntax for selecting a country by name. Stored as the ISO 3166-1 two-letter country code.

empty_value = True
choices = [('AF', u'Afghanistan'), ('AL', u'Albania'), ('DZ', u'Algeria'), ('AS', u'American Samoa'), ('AD', u'Andorra'), ('AO', u'Angola'), ('AI', u'Anguilla'), ('AQ', u'Antarctica'), ('AG', u'Antigua and Barbuda'), ('AR', u'Argentina'), ('AM', u'Armenia'), ('AW', u'Aruba'), ('AU', u'Australia'), ('AT', u'Austria'), ('AZ', u'Azerbaijan'), ('BS', u'Bahamas'), ('BH', u'Bahrain'), ('BD', u'Bangladesh'), ('BB', u'Barbados'), ('BY', u'Belarus'), ('BE', u'Belgium'), ('BZ', u'Belize'), ('BJ', u'Benin'), ('BM', u'Bermuda'), ('BT', u'Bhutan'), ('BO', u'Bolivia, Plurinational State of'), ('BQ', u'Bonaire, Sint Eustatius and Saba'), ('BA', u'Bosnia and Herzegovina'), ('BW', u'Botswana'), ('BV', u'Bouvet Island'), ('BR', u'Brazil'), ('IO', u'British Indian Ocean Territory'), ('BN', u'Brunei Darussalam'), ('BG', u'Bulgaria'), ('BF', u'Burkina Faso'), ('BI', u'Burundi'), ('CV', u'Cabo Verde'), ('KH', u'Cambodia'), ('CM', u'Cameroon'), ('CA', u'Canada'), ('KY', u'Cayman Islands'), ('CF', u'Central African Republic'), ('TD', u'Chad'), ('CL', u'Chile'), ('CN', u'China'), ('CX', u'Christmas Island'), ('CC', u'Cocos (Keeling) Islands'), ('CO', u'Colombia'), ('KM', u'Comoros'), ('CG', u'Congo'), ('CD', u'Congo, The Democratic Republic of the'), ('CK', u'Cook Islands'), ('CR', u'Costa Rica'), ('HR', u'Croatia'), ('CU', u'Cuba'), ('CW', u'Cura\xe7ao'), ('CY', u'Cyprus'), ('CZ', u'Czechia'), ('CI', u"C\xf4te d'Ivoire"), ('DK', u'Denmark'), ('DJ', u'Djibouti'), ('DM', u'Dominica'), ('DO', u'Dominican Republic'), ('EC', u'Ecuador'), ('EG', u'Egypt'), ('SV', u'El Salvador'), ('GQ', u'Equatorial Guinea'), ('ER', u'Eritrea'), ('EE', u'Estonia'), ('ET', u'Ethiopia'), ('FK', u'Falkland Islands (Malvinas)'), ('FO', u'Faroe Islands'), ('FJ', u'Fiji'), ('FI', u'Finland'), ('FR', u'France'), ('GF', u'French Guiana'), ('PF', u'French Polynesia'), ('TF', u'French Southern Territories'), ('GA', u'Gabon'), ('GM', u'Gambia'), ('GE', u'Georgia'), ('DE', u'Germany'), ('GH', u'Ghana'), ('GI', u'Gibraltar'), ('GR', u'Greece'), ('GL', u'Greenland'), ('GD', u'Grenada'), ('GP', u'Guadeloupe'), ('GU', u'Guam'), ('GT', u'Guatemala'), ('GG', u'Guernsey'), ('GN', u'Guinea'), ('GW', u'Guinea-Bissau'), ('GY', u'Guyana'), ('HT', u'Haiti'), ('HM', u'Heard Island and McDonald Islands'), ('VA', u'Holy See (Vatican City State)'), ('HN', u'Honduras'), ('HK', u'Hong Kong'), ('HU', u'Hungary'), ('IS', u'Iceland'), ('IN', u'India'), ('ID', u'Indonesia'), ('IR', u'Iran, Islamic Republic of'), ('IQ', u'Iraq'), ('IE', u'Ireland'), ('IM', u'Isle of Man'), ('IL', u'Israel'), ('IT', u'Italy'), ('JM', u'Jamaica'), ('JP', u'Japan'), ('JE', u'Jersey'), ('JO', u'Jordan'), ('KZ', u'Kazakhstan'), ('KE', u'Kenya'), ('KI', u'Kiribati'), ('KP', u"Korea, Democratic People's Republic of"), ('KR', u'Korea, Republic of'), ('KW', u'Kuwait'), ('KG', u'Kyrgyzstan'), ('LA', u"Lao People's Democratic Republic"), ('LV', u'Latvia'), ('LB', u'Lebanon'), ('LS', u'Lesotho'), ('LR', u'Liberia'), ('LY', u'Libya'), ('LI', u'Liechtenstein'), ('LT', u'Lithuania'), ('LU', u'Luxembourg'), ('MO', u'Macao'), ('MK', u'Macedonia, Republic of'), ('MG', u'Madagascar'), ('MW', u'Malawi'), ('MY', u'Malaysia'), ('MV', u'Maldives'), ('ML', u'Mali'), ('MT', u'Malta'), ('MH', u'Marshall Islands'), ('MQ', u'Martinique'), ('MR', u'Mauritania'), ('MU', u'Mauritius'), ('YT', u'Mayotte'), ('MX', u'Mexico'), ('FM', u'Micronesia, Federated States of'), ('MD', u'Moldova, Republic of'), ('MC', u'Monaco'), ('MN', u'Mongolia'), ('ME', u'Montenegro'), ('MS', u'Montserrat'), ('MA', u'Morocco'), ('MZ', u'Mozambique'), ('MM', u'Myanmar'), ('NA', u'Namibia'), ('NR', u'Nauru'), ('NP', u'Nepal'), ('NL', u'Netherlands'), ('NC', u'New Caledonia'), ('NZ', u'New Zealand'), ('NI', u'Nicaragua'), ('NE', u'Niger'), ('NG', u'Nigeria'), ('NU', u'Niue'), ('NF', u'Norfolk Island'), ('MP', u'Northern Mariana Islands'), ('NO', u'Norway'), ('OM', u'Oman'), ('PK', u'Pakistan'), ('PW', u'Palau'), ('PS', u'Palestine, State of'), ('PA', u'Panama'), ('PG', u'Papua New Guinea'), ('PY', u'Paraguay'), ('PE', u'Peru'), ('PH', u'Philippines'), ('PN', u'Pitcairn'), ('PL', u'Poland'), ('PT', u'Portugal'), ('PR', u'Puerto Rico'), ('QA', u'Qatar'), ('RO', u'Romania'), ('RU', u'Russian Federation'), ('RW', u'Rwanda'), ('RE', u'R\xe9union'), ('BL', u'Saint Barth\xe9lemy'), ('SH', u'Saint Helena, Ascension and Tristan da Cunha'), ('KN', u'Saint Kitts and Nevis'), ('LC', u'Saint Lucia'), ('MF', u'Saint Martin (French part)'), ('PM', u'Saint Pierre and Miquelon'), ('VC', u'Saint Vincent and the Grenadines'), ('WS', u'Samoa'), ('SM', u'San Marino'), ('ST', u'Sao Tome and Principe'), ('SA', u'Saudi Arabia'), ('SN', u'Senegal'), ('RS', u'Serbia'), ('SC', u'Seychelles'), ('SL', u'Sierra Leone'), ('SG', u'Singapore'), ('SX', u'Sint Maarten (Dutch part)'), ('SK', u'Slovakia'), ('SI', u'Slovenia'), ('SB', u'Solomon Islands'), ('SO', u'Somalia'), ('ZA', u'South Africa'), ('GS', u'South Georgia and the South Sandwich Islands'), ('SS', u'South Sudan'), ('ES', u'Spain'), ('LK', u'Sri Lanka'), ('SD', u'Sudan'), ('SR', u'Suriname'), ('SJ', u'Svalbard and Jan Mayen'), ('SZ', u'Swaziland'), ('SE', u'Sweden'), ('CH', u'Switzerland'), ('SY', u'Syrian Arab Republic'), ('TW', u'Taiwan, Province of China'), ('TJ', u'Tajikistan'), ('TZ', u'Tanzania, United Republic of'), ('TH', u'Thailand'), ('TL', u'Timor-Leste'), ('TG', u'Togo'), ('TK', u'Tokelau'), ('TO', u'Tonga'), ('TT', u'Trinidad and Tobago'), ('TN', u'Tunisia'), ('TR', u'Turkey'), ('TM', u'Turkmenistan'), ('TC', u'Turks and Caicos Islands'), ('TV', u'Tuvalu'), ('UG', u'Uganda'), ('UA', u'Ukraine'), ('AE', u'United Arab Emirates'), ('GB', u'United Kingdom'), ('US', u'United States'), ('UM', u'United States Minor Outlying Islands'), ('UY', u'Uruguay'), ('UZ', u'Uzbekistan'), ('VU', u'Vanuatu'), ('VE', u'Venezuela, Bolivarian Republic of'), ('VN', u'Viet Nam'), ('VG', u'Virgin Islands, British'), ('VI', u'Virgin Islands, U.S.'), ('WF', u'Wallis and Futuna'), ('EH', u'Western Sahara'), ('YE', u'Yemen'), ('ZM', u'Zambia'), ('ZW', u'Zimbabwe'), ('AX', u'\xc5land Islands')]
classmethod update_choices()[source]
class univention.admin.syntax.RadiusClientType[source]

Bases: univention.admin.syntax.select

choices = [('other', 'other'), ('cisco', 'cisco'), ('computone', 'computone'), ('livingston', 'livingston'), ('juniper', 'juniper'), ('max40xx', 'max40xx'), ('multitech', 'multitech'), ('netserver', 'netserver'), ('pathras', 'pathras'), ('patton', 'patton'), ('portslave', 'portslave'), ('tc', 'tc'), ('usrhiper', 'usrhiper')]
class univention.admin.syntax.mailinglist_name[source]

Bases: univention.admin.syntax.gid

error_message = 'A mailing list name must start and end with a letter, number or underscore. In between additionally spaces, dashes and dots are allowed.'

univention.admin.uexceptions module

UDM exceptions.

exception univention.admin.uexceptions.base[source]

Bases: exceptions.Exception

message = ''
exception univention.admin.uexceptions.objectExists[source]

Bases: univention.admin.uexceptions.base

message = 'Object exists.'
exception univention.admin.uexceptions.noObject[source]

Bases: univention.admin.uexceptions.base

message = 'No such object.'
exception univention.admin.uexceptions.permissionDenied[source]

Bases: univention.admin.uexceptions.base

message = 'Permission denied.'
exception univention.admin.uexceptions.ldapError(*args, **kwargs)[source]

Bases: univention.admin.uexceptions.base

message = 'LDAP Error'
exception univention.admin.uexceptions.ldapTimeout[source]

Bases: univention.admin.uexceptions.base

message = 'The specified timeout for the LDAP search has been exceeded.'
exception univention.admin.uexceptions.ldapSizelimitExceeded[source]

Bases: univention.admin.uexceptions.base

message = 'The specified size limit for the LDAP search has been exceeded.'
exception univention.admin.uexceptions.insufficientInformation[source]

Bases: univention.admin.uexceptions.base

message = 'Information provided is not sufficient.'
exception univention.admin.uexceptions.noProperty[source]

Bases: univention.admin.uexceptions.base

message = 'No such property.'
exception univention.admin.uexceptions.valueError[source]

Bases: univention.admin.uexceptions.base

exception univention.admin.uexceptions.valueMayNotChange[source]

Bases: univention.admin.uexceptions.valueError

message = 'Value may not change.'
exception univention.admin.uexceptions.valueInvalidSyntax[source]

Bases: univention.admin.uexceptions.valueError

message = 'Invalid syntax.'
exception univention.admin.uexceptions.valueRequired[source]

Bases: univention.admin.uexceptions.valueError

message = 'Value is required.'
exception univention.admin.uexceptions.valueMismatch[source]

Bases: univention.admin.uexceptions.valueError

message = 'Values do not match.'
exception univention.admin.uexceptions.noLock[source]

Bases: univention.admin.uexceptions.base

message = 'Could not acquire lock.'
exception univention.admin.uexceptions.authFail[source]

Bases: univention.admin.uexceptions.base

message = 'Authentication Failed.'
exception univention.admin.uexceptions.uidAlreadyUsed[source]

Bases: univention.admin.uexceptions.base

message = 'The username is already in use as username or as groupname'
exception univention.admin.uexceptions.sidAlreadyUsed[source]

Bases: univention.admin.uexceptions.base

message = 'The relative ID (SAMBA) is already in use.'
exception univention.admin.uexceptions.groupNameAlreadyUsed[source]

Bases: univention.admin.uexceptions.base

message = 'The groupname is already in use as groupname or as username'
exception univention.admin.uexceptions.uidNumberAlreadyUsedAsGidNumber[source]

Bases: univention.admin.uexceptions.base

message = 'The uidNumber is already in use as a gidNumber'
exception univention.admin.uexceptions.gidNumberAlreadyUsedAsUidNumber[source]

Bases: univention.admin.uexceptions.base

message = 'The gidNumber is already in use as a uidNumber'
exception univention.admin.uexceptions.adGroupTypeChangeLocalToAny[source]

Bases: univention.admin.uexceptions.base

message = 'The AD group type can not be changed from type local to any other type.'
exception univention.admin.uexceptions.adGroupTypeChangeToLocal[source]

Bases: univention.admin.uexceptions.base

message = 'The AD group type can not be changed to type local.'
exception univention.admin.uexceptions.adGroupTypeChangeGlobalToUniversal[source]

Bases: univention.admin.uexceptions.base

message = 'The AD group type can not be changed from global to universal, because the group is member of another global group.'
exception univention.admin.uexceptions.adGroupTypeChangeDomainLocalToUniversal[source]

Bases: univention.admin.uexceptions.base

message = 'The AD group type can not be changed from domain local to universal, because the group has another domain local group as member.'
exception univention.admin.uexceptions.adGroupTypeChangeUniversalToGlobal[source]

Bases: univention.admin.uexceptions.base

message = 'The AD group type can not be changed from universal to global, because the group has another universal group as member.'
exception univention.admin.uexceptions.adGroupTypeChangeGlobalToDomainLocal[source]

Bases: univention.admin.uexceptions.base

message = 'The AD group type can not be changed from global to domain local.'
exception univention.admin.uexceptions.adGroupTypeChangeDomainLocalToGlobal[source]

Bases: univention.admin.uexceptions.base

message = 'The AD group type can not be changed from domain local to global.'
exception univention.admin.uexceptions.prohibitedUsername[source]

Bases: univention.admin.uexceptions.base

message = 'Prohibited username.'
exception univention.admin.uexceptions.ipAlreadyUsed[source]

Bases: univention.admin.uexceptions.base

message = 'IP address is already in use.'
exception univention.admin.uexceptions.dnsAliasAlreadyUsed[source]

Bases: univention.admin.uexceptions.base

message = 'DNS alias is already in use.'
exception univention.admin.uexceptions.invalidDhcpEntry[source]

Bases: univention.admin.uexceptions.base

message = 'The DHCP entry for this host should contain the zone DN, the IP address and the MAC address.'
exception univention.admin.uexceptions.invalidDNSAliasEntry[source]

Bases: univention.admin.uexceptions.base

message = 'The DNS alias entry for this host should contain the zone name, the alias zone container DN and the alias.'
exception univention.admin.uexceptions.InvalidDNS_Information[source]

Bases: univention.admin.uexceptions.base

message = 'The provided DNS information are invalid.'
exception univention.admin.uexceptions.nextFreeIp[source]

Bases: univention.admin.uexceptions.base

message = 'Next IP address not found.'
exception univention.admin.uexceptions.ipOverridesNetwork[source]

Bases: univention.admin.uexceptions.base

message = 'The given IP address is not within the range of the selected network'
exception univention.admin.uexceptions.macAlreadyUsed[source]

Bases: univention.admin.uexceptions.base

message = 'The MAC address is already in use.'
exception univention.admin.uexceptions.mailAddressUsed[source]

Bases: univention.admin.uexceptions.base

message = 'The mail address is already in use.'
exception univention.admin.uexceptions.dhcpServerAlreadyUsed[source]

Bases: univention.admin.uexceptions.base

message = 'DHCP server name already used: '
exception univention.admin.uexceptions.kolabHomeServer[source]

Bases: univention.admin.uexceptions.base

message = 'Default Kolab home server does not exist'
exception univention.admin.uexceptions.primaryGroup[source]

Bases: univention.admin.uexceptions.base

message = 'Default primary group does not exist'
exception univention.admin.uexceptions.primaryGroupUsed[source]

Bases: univention.admin.uexceptions.base

message = 'This is a primary group.'
exception univention.admin.uexceptions.homeShareUsed[source]

Bases: univention.admin.uexceptions.base

message = ''
exception univention.admin.uexceptions.groupNotFound[source]

Bases: univention.admin.uexceptions.base

message = 'The requested group not be found.'
exception univention.admin.uexceptions.dhcpNotFound[source]

Bases: univention.admin.uexceptions.base

message = 'The DHCP entry was not found.'
exception univention.admin.uexceptions.dnsNotFound[source]

Bases: univention.admin.uexceptions.base

message = 'The DNS entry was not found'
exception univention.admin.uexceptions.commonNameTooLong[source]

Bases: univention.admin.uexceptions.base

message = 'The FQDN of this object is too long, it must have less than 64 characters.'
exception univention.admin.uexceptions.missingInformation[source]

Bases: univention.admin.uexceptions.base

message = 'Not all needed information was entered.'
exception univention.admin.uexceptions.policyFixedAttribute[source]

Bases: univention.admin.uexceptions.base

message = 'Cannot overwrite a fixed attribute.'
exception univention.admin.uexceptions.bootpXORFailover[source]

Bases: univention.admin.uexceptions.base

message = 'Dynamic BOOTP leases are not compatible with failover.'
exception univention.admin.uexceptions.licenseNotFound[source]

Bases: univention.admin.uexceptions.base

message = 'No license found.'
exception univention.admin.uexceptions.licenseInvalid[source]

Bases: univention.admin.uexceptions.base

message = 'The license is invalid.'
exception univention.admin.uexceptions.licenseExpired[source]

Bases: univention.admin.uexceptions.base

message = 'The license is expired.'
exception univention.admin.uexceptions.licenseWrongBaseDn[source]

Bases: univention.admin.uexceptions.base

message = 'The license is invalid for the current base DN.'
exception univention.admin.uexceptions.licenseCoreEdition[source]

Bases: univention.admin.uexceptions.base

message = 'UCS Core Edition.'
exception univention.admin.uexceptions.freeForPersonalUse[source]

Bases: univention.admin.uexceptions.base

message = 'Free for personal use edition.'
exception univention.admin.uexceptions.licenseAccounts[source]

Bases: univention.admin.uexceptions.base

message = 'Too many user accounts'
exception univention.admin.uexceptions.licenseClients[source]

Bases: univention.admin.uexceptions.base

message = 'Too many client accounts'
exception univention.admin.uexceptions.licenseDesktops[source]

Bases: univention.admin.uexceptions.base

message = 'Too many desktop accounts'
exception univention.admin.uexceptions.licenseGroupware[source]

Bases: univention.admin.uexceptions.base

message = 'Too many groupware accounts'
exception univention.admin.uexceptions.licenseUsers[source]

Bases: univention.admin.uexceptions.base

message = 'Too many users'
exception univention.admin.uexceptions.licenseServers[source]

Bases: univention.admin.uexceptions.base

message = 'Too many servers'
exception univention.admin.uexceptions.licenseManagedClients[source]

Bases: univention.admin.uexceptions.base

message = 'Too many managed clients'
exception univention.admin.uexceptions.licenseCorporateClients[source]

Bases: univention.admin.uexceptions.base

message = 'Too many corporate clients'
exception univention.admin.uexceptions.licenseDVSUsers[source]

Bases: univention.admin.uexceptions.base

message = 'Too many DVS users'
exception univention.admin.uexceptions.licenseDVSClients[source]

Bases: univention.admin.uexceptions.base

message = 'Too many DVS clients'
exception univention.admin.uexceptions.licenseDisableModify[source]

Bases: univention.admin.uexceptions.base

message = 'During this session add and modify are disabled'
exception univention.admin.uexceptions.pwalreadyused[source]

Bases: univention.admin.uexceptions.base

message = 'Password has been used before. Please choose a different one.'
exception univention.admin.uexceptions.passwordLength[source]

Bases: univention.admin.uexceptions.base

message = 'The password is too short, at least 8 character!'
exception univention.admin.uexceptions.rangeNotInNetwork[source]

Bases: univention.admin.uexceptions.base

message = 'Network and IP range are incompatible.'
exception univention.admin.uexceptions.rangeInNetworkAddress[source]

Bases: univention.admin.uexceptions.base

message = 'The IP range contains its network address. That is not permitted!'
exception univention.admin.uexceptions.rangeInBroadcastAddress[source]

Bases: univention.admin.uexceptions.base

message = 'The IP range contains its broadcast address. That is not permitted!'
exception univention.admin.uexceptions.rangesOverlapping[source]

Bases: univention.admin.uexceptions.base

message = 'Overlapping IP ranges'
exception univention.admin.uexceptions.invalidOptions[source]

Bases: univention.admin.uexceptions.base

message = 'Invalid combination of options.'
exception univention.admin.uexceptions.pwToShort[source]

Bases: univention.admin.uexceptions.base

message = 'Password policy error: '
exception univention.admin.uexceptions.pwQuality[source]

Bases: univention.admin.uexceptions.base

message = 'Password policy error: '
exception univention.admin.uexceptions.invalidOperation[source]

Bases: univention.admin.uexceptions.base

message = 'This operation is not allowed on this object.'
exception univention.admin.uexceptions.emptyPrinterGroup[source]

Bases: univention.admin.uexceptions.base

message = 'Empty printer groups are not possible.'
exception univention.admin.uexceptions.leavePrinterGroup[source]

Bases: univention.admin.uexceptions.base

message = 'Printer groups with quota support can only have members with quota support.'
exception univention.admin.uexceptions.notValidPrinter[source]

Bases: univention.admin.uexceptions.base

message = 'Only printer objects can be members of a printer group.'
exception univention.admin.uexceptions.notValidGroup[source]

Bases: univention.admin.uexceptions.base

message = 'Only existing groups are allowed.'
exception univention.admin.uexceptions.notValidUser[source]

Bases: univention.admin.uexceptions.base

message = 'Only existing users are allowed.'
exception univention.admin.uexceptions.templateSyntaxError(templates)[source]

Bases: univention.admin.uexceptions.base

message = 'Invalid syntax in default value. Check these templates: %s.'
exception univention.admin.uexceptions.nagiosTimeperiodUsed[source]

Bases: univention.admin.uexceptions.base

message = 'Timeperiod Object still in use!'
exception univention.admin.uexceptions.nagiosARecordRequired[source]

Bases: univention.admin.uexceptions.base

message = 'IP address entry required to assign Nagios services!'
exception univention.admin.uexceptions.nagiosDNSForwardZoneEntryRequired[source]

Bases: univention.admin.uexceptions.base

message = 'DNS Forward Zone entry required to assign Nagios services!'
exception univention.admin.uexceptions.dnsAliasRecordExists[source]

Bases: univention.admin.uexceptions.base

message = 'The DNS forward entry could not be created. Please remove existing alias records or comparable DNS objects with the same name as this host from the forward zone.'
exception univention.admin.uexceptions.circularGroupDependency[source]

Bases: univention.admin.uexceptions.base

message = 'Circular group dependency detected: '
exception univention.admin.uexceptions.invalidChild[source]

Bases: univention.admin.uexceptions.base

exception univention.admin.uexceptions.primaryGroupWithoutSamba[source]

Bases: univention.admin.uexceptions.base

message = 'Need a primary group with samba option to create a user with samba option'
exception univention.admin.uexceptions.wrongObjectType[source]

Bases: univention.admin.uexceptions.base

message = 'The object type of this object differs from the specified object type.'
exception univention.admin.uexceptions.noKerberosRealm[source]

Bases: univention.admin.uexceptions.base

message = 'There was no valid kerberos realm found.'

univention.admin.uldap module

UDM wrapper around univention.uldap that replaces exceptions.

class univention.admin.uldap.DN(dn)[source]

Bases: object

A LDAP Distinguished Name.

classmethod set(values)[source]
>>> len(DN.set(['CN=computers,dc=foo', 'cn=computers,dc=foo', 'cn = computers,dc=foo']))
1
classmethod values(values)[source]
>>> DN.values(DN.set(['cn=foo', 'cn=bar']) - DN.set(['cn = foo']))
set(['cn=bar'])
univention.admin.uldap.getBaseDN(host='localhost', port=None, uri=None)[source]

Return the naming context of the LDAP server.

Parameters:
  • host (str) – The hostname of the LDAP server.
  • port (int) – The TCP port number of the LDAP server.
  • uri (str) – A complete LDAP URI.
Returns:

The distinguished name of the LDAP root.

Return type:

str

univention.admin.uldap.getAdminConnection(start_tls=2, decode_ignorelist=[])[source]

Open a LDAP connection using the admin credentials.

Parameters:
  • start_tls (int) – Negotiate TLS with server. If 2 is given, the command will require the operation to be successful.
  • decode_ignorelist (list[str]) – List of LDAP attribute names which shall be handled as binary attributes.
Returns:

A 2-tuple (LDAP-access, LDAP-position)

Return type:

tuple[univention.admin.uldap.access, univention.admin.uldap.position]

univention.admin.uldap.getMachineConnection(start_tls=2, decode_ignorelist=[], ldap_master=True)[source]

Open a LDAP connection using the machine credentials.

Parameters:
  • start_tls (int) – Negotiate TLS with server. If 2 is given, the command will require the operation to be successful.
  • decode_ignorelist (list[str]) – List of LDAP attribute names which shall be handled as binary attributes.
  • ldap_master (bool) – Open a connection to the Master if True, to the preferred LDAP server otherwise.
Returns:

A 2-tuple (LDAP-access, LDAP-position)

Return type:

tuple[univention.admin.uldap.access, univention.admin.uldap.position]

univention.admin.uldap._err2str(err)[source]

Convert exception arguments to string.

Parameters:err (Exception) – An exception instance.
Returns:A concatenated string formatted from the exception
Return type:str
class univention.admin.uldap.domain(lo, position)[source]

A UDM domain name.

Parameters:
getKerberosRealm()[source]

Return the name of the Kerberos realms.

Returns:The name of the Kerberos realm.
Return type:str
class univention.admin.uldap.position(base, loginDomain='')[source]

The position of a LDAP container. Supports relative distinguished names.

Parameters:
  • base (str) – The base distinguished name.
  • loginDomain (str) – The login domain name.
setBase(base)[source]

Set a new base distinguished name.

Parameters:base (str) – The new base distinguished name.
setLoginDomain(loginDomain)[source]

Set a new login domain name.

Parameters:loginDomain (str) – The new login domain name.
getDn()[source]

Return the distinguished name.

Returns:The absolute DN.
Return type:str
setDn(dn)[source]

Set a new distinguished name.

Parameters:dn (str) – The new distinguished name.
getRdn()[source]

Return the distinguished name relative to the LDAP base.

Returns:The relative DN.
Return type:str
getBase()[source]

Return the LDAP base DN.

Returns:The distinguished name of the LDAP base.
Return type:str
isBase()[source]

Check if the position equals the LDAP base DN.

Returns:True if the position equals the base DN, False otherwise.
Return type:bool
getDomain()[source]

Return the distinguished name of the domain part of the position.

Returns:The distinguished name.
Return type:str
getDomainConfigBase()[source]

Return the distinguished name of the configuration container.

Returns:The distinguished name.
Return type:str
isDomain()[source]

Check if the position equals the domain DN.

Returns:True if the position equals the domain DN, False otherwise.
Return type:bool
getLoginDomain()[source]

Return the login domain name.

Returns:The login domain name.
Return type:str
switchToParent()[source]

Switch position to parent container.

Returns:False if already at the Base, True otherwise.
Return type:bool
getPrintable(short=1, long=0, trailingslash=1)[source]

Return printable path of position.

Parameters:
  • short (int) – 0 to prefix path with domain.
  • long (int) – 1 to prefix path with domain.
  • trailingslash (int) – Append trailing slash.
Returns:

A string.

Return type:

str

Deprecated since version 4.3: Unused.

getPrintable_depth(short=1, long=0, trailingslash=1)[source]

Return printable path of position. new “version” of getPrintable(), returns the tree-depth as int instead of html-blanks

Parameters:
  • short (int) – 0 to prefix path with domain.
  • long (int) – 1 to prefix path with domain.
  • trailingslash (int) – Append trailing slash.
Returns:

A 2-tuple (printable, depth)

Return type:

tuple[str, int]

Deprecated since version 4.3: Unused.

_position__getPositionInDomain()
_position__setPosition(pos)
class univention.admin.uldap.access(host='localhost', port=None, base='', binddn='', bindpw='', start_tls=2, lo=None, follow_referral=False)[source]

A UDM class to access a LDAP server.

Parameters:
  • host (str) – The hostname of the LDAP server.
  • port (int) – The TCP port number of the LDAP server.
  • base (str) – The base distinguished name.
  • binddn (str) – The distinguished name of the account.
  • bindpw (str) – The user password for simple authentication.
  • start_tls (int) – Negotiate TLS with server. If 2 is given, the command will require the operation to be successful.
  • lo (univention.uldap.access) – LDAP connection.

:param:bool follow_referral: Follow LDAP referrals.

binddn

Return the distinguished name of the account.

Returns:The distinguished name of the account (or None with SAML).
Return type:str
bindpw

Return the user password or credentials.

Returns:The user password or credentials.
Return type:str
host

Return the host name of the LDAP server.

Returns:the host name of the LDAP server.
Return type:str
base

Return the LDAP base of the LDAP server.

Returns:the LDAP base of the LDAP server.
Return type:str
start_tls
port

Return the TCP port number of the LDAP server.

Returns:the TCP port number of the LDAP server.
Return type:int
bind(binddn, bindpw)[source]

Do simple LDAP bind using DN and password.

Parameters:
  • binddn (str) – The distinguished name of the account.
  • bindpw (str) – The user password for simple authentication.
bind_saml(bindpw)[source]

Do LDAP bind using SAML message.

Parameters:bindpw (str) – The SAML authentication cookie.
unbind()[source]

Unauthenticate.

whoami()[source]

Return the distinguished name of the authenticated user.

Returns:The distinguished name.
Return type:str
requireLicense(require=1)[source]

Enable or disable the UCS licence check.

Parameters:require (int) – 1 to require a valid licence.
_validateLicense()[source]

Check if the UCS licence is valid.

get_schema()[source]

Retrieve LDAP schema information from LDAP server.

Returns:The LDAP schema.
Return type:ldap.schema.subentry.SubSchema
classmethod compare_dn(a, b)[source]

Compare two distinguished names for equality.

Parameters:
  • a (str) – The first distinguished name.
  • b (str) – A second distinguished name.
Returns:

True if the DNs are the same, False otherwise.

Return type:

bool

get(dn, attr=[], required=False, exceptions=False)[source]

Return multiple attributes of a single LDAP object.

Parameters:
  • dn (str) – The distinguished name of the object to lookup.
  • attr – The list of attributes to fetch.
  • required (bool) – Raise an exception instead of returning an empty dictionary.
  • exceptions (bool) – Ignore.
Returns:

A dictionary mapping the requested attributes to a list of their values.

Return type:

dict[str, list[str]]

Raises:

ldap.NO_SUCH_OBJECT – If the LDAP object is not accessible.

getAttr(dn, attr, required=False, exceptions=False)[source]

Return a single attribute of a single LDAP object.

Parameters:
  • dn (str) – The distinguished name of the object to lookup.
  • attr (str) – The attribute to fetch.
  • required (bool) – Raise an exception instead of returning an empty dictionary.
  • exceptions (bool) – Ignore.
Returns:

A list of values.

Return type:

list[str]

Raises:

ldap.NO_SUCH_OBJECT – If the LDAP object is not accessible.

search(filter='(objectClass=*)', base='', scope='sub', attr=[], unique=False, required=False, timeout=-1, sizelimit=0, serverctrls=None, response=None)[source]

Perform LDAP search and return values.

Parameters:
  • filter (str) – LDAP search filter.
  • base (str) – the starting point for the search.
  • scope (str) – Specify the scope of the search to be one of base, base+one, one, sub, or domain to specify a base object, base plus one-level, one-level, subtree, or children search.
  • attr (list[str]) – The list of attributes to fetch.
  • unique (bool) – Raise an exception if more than one object matches.
  • required (bool) – Raise an exception instead of returning an empty dictionary.
  • timeout (int) – wait at most timeout seconds for a search to complete. -1 for no limit.
  • sizelimit (int) – retrieve at most sizelimit entries for a search. 0 for no limit.
  • serverctrls (list[ldap.controls.LDAPControl]) – a list of ldap.controls.LDAPControl instances sent to the server along with the LDAP request
  • response (dict) – An optional dictionary to receive the server controls of the result.
Returns:

A list of 2-tuples (dn, values) for each LDAP object, where values is a dictionary mapping attribute names to a list of values.

Return type:

list[tuple[str, dict[str, list[str]]]]

Raises:
searchDn(filter='(objectClass=*)', base='', scope='sub', unique=False, required=False, timeout=-1, sizelimit=0, serverctrls=None, response=None)[source]

Perform LDAP search and return distinguished names only.

Parameters:
  • filter (str) – LDAP search filter.
  • base (str) – the starting point for the search.
  • scope (str) – Specify the scope of the search to be one of base, base+one, one, sub, or domain to specify a base object, base plus one-level, one-level, subtree, or children search.
  • unique (bool) – Raise an exception if more than one object matches.
  • required (bool) – Raise an exception instead of returning an empty dictionary.
  • timeout (int) – wait at most timeout seconds for a search to complete. -1 for no limit.
  • sizelimit (int) – retrieve at most sizelimit entries for a search. 0 for no limit.
  • serverctrls (list[ldap.controls.LDAPControl]) – a list of ldap.controls.LDAPControl instances sent to the server along with the LDAP request.
  • response (dict) – An optional dictionary to receive the server controls of the result.
Returns:

A list of distinguished names.

Return type:

list[str]

Raises:
getPolicies(dn, policies=None, attrs=None, result=None, fixedattrs=None)[source]

Return UCS policies for LDAP entry.

Parameters:
  • dn (str) – The distinguished name of the LDAP entry.
  • policies (list) – List of policy object classes...
  • attrs (dict) – LDAP attributes. If not given, the data is fetched from LDAP.
  • result – UNUSED!
  • fixedattrs – UNUSED!
Returns:

A mapping of policy names to

add(dn, al, exceptions=False, serverctrls=None, response=None)[source]

Add LDAP entry at distinguished name and attributes in add_list=(attribute-name, old-values. new-values) or (attribute-name, new-values)