commit 7348b67f51282661723b94bcf4313710db7d49cb Author: Florian Best Date: Wed Oct 9 14:26:38 2019 +0200 Bug #49838: add MS GWPL policy type diff --git a/services/univention-s4-connector/97univention-s4-connector.inst b/services/univention-s4-connector/97univention-s4-connector.inst old mode 100644 new mode 100755 index d794ae1d3f..5e3a234f1f --- a/services/univention-s4-connector/97univention-s4-connector.inst +++ b/services/univention-s4-connector/97univention-s4-connector.inst @@ -32,7 +32,7 @@ ## joinscript api: bindpwdfile -VERSION=6 +VERSION=7 . /usr/share/univention-join/joinscripthelper.lib joinscript_init @@ -160,6 +160,18 @@ ucs_registerLDAPExtension "$@" \ --schema /usr/share/univention-s4-connector/ldap/msprintconnectionpolicy.schema \ --udm_module /usr/share/pyshared/univention/admin/handlers/settings/msprintconnectionpolicy.py || die +ucs_registerLDAPExtension "$@" \ + --schema /usr/share/univention-s4-connector/ldap/msgpwl.schema || die + +ucs_registerLDAPExtension "$@" \ + --udm_module /usr/share/pyshared/univention/admin/handlers/ms/gpwl-wireless.py || die + +ucs_registerLDAPExtension "$@" \ + --udm_module /usr/share/pyshared/univention/admin/handlers/ms/gpwl-wired.py || die + +ucs_registerLDAPExtension "$@" \ + --udm_module /usr/share/pyshared/univention/admin/handlers/ms/gpwl-wireless-blob.py \ || die + if ! is_ucr_true 'connector/s4/allow/secondary'; then s4connector_dc=$(get_available_s4connector_dc) || exit $? @@ -261,6 +273,11 @@ if [ -z "$s4connector_dc" ] \ # resync msPrint-ConnectionPolicy objects from samba to ucs /usr/share/univention-s4-connector/resync_object_from_s4.py --filter '(objectClass=msPrint-ConnectionPolicy)' fi + + if [ $JS_LAST_EXECUTED_VERSION -lt 7 ] && is_ucr_true connector/s4/mapping/msgpwl; then + # resync msgpwl objects from samba to ucs + /usr/share/univention-s4-connector/resync_object_from_s4.py --filter '(|(objectClass=ms-net-ieee-80211-GroupPolicy)(objectClass=ms-net-ieee-8023-GroupPolicy)(objectClass=msieee80211-Policy))' + fi fi /etc/init.d/univention-s4-connector restart diff --git a/services/univention-s4-connector/conffiles/etc/univention/s4connector/s4/mapping.py b/services/univention-s4-connector/conffiles/etc/univention/s4connector/s4/mapping.py index 30d7499dc6..46555b83a1 100644 --- a/services/univention-s4-connector/conffiles/etc/univention/s4connector/s4/mapping.py +++ b/services/univention-s4-connector/conffiles/etc/univention/s4connector/s4/mapping.py @@ -880,6 +880,135 @@ s4_mapping = { ), }, ), + 'ms/gpwl-wireless': univention.s4connector.property( + ucs_module='ms/gpwl-wireless', + sync_mode=str(configRegistry.get('connector/s4/mapping/gpwl/syncmode', configRegistry.get('connector/s4/mapping/syncmode'))), + scope='sub', + con_search_filter='(objectClass=ms-net-ieee-80211-GroupPolicy)', + ignore_filter=ignore_filter_from_attr('cn', 'connector/s4/mapping/gpwl/ignorelist'), + ignore_subtree=global_ignore_subtree, + con_create_objectclass=['top', 'ms-net-ieee-80211-GroupPolicy'], + attributes={ + 'cn': univention.s4connector.attribute( + ucs_attribute='name', + ldap_attribute='cn', + con_attribute='cn', + required=1, + compare_function=univention.s4connector.compare_lowercase, + single_value=True, + ), + 'description': univention.s4connector.attribute( + ucs_attribute='description', + ldap_attribute='description', + con_attribute='description', + single_value=True, + ), + 'ms-net-ieee-80211-GP-PolicyReserved': univention.s4connector.attribute( + ucs_attribute='ms-net-ieee-80211-GP-PolicyReserved', + ldap_attribute='ms-net-ieee-80211-GP-PolicyReserved', + con_attribute='ms-net-ieee-80211-GP-PolicyReserved', + single_value=True, + ), + 'ms-net-ieee-80211-GP-PolicyData': univention.s4connector.attribute( + ucs_attribute='ms-net-ieee-80211-GP-PolicyData', + ldap_attribute='ms-net-ieee-80211-GP-PolicyData', + con_attribute='ms-net-ieee-80211-GP-PolicyData', + single_value=True, + ), + 'ms-net-ieee-80211-GP-PolicyGUID': univention.s4connector.attribute( + ucs_attribute='ms-net-ieee-80211-GP-PolicyGUID', + ldap_attribute='ms-net-ieee-80211-GP-PolicyGUID', + con_attribute='ms-net-ieee-80211-GP-PolicyGUID', + single_value=True, + ), + }, + ), + 'ms/gpwl-wired': univention.s4connector.property( + ucs_module='ms/gpwl-wired', + sync_mode=str(configRegistry.get('connector/s4/mapping/gpwl/syncmode', configRegistry.get('connector/s4/mapping/syncmode'))), + scope='sub', + con_search_filter='(objectClass=ms-net-ieee-8023-GroupPolicy)', + ignore_filter=ignore_filter_from_attr('cn', 'connector/s4/mapping/gpwl/ignorelist'), + ignore_subtree=global_ignore_subtree, + con_create_objectclass=['top', 'ms-net-ieee-8023-GroupPolicy'], + attributes={ + 'cn': univention.s4connector.attribute( + ucs_attribute='name', + ldap_attribute='cn', + con_attribute='cn', + required=1, + compare_function=univention.s4connector.compare_lowercase, + single_value=True, + ), + 'description': univention.s4connector.attribute( + ucs_attribute='description', + ldap_attribute='description', + con_attribute='description', + single_value=True, + ), + 'ms-net-ieee-8023-GP-PolicyReserved': univention.s4connector.attribute( + ucs_attribute='ms-net-ieee-8023-GP-PolicyReserved', + ldap_attribute='ms-net-ieee-8023-GP-PolicyReserved', + con_attribute='ms-net-ieee-8023-GP-PolicyReserved', + single_value=True, + ), + 'ms-net-ieee-8023-GP-PolicyData': univention.s4connector.attribute( + ucs_attribute='ms-net-ieee-8023-GP-PolicyData', + ldap_attribute='ms-net-ieee-8023-GP-PolicyData', + con_attribute='ms-net-ieee-8023-GP-PolicyData', + single_value=True, + ), + 'ms-net-ieee-8023-GP-PolicyGUID': univention.s4connector.attribute( + ucs_attribute='ms-net-ieee-8023-GP-PolicyGUID', + ldap_attribute='ms-net-ieee-8023-GP-PolicyGUID', + con_attribute='ms-net-ieee-8023-GP-PolicyGUID', + single_value=True, + ), + }, + ), + 'ms/gpwl-wireless-blob': univention.s4connector.property( + ucs_module='ms/gpwl-wireless-blob', + sync_mode=str(configRegistry.get('connector/s4/mapping/gpwl/syncmode', configRegistry.get('connector/s4/mapping/syncmode'))), + scope='sub', + con_search_filter='(objectClass=msieee80211-Policy)', + ignore_filter=ignore_filter_from_attr('cn', 'connector/s4/mapping/gpwl/ignorelist'), + ignore_subtree=global_ignore_subtree, + con_create_objectclass=['top', 'msieee80211-Policy'], + attributes={ + 'cn': univention.s4connector.attribute( + ucs_attribute='name', + ldap_attribute='cn', + con_attribute='cn', + required=1, + compare_function=univention.s4connector.compare_lowercase, + single_value=True, + ), + 'description': univention.s4connector.attribute( + ucs_attribute='description', + ldap_attribute='description', + con_attribute='description', + single_value=True, + ), + 'msieee80211-ID': univention.s4connector.attribute( + ucs_attribute='msieee80211-ID', + ldap_attribute='msieee80211-ID', + con_attribute='msieee80211-ID', + single_value=True, + ), + 'msieee80211-DataType': univention.s4connector.attribute( + ucs_attribute='msieee80211-DataType', + ldap_attribute='msieee80211-DataType', + con_attribute='msieee80211-DataType', + single_value=True, + ), + 'msieee80211-Data': univention.s4connector.attribute( + ucs_attribute='msieee80211-Data', + ldap_attribute='msieee80211-Data', + con_attribute='msieee80211-Data', + single_value=True, + ), + }, + ), 'container': univention.s4connector.property( ucs_module='container/cn', sync_mode=configRegistry.get('connector/s4/mapping/container/syncmode', configRegistry.get('connector/s4/mapping/syncmode')), @@ -970,6 +1099,10 @@ if not configRegistry.is_true('connector/s4/mapping/wmifilter', False): s4_mapping.pop('msWMIFilter') if not configRegistry.is_true('connector/s4/mapping/msprintconnectionpolicy', False): s4_mapping.pop('msPrintConnectionPolicy') +if not configRegistry.is_true('connector/s4/mapping/msgwl', False): + s4_mapping.pop('ms/gpwl-wireless') + s4_mapping.pop('ms/gpwl-wired') + s4_mapping.pop('ms/gpwl-wireless-blob') #print 'global_ignore_subtree = %r' % (global_ignore_subtree,) #print 's4_mapping = %s' % (pprint.pformat(s4_mapping, indent=4, width=250),) diff --git a/services/univention-s4-connector/debian/python-univention-connector-s4.install b/services/univention-s4-connector/debian/python-univention-connector-s4.install index 082b1a67b9..02b9862760 100644 --- a/services/univention-s4-connector/debian/python-univention-connector-s4.install +++ b/services/univention-s4-connector/debian/python-univention-connector-s4.install @@ -2,4 +2,5 @@ modules/univention/s4connector/*.py usr/lib/python2.7/dist-packages/univention/s modules/univention/s4connector/s4/*.py usr/lib/python2.7/dist-packages/univention/s4connector/s4/ modules/univention/admin/handlers/container/*.py usr/lib/python2.7/dist-packages/univention/admin/handlers/container/ modules/univention/admin/handlers/settings/*.py usr/lib/python2.7/dist-packages/univention/admin/handlers/settings/ +modules/univention/admin/handlers/ms/*.py usr/lib/python2.7/dist-packages/univention/admin/handlers/ms/ python-univention-connector-s4.public usr/share/python-support/ diff --git a/services/univention-s4-connector/debian/python3-univention-connector-s4.install b/services/univention-s4-connector/debian/python3-univention-connector-s4.install index 972869abba..458f433eb1 100644 --- a/services/univention-s4-connector/debian/python3-univention-connector-s4.install +++ b/services/univention-s4-connector/debian/python3-univention-connector-s4.install @@ -2,3 +2,4 @@ modules/univention/s4connector/*.py usr/lib/python3/dist-packages/univention/s4c modules/univention/s4connector/s4/*.py usr/lib/python3/dist-packages/univention/s4connector/s4/ modules/univention/admin/handlers/container/*.py usr/lib/python3/dist-packages/univention/admin/handlers/container/ modules/univention/admin/handlers/settings/*.py usr/lib/python3/dist-packages/univention/admin/handlers/settings/ +modules/univention/admin/handlers/ms/*.py usr/lib/python3/dist-packages/univention/admin/handlers/ms/ diff --git a/services/univention-s4-connector/ldap/msgpwl.schema b/services/univention-s4-connector/ldap/msgpwl.schema new file mode 100644 index 0000000000..4b86bcf933 --- /dev/null +++ b/services/univention-s4-connector/ldap/msgpwl.schema @@ -0,0 +1,68 @@ +attributetype ( 1.2.840.113556.1.4.1953 NAME 'ms-net-ieee-80211-GP-PolicyReserved' + DESC '' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE ) + +attributetype ( 1.2.840.113556.1.4.1952 NAME 'ms-net-ieee-80211-GP-PolicyData' + DESC '' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) + +attributetype ( 1.2.840.113556.1.4.1951 NAME 'ms-net-ieee-80211-GP-PolicyGUID' + DESC '' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) + +objectclass ( 1.2.840.113556.1.5.251 NAME 'ms-net-ieee-80211-GroupPolicy' + DESC 'XML-based wireless Group Policy' + SUP top STRUCTURAL + MUST ( cn $ description ) + MAY ( + ms-net-ieee-80211-GP-PolicyReserved $ + ms-net-ieee-80211-GP-PolicyData $ + ms-net-ieee-80211-GP-PolicyGUID + ) + ) + +attributetype ( 1.2.840.113556.1.4.1956 NAME 'ms-net-ieee-8023-GP-PolicyReserved' + DESC '' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE ) + +attributetype ( 1.2.840.113556.1.4.1955 NAME 'ms-net-ieee-8023-GP-PolicyData' + DESC '' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) + +attributetype ( 1.2.840.113556.1.4.1954 NAME 'ms-net-ieee-8023-GP-PolicyGUID' + DESC '' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) + +objectclass ( 1.2.840.113556.1.5.252 NAME 'ms-net-ieee-8023-GroupPolicy' + DESC 'XML-based wired Group Policy' + SUP top STRUCTURAL + MUST ( cn $ description ) + MAY ( + ms-net-ieee-8023-GP-PolicyReserved $ + ms-net-ieee-8023-GP-PolicyData $ + ms-net-ieee-8023-GP-PolicyGUID + ) + ) + +attributetype ( 1.2.840.113556.1.4.1823 NAME 'msieee80211-ID' + DESC '' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) + +attributetype ( 1.2.840.113556.1.4.1822 NAME 'msieee80211-DataType' + DESC '' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +attributetype ( 1.2.840.113556.1.4.1821 NAME 'msieee80211-Data' + DESC '' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE ) + +objectclass ( 1.2.840.113556.1.5.240 NAME 'msieee80211-Policy' + DESC 'BLOB-based wireless Group Policy' + SUP top STRUCTURAL + MUST ( cn $ description ) + MAY ( + msieee80211-ID $ + msieee80211-DataType $ + msieee80211-Data + ) + ) diff --git a/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wired.py b/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wired.py new file mode 100644 index 0000000000..a1deb5d4c7 --- /dev/null +++ b/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wired.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- +# +# Univention S4 Connector +# UDM module for XML-based wired Group Policy +# +# Copyright 2019 Univention GmbH +# +# https://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 +# . + +from univention.admin.layout import Tab, Group + +import univention.admin.syntax +import univention.admin.handlers +import univention.admin.localization + +translation = univention.admin.localization.translation('univention.admin.handlers.settings.mswmifilter') +_ = translation.translate + +module = 'ms/gpwl-wired' +operations = ['add', 'edit', 'remove', 'search', 'move', 'subtree_move'] +childs = True +short_description = _('MS wired Group Policy') +long_description = '' +options = { + 'default': univention.admin.option( + short_description='', + default=True, + objectClasses=['ms-net-ieee-8023-GroupPolicy', 'top'] + ), +} +property_descriptions = { + 'name': univention.admin.property( + short_description=_('Name'), + long_description='', + syntax=univention.admin.syntax.string, + required=True, + identifies=True, + ), + 'description': univention.admin.property( + short_description=_('Description'), + long_description='', + syntax=univention.admin.syntax.string, + ), + 'ms-net-ieee-8023-GP-PolicyReserved': univention.admin.property( + short_description=_('Policy Reserved'), + long_description='', + syntax=univention.admin.syntax.string, + ), + 'ms-net-ieee-8023-GP-PolicyData': univention.admin.property( + short_description=_('Policy Data'), + long_description='', + syntax=univention.admin.syntax.TextArea, + size='Two', + ), + 'ms-net-ieee-8023-GP-PolicyGUID': univention.admin.property( + short_description=_('Policy GUID'), + long_description='', + syntax=univention.admin.syntax.string, + ), +} + +layout = [ + Tab(_('General'), _('Basic settings'), layout=[ + Group(_('General'), layout=[ + ["name", "description"], + ]), + Group(_('Policy settings'), layout=[ + ["ms-net-ieee-8023-GP-PolicyGUID", "ms-net-ieee-8023-GP-PolicyReserved"], + 'ms-net-ieee-8023-GP-PolicyData' + ]), + ]), +] + +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('ms-net-ieee-8023-GP-PolicyReserved', 'ms-net-ieee-8023-GP-PolicyReserved', None, univention.admin.mapping.ListToString) +mapping.register('ms-net-ieee-8023-GP-PolicyData', 'ms-net-ieee-8023-GP-PolicyData', None, univention.admin.mapping.ListToString) +mapping.register('ms-net-ieee-8023-GP-PolicyGUID', 'ms-net-ieee-8023-GP-PolicyGUID', None, univention.admin.mapping.ListToString) + + +class object(univention.admin.handlers.simpleLdap): + module = module + + def _ldap_pre_modify(self): + if self.hasChanged('name'): + self.move(self._ldap_dn()) + + +identify = object.identify +lookup = object.lookup diff --git a/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wireless-blob.py b/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wireless-blob.py new file mode 100644 index 0000000000..de032bc06e --- /dev/null +++ b/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wireless-blob.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- +# +# Univention S4 Connector +# UDM module for BLOB-based wireless Group Policy +# +# Copyright 2019 Univention GmbH +# +# https://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 +# . + +from univention.admin.layout import Tab, Group + +import univention.admin.syntax +import univention.admin.handlers +import univention.admin.localization + +translation = univention.admin.localization.translation('univention.admin.handlers.settings.mswmifilter') +_ = translation.translate + +module = 'ms/gpwl-wireless-blob' +operations = ['add', 'edit', 'remove', 'search', 'move', 'subtree_move'] +childs = True +short_description = _('MS wireless Group Policy blob') +long_description = '' +options = { + 'default': univention.admin.option( + short_description='', + default=True, + objectClasses=['msieee80211-Policy', 'top'] + ), +} +property_descriptions = { + 'name': univention.admin.property( + short_description=_('Name'), + long_description='', + syntax=univention.admin.syntax.string, + required=True, + identifies=True, + ), + 'description': univention.admin.property( + short_description=_('Description'), + long_description='', + syntax=univention.admin.syntax.string, + ), + 'msieee80211-ID': univention.admin.property( + short_description=_('ID'), + long_description='', + syntax=univention.admin.syntax.string, + ), + 'msieee80211-DataType': univention.admin.property( + short_description=_('Data type'), + long_description='', + syntax=univention.admin.syntax.string, + ), + 'msieee80211-Data': univention.admin.property( + short_description=_('Data'), + long_description='', + syntax=univention.admin.syntax.TextArea, + size='Two', + ), +} + +layout = [ + Tab(_('General'), _('Basic settings'), layout=[ + Group(_('General'), layout=[ + ["name", "description"], + ]), + Group(_('Policy settings'), layout=[ + ['msieee80211-ID', 'msieee80211-DataType'], + # 'msieee80211-Data', binary data in UMC? better not... + ]), + ]), +] + +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('msieee80211-ID', 'msieee80211-ID', None, univention.admin.mapping.ListToString) +mapping.register('msieee80211-DataType', 'msieee80211-DataType', None, univention.admin.mapping.ListToString) +mapping.register('msieee80211-Data', 'msieee80211-Data', None, univention.admin.mapping.ListToString) + + +class object(univention.admin.handlers.simpleLdap): + module = module + + def _ldap_pre_modify(self): + if self.hasChanged('name'): + self.move(self._ldap_dn()) + + +identify = object.identify +lookup = object.lookup diff --git a/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wireless.py b/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wireless.py new file mode 100644 index 0000000000..17d9ecea0b --- /dev/null +++ b/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wireless.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- +# +# Univention S4 Connector +# UDM module for XML-based wireless Group Policy +# +# Copyright 2019 Univention GmbH +# +# https://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 +# . + +from univention.admin.layout import Tab, Group + +import univention.admin.syntax +import univention.admin.handlers +import univention.admin.localization + +translation = univention.admin.localization.translation('univention.admin.handlers.settings.mswmifilter') +_ = translation.translate + +module = 'ms/gpwl-wireless' +operations = ['add', 'edit', 'remove', 'search', 'move', 'subtree_move'] +childs = True +short_description = _('MS wireless Group Policy') +long_description = '' +options = { + 'default': univention.admin.option( + short_description='', + default=True, + objectClasses=['ms-net-ieee-80211-GroupPolicy', 'top'] + ), +} +property_descriptions = { + 'name': univention.admin.property( + short_description=_('Name'), + long_description='', + syntax=univention.admin.syntax.string, + required=True, + identifies=True, + ), + 'description': univention.admin.property( + short_description=_('Description'), + long_description='', + syntax=univention.admin.syntax.string, + ), + 'ms-net-ieee-80211-GP-PolicyReserved': univention.admin.property( + short_description=_('Policy Reserved'), + long_description='', + syntax=univention.admin.syntax.string, + ), + 'ms-net-ieee-80211-GP-PolicyData': univention.admin.property( + short_description=_('Policy Data'), + long_description='', + syntax=univention.admin.syntax.TextArea, + size='Two', + ), + 'ms-net-ieee-80211-GP-PolicyGUID': univention.admin.property( + short_description=_('Policy GUID'), + long_description='', + syntax=univention.admin.syntax.string, + ), +} + +layout = [ + Tab(_('General'), _('Basic settings'), layout=[ + Group(_('General'), layout=[ + ["name", "description"], + ]), + Group(_('Policy settings'), layout=[ + ['ms-net-ieee-80211-GP-PolicyGUID', 'ms-net-ieee-80211-GP-PolicyReserved'], + 'ms-net-ieee-80211-GP-PolicyData', + ]), + ]), +] + +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('ms-net-ieee-80211-GP-PolicyReserved', 'ms-net-ieee-80211-GP-PolicyReserved', None, univention.admin.mapping.ListToString) +mapping.register('ms-net-ieee-80211-GP-PolicyData', 'ms-net-ieee-80211-GP-PolicyData', None, univention.admin.mapping.ListToString) +mapping.register('ms-net-ieee-80211-GP-PolicyGUID', 'ms-net-ieee-80211-GP-PolicyGUID', None, univention.admin.mapping.ListToString) + + +class object(univention.admin.handlers.simpleLdap): + module = module + + def _ldap_pre_modify(self): + if self.hasChanged('name'): + self.move(self._ldap_dn()) + + +identify = object.identify +lookup = object.lookup diff --git a/services/univention-s4-connector/python-univention-connector-s4.public b/services/univention-s4-connector/python-univention-connector-s4.public index 9749f87dfe..e43a5dcad2 100644 --- a/services/univention-s4-connector/python-univention-connector-s4.public +++ b/services/univention-s4-connector/python-univention-connector-s4.public @@ -1,3 +1,6 @@ /usr/share/pyshared/univention/admin/handlers/container/msgpo.py /usr/share/pyshared/univention/admin/handlers/settings/msprintconnectionpolicy.py /usr/share/pyshared/univention/admin/handlers/settings/mswmifilter.py +/usr/share/pyshared/univention/admin/handlers/ms/gpwl-wireless.py +/usr/share/pyshared/univention/admin/handlers/ms/gpwl-wireless-blob.py +/usr/share/pyshared/univention/admin/handlers/ms/gpwl-wired.py