@ -4,16 +4,61 @@ import os
import logging as log
import sys
from socrate import conf
import subprocess
log . basicConfig ( stream = sys . stderr , level = os . environ . get ( " LOG_LEVEL " , " WARNING " ) )
os . environ [ " MAX_FILESIZE " ] = str ( int ( int ( os . environ . get ( " MESSAGE_SIZE_LIMIT " ) ) * 0.66 / 1048576 ) )
db_flavor = os . environ . get ( " ROUNDCUBE_DB_FLAVOR " , os . environ . get ( " DB_FLAVOR " , " sqlite " ) )
if db_flavor == " sqlite " :
os . environ [ " DB_DSNW " ] = " sqlite:////data/roundcube.db "
elif db_flavor == " mysql " :
os . environ [ " DB_DSNW " ] = " mysql:// %s : %s @ %s / %s " % (
os . environ . get ( " ROUNDCUBE_DB_USER " , " roundcube " ) ,
os . environ . get ( " ROUNDCUBE_DB_PW " ) ,
os . environ . get ( " ROUNDCUBE_DB_HOST " , os . environ . get ( " DB_HOST " , " database " ) ) ,
os . environ . get ( " ROUNDCUBE_DB_NAME " , " roundcube " )
)
elif db_flavor == " postgresql " :
os . environ [ " DB_DSNW " ] = " pgsql:// %s : %s @ %s / %s " % (
os . environ . get ( " ROUNDCUBE_DB_USER " , " roundcube " ) ,
os . environ . get ( " ROUNDCUBE_DB_PW " ) ,
os . environ . get ( " ROUNDCUBE_DB_HOST " , os . environ . get ( " DB_HOST " , " database " ) ) ,
os . environ . get ( " ROUNDCUBE_DB_NAME " , " roundcube " )
)
else :
print ( " Unknown ROUNDCUBE_DB_FLAVOR: %s " , db_flavor )
exit ( 1 )
conf . jinja ( " /php.ini " , os . environ , " /usr/local/etc/php/conf.d/roundcube.ini " )
# Fix some permissions
os . system ( " mkdir -p /data/gpg " )
os . system ( " chown -R www-data:www-data /data " )
os . system ( " mkdir -p /data/gpg /var/www/html/logs " )
os . system ( " touch /var/www/html/logs/errors " )
os . system ( " chown -R www-data:www-data /data /var/www/html/logs " )
try :
print ( " Initializing database " )
result = subprocess . check_output ( [ " /var/www/html/bin/initdb.sh " , " --dir " , " /var/www/html/SQL " ] , stderr = subprocess . STDOUT )
print ( result . decode ( ) )
except subprocess . CalledProcessError as e :
if " already exists " in e . stdout . decode ( ) :
print ( " Already initialzed " )
else :
print ( e . stdout . decode ( ) )
quit ( 1 )
try :
print ( " Upgrading database " )
subprocess . check_call ( [ " /var/www/html/bin/update.sh " , " --version=? " , " -y " ] , stderr = subprocess . STDOUT )
except subprocess . CalledProcessError as e :
quit ( 1 )
# Tail roundcube logs
subprocess . Popen ( [ " tail " , " -f " , " -n " , " 0 " , " /var/www/html/logs/errors " ] )
# Run apache
os . execv ( " /usr/local/bin/apache2-foreground " , [ " apache2-foreground " ] )