|
| 1 | +#!/bin/bash |
| 2 | +# set -ex |
| 3 | + |
| 4 | +# PWD=`pwd` |
| 5 | + |
| 6 | +if [[ "$1" == apache2* ]] || [ "$1" == php-fpm ]; then |
| 7 | + if ! [ -e index.php -a -e bin/installto.sh ]; then |
| 8 | + echo >&2 "roundcubemail not found in $PWD - copying now..." |
| 9 | + if [ "$(ls -A)" ]; then |
| 10 | + echo >&2 "WARNING: $PWD is not empty - press Ctrl+C now if this is an error!" |
| 11 | + ( set -x; ls -A; sleep 10 ) |
| 12 | + fi |
| 13 | + tar cf - --one-file-system -C /usr/src/roundcubemail . | tar xf - |
| 14 | + sed -i 's/mod_php5.c/mod_php7.c/' .htaccess |
| 15 | + echo >&2 "Complete! ROUNDCUBEMAIL has been successfully copied to $PWD" |
| 16 | + fi |
| 17 | + |
| 18 | + if [ ! -z "${!POSTGRES_ENV_POSTGRES_*}" ] || [ $ROUNDCUBEMAIL_DB_TYPE == "pgsql" ]; then |
| 19 | + : "${ROUNDCUBEMAIL_DB_TYPE:=pgsql}" |
| 20 | + : "${ROUNDCUBEMAIL_DB_HOST:=postgres}" |
| 21 | + : "${ROUNDCUBEMAIL_DB_USER:=${POSTGRES_ENV_POSTGRES_USER}}" |
| 22 | + : "${ROUNDCUBEMAIL_DB_PASSWORD:=${POSTGRES_ENV_POSTGRES_PASSWORD}}" |
| 23 | + : "${ROUNDCUBEMAIL_DB_NAME:=${POSTGRES_ENV_POSTGRES_DB:-roundcubemail}}" |
| 24 | + : "${ROUNDCUBEMAIL_DSNW:=${ROUNDCUBEMAIL_DB_TYPE}://${ROUNDCUBEMAIL_DB_USER}:${ROUNDCUBEMAIL_DB_PASSWORD}@${ROUNDCUBEMAIL_DB_HOST}/${ROUNDCUBEMAIL_DB_NAME}}" |
| 25 | + |
| 26 | + /wait-for-it.sh ${ROUNDCUBEMAIL_DB_HOST}:5432 -t 30 |
| 27 | + elif [ ! -z "${!MYSQL_ENV_MYSQL_*}" ] || [ $ROUNDCUBEMAIL_DB_TYPE == "mysql" ]; then |
| 28 | + : "${ROUNDCUBEMAIL_DB_TYPE:=mysql}" |
| 29 | + : "${ROUNDCUBEMAIL_DB_HOST:=mysql}" |
| 30 | + : "${ROUNDCUBEMAIL_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}" |
| 31 | + if [ "$ROUNDCUBEMAIL_DB_USER" = 'root' ]; then |
| 32 | + : "${ROUNDCUBEMAIL_DB_PASSWORD:=${MYSQL_ENV_MYSQL_ROOT_PASSWORD}}" |
| 33 | + else |
| 34 | + : "${ROUNDCUBEMAIL_DB_PASSWORD:=${MYSQL_ENV_MYSQL_PASSWORD}}" |
| 35 | + fi |
| 36 | + : "${ROUNDCUBEMAIL_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-roundcubemail}}" |
| 37 | + : "${ROUNDCUBEMAIL_DSNW:=${ROUNDCUBEMAIL_DB_TYPE}://${ROUNDCUBEMAIL_DB_USER}:${ROUNDCUBEMAIL_DB_PASSWORD}@${ROUNDCUBEMAIL_DB_HOST}/${ROUNDCUBEMAIL_DB_NAME}}" |
| 38 | + |
| 39 | + /wait-for-it.sh ${ROUNDCUBEMAIL_DB_HOST}:3306 -t 30 |
| 40 | + else |
| 41 | + # use local SQLite DB in /var/www/html/db |
| 42 | + : "${ROUNDCUBEMAIL_DB_TYPE:=sqlite}" |
| 43 | + : "${ROUNDCUBEMAIL_DB_DIR:=$PWD/db}" |
| 44 | + : "${ROUNDCUBEMAIL_DB_NAME:=sqlite}" |
| 45 | + : "${ROUNDCUBEMAIL_DSNW:=${ROUNDCUBEMAIL_DB_TYPE}:///$ROUNDCUBEMAIL_DB_DIR/${ROUNDCUBEMAIL_DB_NAME}.db?mode=0646}" |
| 46 | + |
| 47 | + mkdir -p $ROUNDCUBEMAIL_DB_DIR |
| 48 | + chown www-data:www-data $ROUNDCUBEMAIL_DB_DIR |
| 49 | + fi |
| 50 | + |
| 51 | + : "${ROUNDCUBEMAIL_DEFAULT_HOST:=localhost}" |
| 52 | + : "${ROUNDCUBEMAIL_DEFAULT_PORT:=143}" |
| 53 | + : "${ROUNDCUBEMAIL_SMTP_SERVER:=localhost}" |
| 54 | + : "${ROUNDCUBEMAIL_SMTP_PORT:=587}" |
| 55 | + : "${ROUNDCUBEMAIL_PLUGINS:=archive,zipdownload}" |
| 56 | + : "${ROUNDCUBEMAIL_TEMP_DIR:=/var/www/html/temp}" |
| 57 | + |
| 58 | + if [ ! -e config/config.inc.php ]; then |
| 59 | + ROUNDCUBEMAIL_PLUGINS_PHP=`echo "${ROUNDCUBEMAIL_PLUGINS}" | sed -E "s/[, ]+/', '/g"` |
| 60 | + mkdir -p ${ROUNDCUBEMAIL_TEMP_DIR} && chown www-data ${ROUNDCUBEMAIL_TEMP_DIR} |
| 61 | + touch config/config.inc.php |
| 62 | + |
| 63 | + echo "Write config to $PWD/config/config.inc.php" |
| 64 | + echo "<?php |
| 65 | + \$config['db_dsnw'] = '${ROUNDCUBEMAIL_DSNW}'; |
| 66 | + \$config['db_dsnr'] = '${ROUNDCUBEMAIL_DSNR}'; |
| 67 | + \$config['default_host'] = '${ROUNDCUBEMAIL_DEFAULT_HOST}'; |
| 68 | + \$config['default_port'] = '${ROUNDCUBEMAIL_DEFAULT_PORT}'; |
| 69 | + \$config['smtp_server'] = '${ROUNDCUBEMAIL_SMTP_SERVER}'; |
| 70 | + \$config['smtp_port'] = '${ROUNDCUBEMAIL_SMTP_PORT}'; |
| 71 | + \$config['temp_dir'] = '${ROUNDCUBEMAIL_TEMP_DIR}'; |
| 72 | + \$config['plugins'] = ['${ROUNDCUBEMAIL_PLUGINS_PHP}']; |
| 73 | + \$config['zipdownload_selection'] = true; |
| 74 | + \$config['log_driver'] = 'stdout'; |
| 75 | + " > config/config.inc.php |
| 76 | + |
| 77 | + for fn in `ls /var/roundcube/config/*.php`; do |
| 78 | + echo "include('$fn');" >> config/config.inc.php |
| 79 | + done |
| 80 | + |
| 81 | + # initialize DB if not SQLite |
| 82 | + echo "${ROUNDCUBEMAIL_DSNW}" | grep -q 'sqlite:' || bin/initdb.sh --dir=$PWD/SQL || bin/updatedb.sh --dir=$PWD/SQL --package=roundcube || echo "Failed to initialize databse. Please run $PWD/bin/initdb.sh manually." |
| 83 | + else |
| 84 | + echo "WARNING: $PWD/config/config.inc.php already exists." |
| 85 | + echo "ROUNDCUBEMAIL_* environment variables have been ignored." |
| 86 | + fi |
| 87 | + |
| 88 | + if [ ! -z "${ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE}" ]; then |
| 89 | + sed -i -E "s/(upload_max_filesize|post_max_size) +[0-9BKMG]+/\1 ${ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE}/g" $PWD/.htaccess |
| 90 | + fi |
| 91 | +fi |
| 92 | + |
| 93 | +exec "$@" |
0 commit comments