Index: univention-directory-manager-modules/modules/univention/admin/handlers/settings/ldapacl.py =================================================================== --- univention-directory-manager-modules/modules/univention/admin/handlers/settings/ldapacl.py (Revision 43863) +++ univention-directory-manager-modules/modules/univention/admin/handlers/settings/ldapacl.py (Arbeitskopie) @@ -172,7 +172,7 @@ mapping=univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('filename', 'univentionLDAPACLFilename', None, univention.admin.mapping.ListToString) -mapping.register('data', 'univentionLDAPACLData', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) +mapping.register('data', 'univentionLDAPACLData', None, univention.admin.mapping.ListToString) mapping.register('active', 'univentionLDAPACLActive', None, univention.admin.mapping.ListToString) mapping.register('appidentifier', 'univentionAppIdentifier') mapping.register('package', 'univentionOwnedByPackage', None, univention.admin.mapping.ListToString) Index: univention-directory-manager-modules/modules/univention/admin/handlers/settings/udm_module.py =================================================================== --- univention-directory-manager-modules/modules/univention/admin/handlers/settings/udm_module.py (Revision 43863) +++ univention-directory-manager-modules/modules/univention/admin/handlers/settings/udm_module.py (Arbeitskopie) @@ -172,7 +172,7 @@ mapping=univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('filename', 'univentionUDMModuleFilename', None, univention.admin.mapping.ListToString) -mapping.register('data', 'univentionUDMModuleData', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) +mapping.register('data', 'univentionUDMModuleData', None, univention.admin.mapping.ListToString) mapping.register('active', 'univentionUDMModuleActive', None, univention.admin.mapping.ListToString) mapping.register('appidentifier', 'univentionAppIdentifier') mapping.register('package', 'univentionOwnedByPackage', None, univention.admin.mapping.ListToString) Index: univention-directory-manager-modules/modules/univention/admin/handlers/settings/ldapschema.py =================================================================== --- univention-directory-manager-modules/modules/univention/admin/handlers/settings/ldapschema.py (Revision 43863) +++ univention-directory-manager-modules/modules/univention/admin/handlers/settings/ldapschema.py (Arbeitskopie) @@ -148,7 +148,7 @@ mapping=univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('filename', 'univentionLDAPSchemaFilename', None, univention.admin.mapping.ListToString) -mapping.register('data', 'univentionLDAPSchemaData', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) +mapping.register('data', 'univentionLDAPSchemaData', None, univention.admin.mapping.ListToString) mapping.register('active', 'univentionLDAPSchemaActive', None, univention.admin.mapping.ListToString) mapping.register('appidentifier', 'univentionAppIdentifier') mapping.register('package', 'univentionOwnedByPackage', None, univention.admin.mapping.ListToString) Index: univention-directory-manager-modules/modules/univention/admin/handlers/settings/udm_hook.py =================================================================== --- univention-directory-manager-modules/modules/univention/admin/handlers/settings/udm_hook.py (Revision 43867) +++ univention-directory-manager-modules/modules/univention/admin/handlers/settings/udm_hook.py (Arbeitskopie) @@ -172,7 +172,7 @@ mapping=univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('filename', 'univentionUDMHookFilename', None, univention.admin.mapping.ListToString) -mapping.register('data', 'univentionUDMHookData', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) +mapping.register('data', 'univentionUDMHookData', None, univention.admin.mapping.ListToString) mapping.register('active', 'univentionUDMHookActive', None, univention.admin.mapping.ListToString) mapping.register('appidentifier', 'univentionAppIdentifier') mapping.register('package', 'univentionOwnedByPackage', None, univention.admin.mapping.ListToString) Index: univention-directory-manager-modules/modules/univention/admin/handlers/settings/udm_syntax.py =================================================================== --- univention-directory-manager-modules/modules/univention/admin/handlers/settings/udm_syntax.py (Revision 43867) +++ univention-directory-manager-modules/modules/univention/admin/handlers/settings/udm_syntax.py (Arbeitskopie) @@ -172,7 +172,7 @@ mapping=univention.admin.mapping.mapping() mapping.register('name', 'cn', None, univention.admin.mapping.ListToString) mapping.register('filename', 'univentionUDMSyntaxFilename', None, univention.admin.mapping.ListToString) -mapping.register('data', 'univentionUDMSyntaxData', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) +mapping.register('data', 'univentionUDMSyntaxData', None, univention.admin.mapping.ListToString) mapping.register('active', 'univentionUDMSyntaxActive', None, univention.admin.mapping.ListToString) mapping.register('appidentifier', 'univentionAppIdentifier') mapping.register('package', 'univentionOwnedByPackage', None, univention.admin.mapping.ListToString) Index: univention-directory-manager-modules/modules/univention/admin/handlers/users/user.py =================================================================== --- univention-directory-manager-modules/modules/univention/admin/handlers/users/user.py (Revision 43828) +++ univention-directory-manager-modules/modules/univention/admin/handlers/users/user.py (Arbeitskopie) @@ -1255,8 +1255,8 @@ lst.append( entry.split('=', 1) ) return lst -mapping.register('userCertificate', 'userCertificate;binary', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) -mapping.register('jpegPhoto', 'jpegPhoto', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) +mapping.register('userCertificate', 'userCertificate;binary', None, univention.admin.mapping.ListToString) +mapping.register('jpegPhoto', 'jpegPhoto', None, univention.admin.mapping.ListToString) mapping.register('umcProperty', 'univentionUMCProperty', mapKeyAndValue, unmapKeyAndValue) class object( univention.admin.handlers.simpleLdap, mungeddial.Support ): Index: univention-directory-manager-modules/modules/univention/admin/syntax.py =================================================================== --- univention-directory-manager-modules/modules/univention/admin/syntax.py (Revision 43835) +++ univention-directory-manager-modules/modules/univention/admin/syntax.py (Arbeitskopie) @@ -42,6 +42,7 @@ import copy import sys, os import shlex +import imghdr translation=univention.admin.localization.translation('univention/admin') _=translation.translate @@ -378,38 +379,42 @@ else: return value -class GzipBase64Upload( Upload ): +class Base64Upload( Upload ): @classmethod - def parse( self, value ): + def tostring( self, value ): try: - gziped_data = base64.decodestring( value ) - try: - data = zlib.decompress(gziped_data, 16+zlib.MAX_WBITS) - except: - raise univention.admin.uexceptions.valueError( _( 'Value must be gzip compressed and Base64 encoded: %s' ) % str( value ) ) + return base64.b64encode( value ) except: - raise univention.admin.uexceptions.valueError( _( 'Not a valid Base64 string: %s' ) % str( value ) ) - else: - return value + raise univention.admin.uexceptions.valueError( _( 'Error encoding value to Base64: %s' ) % str( value ) ) -class Base64Upload( Upload ): @classmethod - def parse( self, value ): + def parse( self, text ): try: - base64.decodestring( value ) + return base64.b64decode( text ) except: - raise univention.admin.uexceptions.valueError( _( 'Not a valid Base64 string: %s' ) % str( value ) ) + raise univention.admin.uexceptions.valueError( _( 'Not a valid Base64 string: %s' ) % str( text ) ) + +class GzipBase64Upload( Base64Upload ): + @classmethod + def parse( self, text ): + value = super(GzipBase64Upload, self).parse(text) + try: + zlib.decompress(value, 16+zlib.MAX_WBITS) + except: + raise univention.admin.uexceptions.valueError( _( 'Value must be gzip compressed and Base64 encoded: %s' ) % str( text ) ) else: return value -class jpegPhoto( Upload ): +class jpegPhoto( Base64Upload ): @classmethod - def tostring(self, text): - if text and text[0]: - encoded=base64.encodestring(text[0]) - return encoded + def parse( self, text ): + value = super(jpegPhoto, self).parse(text) + try: + assert imghdr.what(None, value) == 'jpeg' + except Exception, e: + raise univention.admin.uexceptions.valueError( _( 'Value must be jpeg format and Base64 encoded: %s' ) % str( text ) ) else: - return '' + return value class integer(simple): """ Index: univention-directory-manager-modules/modules/univention/admin/mapping.py =================================================================== --- univention-directory-manager-modules/modules/univention/admin/mapping.py (Revision 43848) +++ univention-directory-manager-modules/modules/univention/admin/mapping.py (Arbeitskopie) @@ -32,7 +32,6 @@ import univention.debug import types -import base64 def DaysToSeconds(days): return str(int(days)*24*60*60) @@ -106,23 +105,6 @@ value *= 60 return unicode( value ) -def unmapBase64( value ): - try: - return base64.b64encode( value[ 0 ] ) - except Exception, e: - univention.debug.debug(univention.debug.ADMIN, univention.debug.ERROR, 'ERROR in unmapBase64: %s' % e) - return "" - -def mapBase64( value ): - if value == '*': - # special case for filter pattern '*' - return value - try: - return base64.b64decode( value ) - except Exception, e: - univention.debug.debug(univention.debug.ADMIN, univention.debug.ERROR, 'ERROR in mapBase64: %s' % e) - return "" - class mapping: def __init__(self): self._map={} Index: univention-management-console-module-appcenter/udm/handlers/appcenter/app.py =================================================================== --- univention-management-console-module-appcenter/udm/handlers/appcenter/app.py (Revision 43870) +++ univention-management-console-module-appcenter/udm/handlers/appcenter/app.py (Arbeitskopie) @@ -345,8 +345,8 @@ mapping.register('website', 'univentionAppWebsite', None, univention.admin.mapping.ListToString) mapping.register('websiteVendor', 'univentionAppWebsiteVendor', None, univention.admin.mapping.ListToString) mapping.register('websiteMaintainer', 'univentionAppWebsiteMaintainer', None, univention.admin.mapping.ListToString) -mapping.register('screenshot', 'univentionAppScreenshot', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) -mapping.register('icon', 'univentionAppIcon', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64) +mapping.register('screenshot', 'univentionAppScreenshot', None, univention.admin.mapping.ListToString) +mapping.register('icon', 'univentionAppIcon', None, univention.admin.mapping.ListToString) mapping.register('category', 'univentionAppCategory') mapping.register('webInterface', 'univentionAppWebInterface') mapping.register('webInterfaceName', 'univentionAppWebInterfaceName', None, univention.admin.mapping.ListToString)