@@ -, +, @@
Bug #49838: add MS GWPL policy type
--- a/services/univention-s4-connector/97univention-s4-connector.inst
+++ a/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
--- a/services/univention-s4-connector/conffiles/etc/univention/s4connector/s4/mapping.py
+++ a/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),)
--- a/services/univention-s4-connector/debian/python-univention-connector-s4.install
+++ a/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/
--- a/services/univention-s4-connector/debian/python3-univention-connector-s4.install
+++ a/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/
--- a/services/univention-s4-connector/ldap/msgpwl.schema
+++ a/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
+ )
+ )
--- a/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wired.py
+++ a/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
--- a/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wireless-blob.py
+++ a/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
--- a/services/univention-s4-connector/modules/univention/admin/handlers/ms/gpwl-wireless.py
+++ a/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
--- a/services/univention-s4-connector/python-univention-connector-s4.public
+++ a/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