def update_extended_attributes(lo, module, position): # add list of tabnames created by extended attributes if not hasattr(module, 'extended_attribute_tabnames'): module.extended_attribute_tabnames = [] # append UDM extended attributes properties4tabs = {} overwriteTabList = [] module.extended_udm_attributes = [] for dn, attrs in lo.search( base=position.getDomainConfigBase(), filter=filter_format( '(&(objectClass=univentionUDMProperty)(univentionUDMPropertyModule=%s)(univentionUDMPropertyVersion=2))', [name(module)])): # get CLI name pname = attrs['univentionUDMPropertyCLIName'][0] # get syntax propertySyntaxString = attrs.get('univentionUDMPropertySyntax', [''])[0] if propertySyntaxString and hasattr(univention.admin.syntax, propertySyntaxString): propertySyntax = getattr(univention.admin.syntax, propertySyntaxString) else: if lo.search(filter=filter_format( univention.admin.syntax.LDAP_Search.FILTER_PATTERN, [propertySyntaxString])): propertySyntax = univention.admin.syntax.LDAP_Search( propertySyntaxString) else: propertySyntax = univention.admin.syntax.string() # get hooks propertyHookString = attrs.get('univentionUDMPropertyHook', [''])[0] propertyHook = None if propertyHookString and hasattr(univention.admin.hook, propertyHookString): propertyHook = getattr(univention.admin.hook, propertyHookString)() register_ldap_connection = getattr(propertyHook, 'hook_ldap_connection', None) if register_ldap_connection: register_ldap_connection(lo, position) # get default value propertyDefault = attrs.get('univentionUDMPropertyDefault', [None]) # value may change try: mayChange = int( attrs.get('univentionUDMPropertyValueMayChange', ['0'])[0]) except: ud.debug( ud.ADMIN, ud.ERROR, 'modules update_extended_attributes: ERROR: processing univentionUDMPropertyValueMayChange throwed exception - assuming mayChange=0' ) mayChange = 0 # value is editable (only via hooks or direkt module.info[] access) editable = attrs.get('univentionUDMPropertyValueNotEditable', ['0'])[0] not in ['1', 'TRUE'] # value is required valueRequired = (attrs.get('univentionUDMPropertyValueRequired', ['0'])[0].upper() in ['1', 'TRUE']) # value not available for searching try: doNotSearch = int( attrs.get('univentionUDMPropertyDoNotSearch', ['0'])[0]) except: ud.debug( ud.ADMIN, ud.ERROR, 'modules update_extended_attributes: ERROR: processing univentionUDMPropertyDoNotSearch throwed exception - assuming doNotSearch=0' ) doNotSearch = 0 # check if CA is multivalue property if attrs.get('univentionUDMPropertyMultivalue', [''])[0] == '1': multivalue = 1 map_method = None unmap_method = None else: multivalue = 0 map_method = univention.admin.mapping.ListToString unmap_method = None if propertySyntaxString == 'boolean': map_method = univention.admin.mapping.BooleanListToString unmap_method = univention.admin.mapping.BooleanUnMap # single value ==> use only first value propertyDefault = propertyDefault[0] # Show this attribute in UDM/UMC? if attrs.get('univentionUDMPropertyLayoutDisable', [''])[0] == '1': layoutDisabled = True else: layoutDisabled = False # get current language lang = locale.getlocale(locale.LC_MESSAGES)[0] ud.debug(ud.ADMIN, ud.INFO, 'modules update_extended_attributes: LANG = %s' % str(lang)) if lang: lang = lang.replace('_', '-').lower() else: lang = 'xxxxx' # get descriptions shortdesc = attrs.get( 'univentionUDMPropertyTranslationShortDescription;entry-%s' % lang, attrs['univentionUDMPropertyShortDescription'])[0] longdesc = attrs.get( 'univentionUDMPropertyTranslationLongDescription;entry-%s' % lang, attrs.get('univentionUDMPropertyLongDescription', ['']))[0] # create property # FIXME: must add attribute to honor fullWidth (should be defined by the syntax) module.property_descriptions[pname] = univention.admin.property( short_description=shortdesc, long_description=longdesc, syntax=propertySyntax, multivalue=multivalue, options=attrs.get('univentionUDMPropertyOptions', []), required=valueRequired, may_change=mayChange, dontsearch=doNotSearch, identifies=False, default=propertyDefault, editable=editable) # add LDAP mapping if attrs['univentionUDMPropertyLdapMapping'][0].lower( ) != 'objectClass'.lower(): module.mapping.register( pname, attrs['univentionUDMPropertyLdapMapping'][0], unmap_method, map_method) else: module.mapping.register( pname, attrs['univentionUDMPropertyLdapMapping'][0], univention.admin.mapping.nothing, univention.admin.mapping.nothing) if hasattr(module, 'layout'): tabname = attrs.get( 'univentionUDMPropertyTranslationTabName;entry-%s' % lang, attrs.get('univentionUDMPropertyLayoutTabName', [_('Custom')]))[0] overwriteTab = (attrs.get( 'univentionUDMPropertyLayoutOverwriteTab', ['0'])[0].upper() in ['1', 'TRUE']) # in the first generation of extended attributes of version 2 # this field was a position defining the attribute to # overwrite. now it is the name of the attribute to overwrite overwriteProp = attrs.get( 'univentionUDMPropertyLayoutOverwritePosition', [''])[0] if overwriteProp == '0': overwriteProp = None fullWidth = (attrs.get('univentionUDMPropertyLayoutFullWidth', ['0'])[0].upper() in ['1', 'TRUE']) deleteObjectClass = (attrs.get( 'univentionUDMPropertyDeleteObjectClass', ['0'])[0].upper() in ['1', 'TRUE']) tabAdvanced = (attrs.get('univentionUDMPropertyLayoutTabAdvanced', ['0'])[0].upper() in ['1', 'TRUE']) groupname = attrs.get( 'univentionUDMPropertyTranslationGroupName;entry-%s' % lang, attrs.get('univentionUDMPropertyLayoutGroupName', ['']))[0] try: groupPosition = int( attrs.get('univentionUDMPropertyLayoutGroupPosition', ['-1'])[0]) except TypeError: groupPosition = 0 ud.debug( ud.ADMIN, ud.INFO, 'update_extended_attributes: extended attribute (LDAP): %s' % str(attrs)) # only one is possible ==> overwriteTab wins if overwriteTab and overwriteProp: overwriteProp = None # add tab name to list if missing if tabname not in properties4tabs and not layoutDisabled: properties4tabs[tabname] = [] ud.debug( ud.ADMIN, ud.INFO, 'modules update_extended_attributes: custom fields init for tab %s' % tabname) # remember tab for purging if required if overwriteTab and tabname not in overwriteTabList and not layoutDisabled: overwriteTabList.append(tabname) if not layoutDisabled: # get position on tab # -1 == append on top tabPosition = attrs.get('univentionUDMPropertyLayoutPosition', ['-1'])[0] try: tabPosition = int(tabPosition) except: ud.debug( ud.ADMIN, ud.WARN, 'modules update_extended_attributes: custom field for tab %s: failed to convert tabNumber to int' % tabname) tabPosition = -1 if tabPosition == -1: for ea_layout in properties4tabs[tabname]: try: if ea_layout.position <= tabPosition: # CLEANUP, FIXME: pos is undefined! # does not break because of except: tabPosition = pos - 1 except: ud.debug( ud.ADMIN, ud.WARN, 'modules update_extended_attributes: custom field for tab %s: failed to set tabPosition' % tabname) properties4tabs[tabname].append( EA_Layout( name=pname, tabName=tabname, position=tabPosition, advanced=tabAdvanced, overwrite=overwriteProp, fullWidth=fullWidth, groupName=groupname, groupPosition=groupPosition, )) module.extended_udm_attributes.append( univention.admin.extended_attribute( name=pname, objClass=attrs.get('univentionUDMPropertyObjectClass', [])[0], ldapMapping=attrs['univentionUDMPropertyLdapMapping'][0], deleteObjClass=deleteObjectClass, syntax=propertySyntaxString, hook=propertyHook)) # overwrite tabs that have been added by UDM extended attributes for tab in module.extended_attribute_tabnames: if tab not in overwriteTabList: overwriteTabList.append(tab) if properties4tabs: lastprio = -1000 # CLEANUP: unneeded # remove layout of tabs that have been marked for replacement removetab = [] # CLEANUP: unneeded for tab in module.layout: if tab.label in overwriteTabList: tab.layout = [] for tabname in properties4tabs.keys(): priofields = sorted(properties4tabs[tabname]) currentTab = None # get existing fields if tab has not been overwritten for tab in module.layout: if tab.label == tabname: # found tab in layout currentTab = tab # tab found ==> leave loop break else: # tab not found in current layout, so add it currentTab = Tab(tabname, tabname, advanced=True) module.layout.append(currentTab) # remember tabs that have been added by UDM extended attributes if tabname not in module.extended_attribute_tabnames: module.extended_attribute_tabnames.append(tabname) # check if tab is empty ==> overwritePosition is impossible freshTab = len(currentTab.layout) == 0 for ea_layout in priofields: if currentTab.advanced and not ea_layout.advanced: currentTab.advanced = False # if groupName is set check if it exists, otherwise create it if ea_layout.groupName: for item in currentTab.layout: if isinstance(item, ILayoutElement ) and item.label == ea_layout.groupName: break else: # group does not exist grp = Group(ea_layout.groupName) if ea_layout.groupPosition > 0: currentTab.layout.insert( ea_layout.groupPosition - 1, grp) else: currentTab.layout.append(grp) # - existing property shall be overwritten AND # - tab is not new and has not been cleaned before AND # - position >= 1 (top left position is defined as 1) AND # - old property with given position exists if currentTab.exists(ea_layout.name): continue elif ea_layout.overwrite and not freshTab: # we want to overwrite an existing property # in the global fields ... if not ea_layout.groupName: replaced, layout = currentTab.replace( ea_layout.overwrite, ea_layout.name, recursive=True) if not replaced: # the property was not found so we'll append it currentTab.layout.append(ea_layout.name) else: for item in currentTab.layout: if isinstance( item, ILayoutElement ) and item.label == ea_layout.groupName: replaced, layout = item.replace( ea_layout.overwrite, ea_layout.name) if not replaced: # the property was not found so we'll append it item.append(ea_layout.label) else: if not ea_layout.groupName: currentTab.insert(ea_layout.position, ea_layout.name) else: for item in currentTab.layout: if isinstance( item, ILayoutElement ) and item.label == ea_layout.groupName: item.insert(ea_layout.position, ea_layout.name) break # check for properties with the syntax class LDAP_Search for pname, prop in module.property_descriptions.items(): if prop.syntax.name == 'LDAP_Search': prop.syntax._load(lo) if prop.syntax.viewonly: module.mapping.unregister(pname) elif univention.admin.syntax.is_syntax( prop.syntax, univention.admin.syntax.complex) and hasattr( prop.syntax, 'subsyntaxes'): for text, subsyn in prop.syntax.subsyntaxes: if subsyn.name == 'LDAP_Search': subsyn._load(lo)
multivalue=True, ), } property_descriptions.update( dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=slavePackagesFixedAttributes), emptyAttributesProperty(syntax=slavePackagesFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('General'), policy_short_description, layout=[ Group(_('General slave packages settings'), layout=['name', 'slavePackages', 'slavePackagesRemove']), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('slavePackages', 'univentionSlavePackages') mapping.register('slavePackagesRemove', 'univentionSlavePackagesRemove') register_policy_mapping(mapping) class object(univention.admin.handlers.simplePolicy): module = module
} property_descriptions.update( dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=dhcp_scopeFixedAttributes), emptyAttributesProperty(syntax=dhcp_scopeFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('Allow/Deny'), _('Allow/Deny/Ignore statements'), layout=[ Group(_('General DHCP allow/deny settings'), layout=[ 'name', ['scopeUnknownClients', 'bootp'], ['booting', 'duplicates'], 'declines' ]), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('scopeUnknownClients', 'univentionDhcpUnknownClients', None, univention.admin.mapping.ListToString) mapping.register('bootp', 'univentionDhcpBootp', None, univention.admin.mapping.ListToString) mapping.register('booting', 'univentionDhcpBooting', None, univention.admin.mapping.ListToString)
syntax=univention.admin.syntax.string, ), } property_descriptions.update( dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=releaseFixedAttributes), emptyAttributesProperty(syntax=releaseFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('General'), _('Automatic updates'), layout=[ Group(_('General automatic updates settings'), layout=['name', 'activate', 'releaseVersion']), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('releaseVersion', 'univentionUpdateVersion', None, univention.admin.mapping.ListToString) mapping.register('activate', 'univentionUpdateActivate', None, univention.admin.mapping.ListToString) register_policy_mapping(mapping) class object(univention.admin.handlers.simplePolicy):
univention.admin.property(short_description=_('Kerberos realm'), long_description='', syntax=univention.admin.syntax.string, multivalue=0, options=['kerberos'], required=1, may_change=0, default=(configRegistry.get('domainname', '').upper(), []), identifies=0), } layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('General'), layout=["name"]), ]), Tab(_('DNS'), _('DNS Zones'), advanced=True, layout=[["dnsForwardZone", "dnsReverseZone"]]), Tab(_('Samba'), _('Samba Settings'), advanced=True, layout=[["sambaDomainName", "sambaSID"], ["sambaNextUserRid", "sambaNextGroupRid"]]), Tab(_('Kerberos'), _('Kerberos Settings'), advanced=True, layout=['kerberosRealm']),
syntax=univention.admin.syntax.string, ), } property_descriptions.update( dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=dhcp_bootFixedAttributes), emptyAttributesProperty(syntax=dhcp_bootFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('Boot'), _('Boot settings'), layout=[ Group(_('General DHCP boot settings'), layout=['name', ['boot_server', 'boot_filename']]), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('boot_server', 'univentionDhcpBootServer', None, univention.admin.mapping.ListToString) mapping.register('boot_filename', 'univentionDhcpBootFilename', None, univention.admin.mapping.ListToString) register_policy_mapping(mapping) class object(univention.admin.handlers.simplePolicy):
} property_descriptions.update( dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=registryFixedAttributes), emptyAttributesProperty(syntax=registryFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('General'), _('These configuration settings will be set on the local UCS system.'), layout=[ Group(_('General Univention Configuration Registry settings'), layout=[ 'name', 'registry', ]), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) register_policy_mapping(mapping) class object(univention.admin.handlers.simplePolicy): module = module
multivalue=True, required=True, ), 'zonettl': univention.admin.property( short_description=_('Time to live'), long_description=_('The time this entry may be cached.'), syntax=univention.admin.syntax.UNIX_TimeInterval, default=(('3', 'hours'), []), dontsearch=True, ), } layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('General service record settings'), layout=['name', 'location', 'zonettl']), ]), ] def unmapName(old, encoding=()): items = old[0].decode(*encoding).split(u'.', 2) items[0] = items[0][1:] items[1] = items[1][1:] return items def mapName(old, encoding=()): if len(old) == 1: return old[0].encode(*encoding)
syntax=univention.admin.syntax.integer, dontsearch=True, options=['samba'] ), } layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('Computer account'), layout=[ ['name', 'description'], 'inventoryNumber', ]), Group(_('Network settings '), layout=[ 'network', 'mac', 'ip', ]), Group(_('DNS Forward and Reverse Lookup Zone'), layout=[ 'dnsEntryZoneForward', 'dnsEntryZoneReverse', ]), Group(_('DHCP'), layout=[ 'dhcpEntryZone' ]), ]), Tab(_('Account'), _('Account'), advanced=True, layout=[ 'password', 'primaryGroup' ]), Tab(_('Unix account'), _('Unix account settings'), advanced=True, layout=[ ['unixhome', 'shell'] ]),
} property_descriptions.update(dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=maintenanceFixedAttributes), emptyAttributesProperty(syntax=maintenanceFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('General'), _('Maintenance settings'), layout=[ Group(_('General maintenance settings'), layout=[ 'name', 'startup', 'shutdown', 'cron', 'reboot', ['month', 'weekday'], ['day', 'hour'], 'minute' ]), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('startup', 'univentionInstallationStartup', None, univention.admin.mapping.ListToString) mapping.register('shutdown', 'univentionInstallationShutdown', None, univention.admin.mapping.ListToString) mapping.register('reboot', 'univentionInstallationReboot', None, univention.admin.mapping.ListToString) mapping.register('cron', 'univentionCronActive', None, univention.admin.mapping.ListToString) register_policy_mapping(mapping)
multivalue=True, ), } property_descriptions.update( dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=ldapServerFixedAttributes), emptyAttributesProperty(syntax=ldapServerFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('General NFS mounts settings'), layout=['name', 'nfsMounts']), ]), policy_object_tab() ] def unmapMounts(old): return map(lambda x: x.split(' '), old) def mapMounts(old): return map(lambda x: ' '.join(x), old) mapping = univention.admin.mapping.mapping()
'emptyAttributes': univention.admin.property(short_description=_('Empty attributes'), long_description='', syntax=repositorySyncFixedAttributes, multivalue=1, options=[], required=0, may_change=1, identifies=0), } layout = [ Tab(_('General'), _('Repository syncronisation settings'), layout=[ Group(_('General'), layout=[ 'name', ['month', 'weekday'], ['day', 'hour'], 'minute' ]), ]), Tab(_('Object'), _('Object'), advanced=True, layout=[['requiredObjectClasses', 'prohibitedObjectClasses'], ['fixedAttributes', 'emptyAttributes']]), ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('requiredObjectClasses', 'requiredObjectClasses') mapping.register('prohibitedObjectClasses', 'prohibitedObjectClasses') mapping.register('fixedAttributes', 'fixedAttributes')
include_in_default_search=True, ), } property_descriptions.update( dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=printServerFixedAttributes), emptyAttributesProperty(syntax=printServerFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('General print server settings'), layout=['name', 'printServer']), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('printServer', 'univentionPrintServer', None, univention.admin.mapping.ListToString) register_policy_mapping(mapping) class object(univention.admin.handlers.simplePolicy): module = module
short_description=_('Groups that are allowed to send e-mails to the list'), long_description='', syntax=univention.admin.syntax.GroupDN, multivalue=True, required=False, may_change=True, dontsearch=True, identifies=False ) } layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('General mailing list settings'), layout=[ ["name", "description"], "mailAddress", "members" ]), ]), Tab(_('Authorized users'), _('Users that are allowed to send e-mails to the list'), advanced=True, layout=[ "allowedEmailUsers" ]), Tab(_('Authorized groups'), _('Groups that are allowed to send e-mails to the list'), advanced=True, layout=[ "allowedEmailGroups" ]) ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('description', 'description', None, univention.admin.mapping.ListToString) mapping.register('members', 'univentionMailMember')
'ptr_record': univention.admin.property(short_description=_('Pointer record'), long_description=_("FQDNs must end with a dot."), syntax=univention.admin.syntax.dnsName, multivalue=True, include_in_default_search=True, options=[], required=True, may_change=True), } layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('General pointer record settings'), layout=[ ['ip', 'ptr_record'], ]), ]), ] mapping = univention.admin.mapping.mapping() mapping.register('address', 'relativeDomainName', None, univention.admin.mapping.ListToString) mapping.register('ptr_record', 'pTRRecord') def ipv6(string): """ >>> ipv6('0123456789abcdef0123456789abcdef') '0123:4567:89ab:cdef:0123:4567:89ab:cdef'
long_description=_('Prohibited user name'), syntax=univention.admin.syntax.string, multivalue=1, include_in_default_search=1, options=[], required=0, may_change=1, identifies=0, ), } layout = [ Tab(_('General'), _('Prohibited user names'), layout=[ Group(_('General'), layout=[ 'name', 'usernames', ]), ]), ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('usernames', 'prohibitedUsername', None, None) class object(univention.admin.handlers.simpleLdap): module = module def __init__(self, co,
childs = 0 short_description = _('User: Password') long_description = '' options = {} property_descriptions = { 'username': univention.admin.property(short_description=_('User name'), long_description='', syntax=univention.admin.syntax.uid, multivalue=0, include_in_default_search=1, required=1, may_change=0, identifies=1), 'password': univention.admin.property(short_description=_('Password'), long_description='', syntax=univention.admin.syntax.userPasswd, multivalue=0, options=['posix', 'samba', 'kerberos', 'mail'], required=1, may_change=1, identifies=0, dontsearch=1), } layout = [Tab(_('Change password'), _('Change password'), ['password'])] object = univention.admin.handlers.users.user.object
multivalue=True, options=['posix'], required=False, may_change=True, dontsearch=True, identifies=False, copyable=True, ) } layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('Group account'), layout=[ ['name', 'description'], ]), Group(_('Members of this group'), layout=[ 'users', 'nestedGroup' ]), ]), Tab(_('Mail'), _('Mail settings of this group'), advanced=True, layout=[ 'mailAddress', 'allowedEmailUsers', 'allowedEmailGroups', ]), Tab(_('Host members'), _('Host members of this group'), advanced=True, layout=[ 'hosts' ]), Tab(_('Member of'), _('Membership in other groups'), advanced=True, layout=[ 'memberOf' ]),
dontsearch=True, ), 'cname': univention.admin.property( short_description=_('Canonical name'), long_description=_("The name this alias points to. A FQDN must end with a dot."), syntax=univention.admin.syntax.dnsName, include_in_default_search=True, required=True, ) } layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('General alias record settings'), layout=[ 'name', 'zonettl', 'cname' ]), ]) ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'relativeDomainName', stripDot, univention.admin.mapping.ListToString, encoding='ASCII') mapping.register('cname', 'cNAMERecord', None, univention.admin.mapping.ListToString, encoding='ASCII') mapping.register('zonettl', 'dNSTTL', univention.admin.mapping.mapUNIX_TimeInterval, univention.admin.mapping.unmapUNIX_TimeInterval) class object(univention.admin.handlers.simpleLdap): module = module
layout = [ Tab( _('General'), _('Portal options'), layout=[ Group(_('Name'), layout=[ ["name"], ["displayName"], ]), Group(_('Visibility'), layout=[ ["portalComputers"], ]), Group(_('Appearance'), layout=[ ["logo"], ["background"], ["cssBackground"], ["fontColor"], ]), Group( _('General Content'), layout=[ # ["showMenu"], # ["showSearch"], # ["showLogin"], ["showApps"], # ["showServers"], ["links"], ]), ]), Tab(_('Portal categories and entries'),
} property_descriptions.update( dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=dhcp_statementsFixedAttributes), emptyAttributesProperty(syntax=dhcp_statementsFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('DHCP statements'), _('Miscellaneous DHCP statements'), layout=[ Group(_('General DHCP statements settings'), layout=[ 'name', ['authoritative', 'boot-unknown-clients'], ['pingCheck', 'getLeaseHostnames'], ['serverIdentifier', 'serverName'] ]), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('authoritative', 'univentionDhcpAuthoritative', None, univention.admin.mapping.ListToString) mapping.register('boot-unknown-clients', 'univentionDhcpBootUnknownClients', None, univention.admin.mapping.ListToString) mapping.register('pingCheck', 'univentionDhcpPingCheck', None, univention.admin.mapping.ListToString)
long_description=_('The IP addresses used to send data to all hosts inside the network.'), syntax=univention.admin.syntax.ipv4Address, ), 'range': univention.admin.property( short_description=_('Dynamic address assignment'), long_description=_('Define a pool of addresses available for dynamic address assignment.'), syntax=univention.admin.syntax.IPv4_AddressRange, multivalue=True, ), } layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('General DHCP shared subnet settings'), layout=[ ['subnet', 'subnetmask'], 'broadcastaddress', 'range' ]), ]), ] mapping = univention.admin.mapping.mapping() mapping.register('subnet', 'cn', None, univention.admin.mapping.ListToString) mapping.register('range', 'dhcpRange', rangeMap, rangeUnmap) mapping.register('subnetmask', 'dhcpNetMask', None, univention.admin.mapping.ListToString) mapping.register('broadcastaddress', 'univentionDhcpBroadcastAddress', None, univention.admin.mapping.ListToString, encoding='ASCII') add_dhcp_options(__name__)
property_descriptions.update( dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=dhcp_leasetimeFixedAttributes), emptyAttributesProperty(syntax=dhcp_leasetimeFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('Lease Time'), _('DHCP lease time'), layout=[ Group(_('General DHCP lease time settings'), layout=[ 'name', 'lease_time_default', 'lease_time_min', 'lease_time_max', ]), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('lease_time_default', 'univentionDhcpLeaseTimeDefault', univention.admin.mapping.mapUNIX_TimeInterval, univention.admin.mapping.unmapUNIX_TimeInterval) mapping.register('lease_time_max', 'univentionDhcpLeaseTimeMax', univention.admin.mapping.mapUNIX_TimeInterval,
), } property_descriptions.update(dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=dhcp_dnsupdateFixedAttributes), emptyAttributesProperty(syntax=dhcp_dnsupdateFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('DNS Update'), _('Dynamic DNS update'), layout=[ Group(_('General DHCP dynamic DNS settings'), layout=[ 'name', ['ddnsDomainname', 'ddnsRevDomainname'], ['ddnsUpdates', 'ddnsUpdateStyle'], ['ddnsDoForwardUpdate', 'updateStaticLeases'], 'clientUpdates' ]), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('ddnsHostname', 'univentionDhcpDdnsHostname', None, univention.admin.mapping.ListToString) mapping.register('ddnsDomainname', 'univentionDhcpDdnsDomainname', None, univention.admin.mapping.ListToString) mapping.register('ddnsRevDomainname', 'univentionDhcpDdnsRevDomainname', None, univention.admin.mapping.ListToString) mapping.register('ddnsUpdates', 'univentionDhcpDdnsUpdates', None, univention.admin.mapping.ListToString) mapping.register('ddnsUpdateStyle', 'univentionDhcpDdnsUpdateStyle', None, univention.admin.mapping.ListToString) mapping.register('ddnsDoForwardUpdate', 'univentionDhcpDoForwardUpdates', None, univention.admin.mapping.ListToString)
syntax=univention.admin.syntax.boolean, multivalue=False, options=[], required=False, may_change=True, identifies=False), } layout = [ Tab(_('General'), _('Basic values'), layout=[ Group(_('General Samba configuration settings'), layout=[ "name", ["passwordLength", "passwordHistory"], ["minPasswordAge", "maxPasswordAge"], ["badLockoutAttempts", "lockoutDuration"], ["resetCountMinutes", "logonToChangePW"], ["disconnectTime", "refuseMachinePWChange"], ]), ]), ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('passwordLength', 'univentionSambaMinPasswordLength', None, univention.admin.mapping.ListToString) mapping.register('passwordHistory', 'univentionSambaPasswordHistory', None, univention.admin.mapping.ListToString) mapping.register('minPasswordAge', 'univentionSambaMinPasswordAge',
'Key-value pair storing needed parameters for the Cloud Connection' ), syntax=univention.admin.syntax.keyAndValue, multivalue=True, dontsearch=True), } # UDM web layout layout = [ Tab(_('General'), _('Virtual machine cloud connection'), layout=[ Group(_('General'), layout=[ "name", "type", "searchPattern", "includeUCSimages", "availableImages", "parameter", ]) ]) ] def mapKeyAndValue(old): return ['='.join(entry) for entry in old] def unmapKeyAndValue(old): return [entry.split('=', 1) for entry in old]
short_description=_('Internal name'), long_description='', syntax=univention.admin.syntax.string_numbers_letters_dots, include_in_default_search=True, required=True, identifies=True), 'displayName': univention.admin.property( short_description=_('Display Name'), long_description='', syntax=univention.admin.syntax.LocalizedDisplayName, multivalue=True, required=True, ), } layout = [Tab(_('General'), _('Basic settings'), layout=["name"])] mapping = univention.admin.mapping.mapping() class object(univention.admin.handlers.simpleLdap): module = module def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=False, required=False,
Tab(_(u'General'), _(u'Basic Settings'), layout=[ Group(_('SAML service provider basic settings'), layout=[ [ "isActivated", ], [ "Identifier", ], [ "AssertionConsumerService", ], [ "singleLogoutService", ], [ "NameIDFormat", ], [ "simplesamlNameIDAttribute", ], [ "serviceProviderOrganizationName", ], [ "serviceproviderdescription", ], ]), ]),
may_change=True, identifies=False), } property_descriptions.update( dict([ requiredObjectClassesProperty(), prohibitedObjectClassesProperty(), fixedAttributesProperty(syntax=memberPackagesFixedAttributes), emptyAttributesProperty(syntax=memberPackagesFixedAttributes), ldapFilterProperty(), ])) layout = [ Tab(_('General'), policy_short_description, layout=[ Group(_('General member server packages settings'), layout=['name', 'memberPackages', 'memberPackagesRemove']), ]), policy_object_tab() ] mapping = univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('memberPackages', 'univentionMemberPackages') mapping.register('memberPackagesRemove', 'univentionMemberPackagesRemove') register_policy_mapping(mapping) class object(univention.admin.handlers.simplePolicy): module = module
dontsearch=True, options=['samba'] ), } layout = [ Tab(_('General'), _('Basic settings'), layout=[ Group(_('Computer account'), layout=[ ['name', 'description'], ['operatingSystem', 'operatingSystemVersion'], 'inventoryNumber', ]), Group(_('Network settings '), layout=[ 'network', 'mac', 'ip', ]), Group(_('DNS Forward and Reverse Lookup Zone'), layout=[ 'dnsEntryZoneForward', 'dnsEntryZoneReverse', ]), Group(_('DHCP'), layout=[ 'dhcpEntryZone' ]), ]), Tab(_('Account'), _('Account'), advanced=True, layout=[ 'password', 'ntCompatibility', 'primaryGroup' ]), Tab(_('Unix account'), _('Unix account settings'), advanced=True, layout=[