Exemplo n.º 1
0
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)
Exemplo n.º 2
0
        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):
Exemplo n.º 5
0
    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']),
Exemplo n.º 6
0
        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
Exemplo n.º 8
0
        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()
Exemplo n.º 12
0
    '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')
Exemplo n.º 13
0
        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
Exemplo n.º 14
0
		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')
Exemplo n.º 15
0
    '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'
Exemplo n.º 16
0
        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,
Exemplo n.º 17
0
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
Exemplo n.º 18
0
		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
Exemplo n.º 20
0
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)
Exemplo n.º 22
0
		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__)

Exemplo n.º 23
0
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,
Exemplo n.º 24
0
	),
}
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)
Exemplo n.º 25
0
        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,
Exemplo n.º 28
0
 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=[