2018-12-05 22:03:23 +01:00
# -*- coding: UTF-8 -*-
from setuphelpers import *
import os
from jinja2 import Environment , FileSystemLoader
uninstallkey = [ ]
variables = {
' sogo_server ' : ' mail.server.local '
}
def install ( ) :
2019-12-12 18:59:14 +01:00
# 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 ( ) ) ) )
2018-12-10 18:37:46 +01:00
connector_version = control [ ' version ' ] . split ( ' - ' , 1 ) [ 0 ]
2019-12-12 18:59:14 +01:00
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 ' ) )
2018-12-05 22:03:23 +01:00
2019-12-12 18:59:14 +01:00
# 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 ' ) )
2018-12-05 22:03:23 +01:00
# And replace the extensions.rdf content
2019-12-12 18:59:14 +01:00
print ( ' Customizing extension ' )
2018-12-05 22:03:23 +01:00
jinja2 = Environment (
loader = FileSystemLoader ( os . path . dirname ( os . path . abspath ( __file__ ) ) ) ,
trim_blocks = True
)
2019-12-12 18:59:14 +01:00
open ( makepath ( extension_dir , ' sogo-connector@inverse.ca ' , ' chrome ' , ' content ' , ' sogo-connector ' , ' global ' , ' extensions.rdf ' ) , ' w ' ) . write (
2018-12-05 22:03:23 +01:00
jinja2 . get_template ( ' extensions.rdf.j2 ' ) . render (
sogo_server = variables [ ' sogo_server ' ]
)
)
# Also remove custom settings
2019-12-12 18:59:14 +01:00
os . unlink ( makepath ( extension_dir , ' sogo-connector@inverse.ca ' , ' defaults ' , ' preferences ' , ' site.js ' ) )
2018-12-05 22:03:23 +01:00
2019-12-12 18:59:14 +01:00
# 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
2018-12-05 22:03:23 +01:00
def uninstall ( ) :
2019-12-12 18:59:14 +01:00
print ( ' Removing SOGo connector for Thunderbird ' )
remove_tree ( makepath ( programfiles , ' Mozilla Thunderbird ' , ' distribution ' , ' extensions ' , ' sogo-connector@inverse.ca ' % extension ) )
2018-12-05 22:03:23 +01:00
def audit ( ) :
2018-12-10 18:37:46 +01:00
connector_version = control [ ' version ' ] . split ( ' - ' , 1 ) [ 0 ]
2018-12-05 22:03:23 +01:00
try :
2018-12-10 17:48:39 +01:00
run ( ' type " %s " | find /I " em:version= " | find " %s " ' % ( makepath ( programfiles , ' Mozilla Thunderbird ' , ' distribution ' , ' extensions ' , ' sogo-connector@inverse.ca ' , ' install.rdf ' ) , connector_version ) )
2018-12-05 22:03:23 +01:00
except :
print ( ' SOGO connector version check failed ' )
return " ERROR "
return " OK "