Univention Bugzilla – Attachment 8522 Details for
Bug 43663
Register Listener Modules via LDAP
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
univention-directory-manager-modules.patch
univention-directory-manager-modules.patch (text/plain), 16.14 KB, created by
Stefan Gohmann
on 2017-03-12 18:44 CET
(
hide
)
Description:
univention-directory-manager-modules.patch
Filename:
MIME Type:
Creator:
Stefan Gohmann
Created:
2017-03-12 18:44 CET
Size:
16.14 KB
patch
obsolete
>Index: modules/univention/admin/handlers/settings/listener.py >=================================================================== >--- modules/univention/admin/handlers/settings/listener.py (nicht existent) >+++ modules/univention/admin/handlers/settings/listener.py (Arbeitskopie) >@@ -0,0 +1,237 @@ >+# -*- coding: utf-8 -*- >+# >+# Univention Directory Manager Modules >+# direcory manager module for Listener extensions >+# >+# Copyright 2017 Univention GmbH >+# >+# http://www.univention.de/ >+# >+# All rights reserved. >+# >+# The source code of this program is made available >+# under the terms of the GNU Affero General Public License version 3 >+# (GNU AGPL V3) as published by the Free Software Foundation. >+# >+# Binary versions of this program provided by Univention to you as >+# well as other copyrighted, protected or trademarked materials like >+# Logos, graphics, fonts, specific documentations and configurations, >+# cryptographic keys etc. are subject to a license agreement between >+# you and Univention and not subject to the GNU AGPL V3. >+# >+# In the case you use this program under the terms of the GNU AGPL V3, >+# the program is provided in the hope that it will be useful, >+# but WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU Affero General Public License for more details. >+# >+# You should have received a copy of the GNU Affero General Public >+# License with the Debian GNU/Linux or Univention distribution in file >+# /usr/share/common-licenses/AGPL-3; if not, see >+# <http://www.gnu.org/licenses/>. >+ >+from univention.admin.layout import Tab, Group >+import univention.admin.filter >+import univention.admin.handlers >+import univention.admin.password >+import univention.admin.allocators >+import univention.admin.localization >+import apt >+ >+translation = univention.admin.localization.translation('univention.admin.handlers.settings') >+_ = translation.translate >+ >+OC = "univentionListenerExtension" >+ >+module = 'settings/listener' >+superordinate = 'settings/cn' >+childs = 0 >+operations = ['add', 'edit', 'remove', 'search', 'move'] >+short_description = _('Settings: Listener Extension') >+long_description = '' >+options = {} >+property_descriptions = { >+ 'name': univention.admin.property( >+ short_description=_('Listener name'), >+ long_description='', >+ syntax=univention.admin.syntax.string, >+ multivalue=False, >+ include_in_default_search=True, >+ options=[], >+ required=True, >+ may_change=True, >+ identifies=True >+ ), >+ 'filename': univention.admin.property( >+ short_description=_('Listener file name'), >+ long_description='', >+ syntax=univention.admin.syntax.BaseFilename, >+ multivalue=False, >+ options=[], >+ required=True, >+ may_change=True, >+ default='', >+ identifies=False >+ ), >+ 'data': univention.admin.property( >+ short_description=_('Listener data'), >+ long_description='', >+ syntax=univention.admin.syntax.Base64Bzip2Text, >+ multivalue=False, >+ options=[], >+ required=True, >+ may_change=True, >+ identifies=False >+ ), >+ 'active': univention.admin.property( >+ short_description=_('Active'), >+ long_description='', >+ syntax=univention.admin.syntax.TrueFalseUp, >+ default='FALSE', >+ multivalue=False, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'servers': univention.admin.property( >+ short_description=_('Servers'), >+ long_description='', >+ syntax=univention.admin.syntax.UCS_Server, >+ multivalue=True, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'appidentifier': univention.admin.property( >+ short_description=_('App identifier'), >+ long_description='', >+ syntax=univention.admin.syntax.TextArea, >+ multivalue=True, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'package': univention.admin.property( >+ short_description=_('Software package'), >+ long_description='', >+ syntax=univention.admin.syntax.string, >+ multivalue=False, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'packageversion': univention.admin.property( >+ short_description=_('Software package version'), >+ long_description='', >+ syntax=univention.admin.syntax.DebianPackageVersion, >+ multivalue=False, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'ucsversionstart': univention.admin.property( >+ short_description=_('Minimal UCS version'), >+ long_description='', >+ syntax=univention.admin.syntax.UCSVersion, >+ multivalue=False, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'ucsversionend': univention.admin.property( >+ short_description=_('Maximal UCS version'), >+ long_description='', >+ syntax=univention.admin.syntax.UCSVersion, >+ multivalue=False, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+} >+ >+layout = [ >+ Tab(_('General'), _('Basic values'), layout=[ >+ Group(_('General Listener extension settings'), layout=[ >+ ["name"], >+ ["filename"], >+ ["data"], >+ ["servers"], >+ ]), >+ Group(_('Metadata'), layout=[ >+ ["package"], >+ ["packageversion"], >+ ["appidentifier"], >+ ]), >+ Group(_('UCS Version Dependencies'), layout=[ >+ ["ucsversionstart"], >+ ["ucsversionend"], >+ ]), >+ Group(_('Activated'), layout=[ >+ ["active"], >+ ]), >+ ]), >+] >+ >+mapping = univention.admin.mapping.mapping() >+mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) >+mapping.register('filename', 'univentionListenerFilename', None, univention.admin.mapping.ListToString) >+mapping.register('data', 'univentionListenerData', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) >+mapping.register('active', 'univentionListenerActive', None, univention.admin.mapping.ListToString) >+mapping.register('servers', 'univentionListenerServers') >+mapping.register('appidentifier', 'univentionAppIdentifier') >+mapping.register('package', 'univentionOwnedByPackage', None, univention.admin.mapping.ListToString) >+mapping.register('packageversion', 'univentionOwnedByPackageVersion', None, univention.admin.mapping.ListToString) >+mapping.register('ucsversionstart', 'univentionUCSVersionStart', None, univention.admin.mapping.ListToString) >+mapping.register('ucsversionend', 'univentionUCSVersionEnd', None, univention.admin.mapping.ListToString) >+ >+ >+class object(univention.admin.handlers.simpleLdap): >+ module = module >+ >+ def open(self): >+ univention.admin.handlers.simpleLdap.open(self) >+ >+ def _ldap_addlist(self): >+ ocs = ['top', 'univentionObjectMetadata', OC] >+ >+ return [ >+ ('objectClass', ocs), >+ ] >+ >+ def _ldap_pre_modify(self): >+ diff_keys = [key for key in self.info.keys() if self.info.get(key) != self.oldinfo.get(key) and key not in ('active', 'appidentifier')] >+ if not diff_keys: # check for trivial change >+ return >+ if not self.hasChanged('package'): >+ old_version = self.oldinfo.get('packageversion', '0') >+ if not apt.apt_pkg.version_compare(self['packageversion'], old_version) > -1: >+ raise univention.admin.uexceptions.valueInvalidSyntax(_('packageversion: Version must not be lower than the current one.')) >+ >+ >+def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=False, required=False, timeout=-1, sizelimit=0): >+ >+ filter = univention.admin.filter.conjunction('&', [ >+ univention.admin.filter.expression('objectClass', OC), >+ ]) >+ >+ if filter_s: >+ filter_p = univention.admin.filter.parse(filter_s) >+ univention.admin.filter.walk(filter_p, univention.admin.mapping.mapRewrite, arg=mapping) >+ filter.expressions.append(filter_p) >+ >+ res = [] >+ for dn, attrs in lo.search(unicode(filter), base, scope, [], unique, required, timeout, sizelimit): >+ res.append(object(co, lo, None, dn, attributes=attrs)) >+ return res >+ >+ >+def identify(dn, attr, canonical=0): >+ >+ return OC in attr.get('objectClass', []) >Index: modules/univention/admin/handlers/settings/ucr_extension.py >=================================================================== >--- modules/univention/admin/handlers/settings/ucr_extension.py (nicht existent) >+++ modules/univention/admin/handlers/settings/ucr_extension.py (Arbeitskopie) >@@ -0,0 +1,267 @@ >+# -*- coding: utf-8 -*- >+# >+# Univention Directory Manager Modules >+# direcory manager module for UCR extensions >+# >+# Copyright 2017 Univention GmbH >+# >+# http://www.univention.de/ >+# >+# All rights reserved. >+# >+# The source code of this program is made available >+# under the terms of the GNU Affero General Public License version 3 >+# (GNU AGPL V3) as published by the Free Software Foundation. >+# >+# Binary versions of this program provided by Univention to you as >+# well as other copyrighted, protected or trademarked materials like >+# Logos, graphics, fonts, specific documentations and configurations, >+# cryptographic keys etc. are subject to a license agreement between >+# you and Univention and not subject to the GNU AGPL V3. >+# >+# In the case you use this program under the terms of the GNU AGPL V3, >+# the program is provided in the hope that it will be useful, >+# but WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU Affero General Public License for more details. >+# >+# You should have received a copy of the GNU Affero General Public >+# License with the Debian GNU/Linux or Univention distribution in file >+# /usr/share/common-licenses/AGPL-3; if not, see >+# <http://www.gnu.org/licenses/>. >+ >+from univention.admin.layout import Tab, Group >+import univention.admin.filter >+import univention.admin.handlers >+import univention.admin.password >+import univention.admin.allocators >+import univention.admin.localization >+import apt >+ >+translation = univention.admin.localization.translation('univention.admin.handlers.settings') >+_ = translation.translate >+ >+OC = "univentionUCRExtension" >+ >+module = 'settings/ucr_extension' >+superordinate = 'settings/cn' >+childs = 0 >+operations = ['add', 'edit', 'remove', 'search', 'move'] >+short_description = _('Settings: UCR Extension') >+long_description = '' >+options = {} >+property_descriptions = { >+ 'name': univention.admin.property( >+ short_description=_('UCR name'), >+ long_description='', >+ syntax=univention.admin.syntax.string, >+ multivalue=False, >+ include_in_default_search=True, >+ options=[], >+ required=True, >+ may_change=True, >+ identifies=True >+ ), >+ 'filename': univention.admin.property( >+ short_description=_('UCR file name'), >+ long_description='', >+ syntax=univention.admin.syntax.BaseFilename, >+ multivalue=False, >+ options=[], >+ required=True, >+ may_change=True, >+ default='', >+ identifies=False >+ ), >+ 'infodata': univention.admin.property( >+ short_description=_('UCR info data'), >+ long_description='', >+ syntax=univention.admin.syntax.Base64Bzip2Text, >+ multivalue=False, >+ options=[], >+ required=True, >+ may_change=True, >+ identifies=False >+ ), >+ 'variablesinfodata': univention.admin.property( >+ short_description=_('UCR variables info data'), >+ long_description='', >+ syntax=univention.admin.syntax.Base64Bzip2Text, >+ multivalue=False, >+ options=[], >+ required=True, >+ may_change=True, >+ identifies=False >+ ), >+ 'template': univention.admin.property( >+ short_description=_('UCR temaplates'), >+ long_description='', >+ syntax=univention.admin.syntax.Base64Bzip2Text, >+ multivalue=True, >+ options=[], >+ required=True, >+ may_change=True, >+ identifies=False >+ ), >+ 'scripts': univention.admin.property( >+ short_description=_('UCR scripts'), >+ long_description='', >+ syntax=univention.admin.syntax.Base64Bzip2Text, >+ multivalue=True, >+ options=[], >+ required=True, >+ may_change=True, >+ identifies=False >+ ), >+ 'active': univention.admin.property( >+ short_description=_('Active'), >+ long_description='', >+ syntax=univention.admin.syntax.TrueFalseUp, >+ default='FALSE', >+ multivalue=False, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'servers': univention.admin.property( >+ short_description=_('Servers'), >+ long_description='', >+ syntax=univention.admin.syntax.UCS_Server, >+ multivalue=True, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'appidentifier': univention.admin.property( >+ short_description=_('App identifier'), >+ long_description='', >+ syntax=univention.admin.syntax.TextArea, >+ multivalue=True, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'package': univention.admin.property( >+ short_description=_('Software package'), >+ long_description='', >+ syntax=univention.admin.syntax.string, >+ multivalue=False, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'packageversion': univention.admin.property( >+ short_description=_('Software package version'), >+ long_description='', >+ syntax=univention.admin.syntax.DebianPackageVersion, >+ multivalue=False, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'ucsversionstart': univention.admin.property( >+ short_description=_('Minimal UCS version'), >+ long_description='', >+ syntax=univention.admin.syntax.UCSVersion, >+ multivalue=False, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+ 'ucsversionend': univention.admin.property( >+ short_description=_('Maximal UCS version'), >+ long_description='', >+ syntax=univention.admin.syntax.UCSVersion, >+ multivalue=False, >+ options=[], >+ required=False, >+ may_change=True, >+ identifies=False >+ ), >+} >+ >+layout = [ >+ Tab(_('General'), _('Basic values'), layout=[ >+ Group(_('General UCR extension settings'), layout=[ >+ ["name"], >+ ["filename"], >+ ["data"], >+ ["servers"], >+ ]), >+ Group(_('Metadata'), layout=[ >+ ["package"], >+ ["packageversion"], >+ ["appidentifier"], >+ ]), >+ Group(_('UCS Version Dependencies'), layout=[ >+ ["ucsversionstart"], >+ ["ucsversionend"], >+ ]), >+ Group(_('Activated'), layout=[ >+ ["active"], >+ ]), >+ ]), >+] >+ >+mapping = univention.admin.mapping.mapping() >+mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) >+mapping.register('filename', 'univentionUCRFilename', None, univention.admin.mapping.ListToString) >+mapping.register('metadata', 'univentionUCRMetaData', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) >+mapping.register('active', 'univentionUCRActive', None, univention.admin.mapping.ListToString) >+mapping.register('servers', 'univentionUCRServers') >+mapping.register('appidentifier', 'univentionAppIdentifier') >+mapping.register('package', 'univentionOwnedByPackage', None, univention.admin.mapping.ListToString) >+mapping.register('packageversion', 'univentionOwnedByPackageVersion', None, univention.admin.mapping.ListToString) >+mapping.register('ucsversionstart', 'univentionUCSVersionStart', None, univention.admin.mapping.ListToString) >+mapping.register('ucsversionend', 'univentionUCSVersionEnd', None, univention.admin.mapping.ListToString) >+ >+ >+class object(univention.admin.handlers.simpleLdap): >+ module = module >+ >+ def open(self): >+ univention.admin.handlers.simpleLdap.open(self) >+ >+ def _ldap_addlist(self): >+ ocs = ['top', 'univentionObjectMetadata', OC] >+ >+ return [ >+ ('objectClass', ocs), >+ ] >+ >+ def _ldap_pre_modify(self): >+ diff_keys = [key for key in self.info.keys() if self.info.get(key) != self.oldinfo.get(key) and key not in ('active', 'appidentifier')] >+ if not diff_keys: # check for trivial change >+ return >+ if not self.hasChanged('package'): >+ old_version = self.oldinfo.get('packageversion', '0') >+ if not apt.apt_pkg.version_compare(self['packageversion'], old_version) > -1: >+ raise univention.admin.uexceptions.valueInvalidSyntax(_('packageversion: Version must not be lower than the current one.')) >+ >+ >+def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=False, required=False, timeout=-1, sizelimit=0): >+ >+ filter = univention.admin.filter.conjunction('&', [ >+ univention.admin.filter.expression('objectClass', OC), >+ ]) >+ >+ if filter_s: >+ filter_p = univention.admin.filter.parse(filter_s) >+ univention.admin.filter.walk(filter_p, univention.admin.mapping.mapRewrite, arg=mapping) >+ filter.expressions.append(filter_p) >+ >+ res = [] >+ for dn, attrs in lo.search(unicode(filter), base, scope, [], unique, required, timeout, sizelimit): >+ res.append(object(co, lo, None, dn, attributes=attrs)) >+ return res >+ >+ >+def identify(dn, attr, canonical=0): >+ >+ return OC in attr.get('objectClass', [])
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
|
Diff
Attachments on
bug 43663
:
8520
|
8521
| 8522