# -*- coding: UTF-8 -*- from setuphelpers import * import os from jinja2 import Environment, FileSystemLoader uninstallkey = [] variables = { 'sogo_server': 'mail.server.local' } def install(): # Read local variables file if available if isfile(makepath(programfiles32,'wapt','private','symetric.txt')) and isfile(makepath(programfiles32,'wapt','private','variables.txt')): print('Reading local encrypted variables file') from cryptography.fernet import Fernet import yaml f = Fernet(open(makepath(programfiles32,'wapt','private','symetric.txt'),'r').read()) variables.update(yaml.safe_load(f.decrypt(open(makepath(programfiles32,'wapt','private','variables.txt'),'r').read()))) connector_version = control['version'].split('-',1)[0] major_version = control['version'].split('.',1)[0] extension_dir = makepath(programfiles,'Mozilla Thunderbird','distribution','extensions') for extension in ['connector', 'integrator']: if isdir(makepath(extension_dir, 'sogo-%s@inverse.ca' % extension)): remove_tree(makepath(extension_dir, 'sogo-%s@inverse.ca' % extension)) if isfile(makepath(extension_dir, 'sogo-%s@inverse.ca.xpi' % extension)): remove_file(makepath(extension_dir, 'sogo-%s@inverse.ca.xpi' % extension)) mkdirs(makepath(extension_dir, 'sogo-connector@inverse.ca')) # The extension must be customized, so first extract it print('Extraction demo extension') unzip('sogo-connector-%s-demo.xpi' % connector_version, makepath(extension_dir,'sogo-connector@inverse.ca')) # And replace the extensions.rdf content print('Customizing extension') jinja2 = Environment( loader=FileSystemLoader(os.path.dirname(os.path.abspath(__file__))), trim_blocks=True ) open(makepath(extension_dir,'sogo-connector@inverse.ca','chrome','content','sogo-connector','global','extensions.rdf'),'w').write( jinja2.get_template('extensions.rdf.j2').render( sogo_server = variables['sogo_server'] ) ) # Also remove custom settings os.unlink(makepath(extension_dir,'sogo-connector@inverse.ca','defaults','preferences','site.js')) # Now create an XPI print('Creating XPI') run(r'"%s" a -tzip "%s" "%s"' %(makepath(programfiles, '7-Zip', '7z.exe'), makepath(extension_dir, 'sogo-connector@inverse.ca.xpi'), makepath(extension_dir, 'sogo-connector@inverse.ca', '*'))) # Note : we could remove the extension directory, but we keep it for easier auditing # Script to reset extensions.json and addonStartup.json.lz4, those files need to be removed # for sogo-connector to be correctly loaded. At least for the 60.x -> 68.x upgrade print('Deploy reset_addons.bat script') open(makepath(programfiles,'Mozilla Thunderbird','reset_addons.bat'),'w').write( jinja2.get_template('reset_addons.bat.j2').render( tb_major_version = major_version ) ) def uninstall(): print('Removing SOGo connector for Thunderbird') remove_tree(makepath(programfiles,'Mozilla Thunderbird','distribution','extensions','sogo-connector@inverse.ca' % extension)) def session_setup(): print('Reset Thunderbird addons settings on major upgrades') run(makepath(programfiles,'Mozilla Thunderbird','reset_addons.bat')) def audit(): connector_version = control['version'].split('-',1)[0] try: run('type "%s" | find /I "em:version=" | find "%s"' % (makepath(programfiles,'Mozilla Thunderbird','distribution','extensions','sogo-connector@inverse.ca','install.rdf'), connector_version)) except: print('SOGO connector version check failed') return "ERROR" return "OK"