# Rx3-Docker/RoundCubeMail Dockerfile
#-------------------------------------------------------------------------------

ARG IMG_FROM_URL="rx3-docker/php-apache:latest"

FROM ${IMG_FROM_URL}

ARG IMG_NAME
ARG IMG_NAME_FULL
ARG IMG_VERSION
ARG IMG_MAINTAINER
ARG IMG_URL

LABEL org.rx3.${IMG_NAME}.name=${IMG_NAME_FULL}
LABEL org.rx3.${IMG_NAME}.version=${IMG_VERSION}
LABEL org.rx3.${IMG_NAME}.maintainer=${IMG_MAINTAINER}
LABEL maintainer=${IMG_MAINTAINER}

ARG HTTPD_VHOST_CONFIG_DIR=/etc/httpd/conf/sites.d/default_vhost.d
ARG RCM_HTTPD_CONFIG_FILE=${HTTPD_VHOST_CONFIG_DIR}/70-roundcubemail.conf
ARG RCM_SHARE_DIR=/usr/share/roundcubemail
ARG RCM_PLUGINS_DIR=${RCM_SHARE_DIR}/plugins
ARG RCM_LIB_DIR=/var/lib/roundcubemail
ARG RCM_ENIGMA_DIR=${RCM_LIB_DIR}/plugins/enigma
ARG RCM_CONFIG_DIR=/etc/roundcubemail
ARG RCM_CONFIG_FILE=${RCM_CONFIG_DIR}/config.inc.php
ARG RCM_LOG_DIR=/var/log/roundcubemail
ARG RCM_PLUGINS_CARDAV_URL=https://mirror.rx3.net/external/roundcubemail/carddav-v5.1.4.tar.gz
ARG RCM_PLUGINS_LIBKOLAB_URL=https://mirror.rx3.net/external/roundcubemail/libkolab-3.6.1.tar.gz
ARG RCM_PLUGINS_LIBCALENDARING_URL=https://mirror.rx3.net/external/roundcubemail/libcalendaring-3.6.1.tar.gz
ARG RCM_PLUGINS_CALENDAR_URL=https://mirror.rx3.net/external/roundcubemail/calendar-3.6.0-2rx3.tar.gz
ARG RCM_FIX_PATH=/usr/share/roundcubemail/vendor/pear/pear-core-minimal/src
ARG RCM_PEAR_PATH=/usr/share/pear



#----------------------------------------------------------------------------------------------------------------------------------------------------------------
ARG ROUNDCUBEMAIL='#!/bin/bash                                                                                                                                \n\
                                                                                                                                                              \n\
if [[ ! -f '${RCM_CONFIG_FILE}' ]]                                                                                                                            \n\
then                                                                                                                                                          \n\
    cp -Rf '${RCM_CONFIG_DIR}.ref/*'                                                                    '${RCM_CONFIG_DIR}'                                   \n\
                                                                                                                                                              \n\
    sed -i -e "s%RCM_CONFIG_DSN%${RCM_DB_DSN}%"                                                         '${RCM_CONFIG_FILE}'                                  \n\
    sed -i -e "s%RCM_CONFIG_SMTP%${RCM_SMTP_SERVICE}%"                                                  '${RCM_CONFIG_FILE}'                                  \n\
    sed -i -e "s%RCM_CONFIG_IMAP%${RCM_IMAP_SERVICE}%"                                                  '${RCM_CONFIG_FILE}'                                  \n\
    sed -i -e "s%RCM_CONFIG_NAME%${RCM_SERVER_NAME}%"                                                   '${RCM_CONFIG_FILE}'                                  \n\
                                                                                                                                                              \n\
    if [[ "${RCM_CONFIG_ENABLED}" == "TRUE" ]]                                                                                                                \n\
    then                                                                                                                                                      \n\
        for dir in . plugins/libkolab plugins/calendar/drivers/caldav                                                                                         \n\
        do                                                                                                                                                    \n\
                '${RCM_SHARE_DIR}'/bin/initdb.sh                                                  --dir='${RCM_SHARE_DIR}'/${dir}/SQL                         \n\
        done                                                                                                                                                  \n\
    fi                                                                                                                                                        \n\
fi                                                                                                                                                            \n\
                                                                                                                                                              \n\
if [[ ! -f '${RCM_ENIGMA_DIR}' ]]                                                                                                                             \n\
then                                                                                                                                                          \n\
    mkdir -p '${RCM_ENIGMA_DIR}'                                                                                                                              \n\
fi                                                                                                                                                            \n\
                                                                                                                                                              \n\
chown -R apache:apache                                                                                  '${RCM_LIB_DIR}' '${RCM_CONFIG_DIR}' '${RCM_LOG_DIR}' \n\
chmod -R a-x,a+X                                                                                        '${RCM_LIB_DIR}' '${RCM_CONFIG_DIR}' '${RCM_LOG_DIR}' \n\
chmod    o-rwx                                                                                          '${RCM_LIB_DIR}' '${RCM_CONFIG_DIR}' '${RCM_LOG_DIR}' \n\
                                                                                                                                                              \n\
cp -f '${RCM_HTTPD_CONFIG_FILE}.ref'                                                                    '${RCM_HTTPD_CONFIG_FILE}'                            \n\
                                                                                                                                                              \n\
sed -i -e "s%RCM_URL%${RCM_URL}%g"                                                                      '${RCM_HTTPD_CONFIG_FILE}'                            \n\
                                                                                                                                                              \n\
sed -i -e "s/\$config\[`enable_installer`\] = .*;/RCM_CONFIG_INSTALL/"                                  '${RCM_CONFIG_FILE}'                                  \n\ 
                                                                                                                                                              \n\
if [[ "${RCM_CONFIG_ENABLED}" == "TRUE" ]]                                                                                                                    \n\
then                                                                                                                                                          \n\
    sed -i -e "s/RCM_CONFIG_AUTH/all granted/"                                                          '${RCM_HTTPD_CONFIG_FILE}'                            \n\
    sed -i -e "s/RCM_CONFIG_INSTALL/\$config[`enable_installer`] = true;/"                              '${RCM_CONFIG_FILE}'                                  \n\
else                                                                                                                                                          \n\
    sed -i -e "s/RCM_CONFIG_AUTH/local/"                                                                '${RCM_HTTPD_CONFIG_FILE}'                            \n\
    sed -i -e "s/RCM_CONFIG_INSTALL/\$config[`enable_installer`] = false;/"                             '${RCM_CONFIG_FILE}'                                  \n\
fi                                                                                                                                                            \n\
                                                                                                                                                              \n\
echo -n "\$prefs[`default`] = [ `accountname` =>  `${RCM_CARDDAV_NAME}`, `username` =>  `%u`, "      >> '${RCM_CONFIG_DIR}'/carddav.inc.php                   \n\
echo    "`password` =>  `%p`, `discovery_url` =>  `${RCM_CARDDAV_URL}`, ];"                          >> '${RCM_CONFIG_DIR}'/carddav.inc.php                   \n\
                                                                                                                                                              \n\
sed -i -e "s%RCM_CALDAV_HOST%${RCM_CALDAV_URL}%"                                                        '${RCM_CONFIG_DIR}'/calendar.inc.php                  \n\
                                                                                                                                                              \n\
if [[ "${RCM_CALDAV_SHARED}" != "" ]]                                                                                                                         \n\
then                                                                                                                                                          \n\
    shared_config="\$config[`calendar_caldav_preinstalled_sources`] = [ "                                                                                     \n\
                                                                                                                                                              \n\
    for share in ${RCM_CALDAV_SHARED}                                                                                                                         \n\
    do                                                                                                                                                        \n\
        shared_config+="`${share/:*/}` => [ `caldav_user` => `%u`, `caldav_pass` => `%p`, "                                                                   \n\
        shared_config+="`caldav_url`  => `${RCM_CALDAV_URL}${share/*:/}`, `showAlarms`  => 0, ],"                                                             \n\
    done                                                                                                                                                      \n\
                                                                                                                                                              \n\
    shared_config+=" ];"                                                                                                                                      \n\
                                                                                                                                                              \n\
    sed -i -e "s*// RCM_CALDAV_SHARED*${shared_config}*"                                                '${RCM_CONFIG_DIR}'/calendar.inc.php                  \n\
fi                                                                                                                                                            \n\
                                                                                                                                                              \n\
sed -i -e "s%mailhub=mail%mailhub=${SMTP_SERVER}%"                              /etc/ssmtp/ssmtp.conf'
#----------------------------------------------------------------------------------------------------------------------------------------------------------------



RUN    . /etc/profile.d/rx3.sh && isl --add ${IMG_URL}                                                                                                          \
    && urpmi.update -a                                                                                                                                          \
    && urpmi --force wget ssmtp roundcubemail php-zip php-imagick php-xmlreader php-xmlwriter gnupg2 unzip composer                                             \
    && wget -q -O- "${RCM_PLUGINS_CARDAV_URL}"         | tar xzf -                                               -C "${RCM_PLUGINS_DIR}"                        \
    && wget -q -O- "${RCM_PLUGINS_LIBKOLAB_URL}"       | tar xzf -                                               -C "${RCM_PLUGINS_DIR}"                        \
    && wget -q -O- "${RCM_PLUGINS_LIBCALENDARING_URL}" | tar xzf -                                               -C "${RCM_PLUGINS_DIR}"                        \
    && wget -q -O- "${RCM_PLUGINS_CALENDAR_URL}"       | tar xzf -                                               -C "${RCM_PLUGINS_DIR}"                        \
    && cp         "${RCM_PLUGINS_DIR}/carddav/config.inc.php.dist"                                                  "${RCM_CONFIG_DIR}/carddav.inc.php"         \
    && ln   -s    "${RCM_CONFIG_DIR}/carddav.inc.php"                                                               "${RCM_PLUGINS_DIR}/carddav/config.inc.php" \
    && cp         "${RCM_PLUGINS_DIR}/calendar/config.inc.php.dist"                                                 "${RCM_CONFIG_DIR}/calendar.inc.php"        \
    && mkdir -p   "${RCM_ENIGMA_DIR}"                                                                                                                           \
    && mkdir -p   "${RCM_FIX_PATH}"/PEAR                                                                                                                        \
    && mkdir -p   "${RCM_FIX_PATH}"/OS                                                                                                                          \
    && ln    -sf  "${RCM_PEAR_PATH}"/PEAR.php             "${RCM_FIX_PATH}"/PEAR.php                                                                            \
    && ln    -sf  "${RCM_PEAR_PATH}"/PEAR/ErrorStack.php  "${RCM_FIX_PATH}"/PEAR/ErrorStack.php                                                                 \
    && ln    -sf  "${RCM_PEAR_PATH}"/System.php           "${RCM_FIX_PATH}"/System.php                                                                          \
    && ln    -sf  "${RCM_PEAR_PATH}"/OS/Guess.php         "${RCM_FIX_PATH}"/OS/Guess.php                                                                        \
    && composer require pear/http_request2                                                                       -d "${RCM_SHARE_DIR}"                          \
    && mv         /etc/httpd/conf/sites.d/roundcubemail.conf                                                        "${RCM_HTTPD_CONFIG_FILE}.ref"              \
    && sed -i -e  "s%Alias /roundcubemail%Alias RCM_URL%" -e "s/Require local/Require RCM_CONFIG_AUTH/"             "${RCM_HTTPD_CONFIG_FILE}.ref"              \
    && sed -i -e  "s/^\$config\['db_dsnw'\].*/\$config['db_dsnw'] = 'RCM_CONFIG_DSN';/"                             "${RCM_CONFIG_FILE}"                        \
    && sed -i -e  "s/^\$config\['smtp_host'\].*/\$config['smtp_host'] = 'RCM_CONFIG_SMTP';/"                        "${RCM_CONFIG_FILE}"                        \
    && sed -i -e  "s/^\$config\['imap_host'\].*/\$config['imap_host'] = 'RCM_CONFIG_IMAP';/"                        "${RCM_CONFIG_FILE}"                        \
    && sed -i -e  "s/^\$config\['product_name'\].*/\$config['product_name'] = 'RCM_CONFIG_NAME';/"                  "${RCM_CONFIG_FILE}"                        \
    && sed -i -e  "s%^\$config\['enigma_pgp_homedir'\].*%\$config['enigma_pgp_homedir'] = '${RCM_ENIGMA_DIR}';%"    "${RCM_CONFIG_DIR}/enigma.inc.php"          \
    && sed -i -e  "/^    'archive',/a\    'http_authentication',\n    'libcalendaring',\n    'password',"           "${RCM_CONFIG_FILE}"                        \
    && sed -i -e  "/^    'archive',/a\    'calendar',\n    'carddav',\n    'emoticons',\n    'enigma',"             "${RCM_CONFIG_FILE}"                        \
    && echo   -e  "\n\$config['htmleditor'] = 4;"                                                                >> "${RCM_CONFIG_FILE}"                        \
    && echo   -e  "\n\$config['enable_installer'] = false;"                                                      >> "${RCM_CONFIG_FILE}"                        \
    && sed -i -e  "s%https://www.domain.com/rounddav/public/%RCM_CALDAV_HOST%"                                      "${RCM_CONFIG_DIR}/calendar.inc.php"        \
    && sed -i -e  "s%\$config\['calendar_caldav_url'\]%// \$config['calendar_caldav_url']%"                         "${RCM_CONFIG_DIR}/calendar.inc.php"        \
    && sed -i -e  "s%// default calendar view%// RCM_CALDAV_SHARED\n\n// default calendar view%"                    "${RCM_CONFIG_DIR}/calendar.inc.php"        \
    && sed -i -e  "s/\$config\['calendar_first_day'\] = 0;/\$config['calendar_first_day'] = 1;/"                    "${RCM_CONFIG_DIR}/calendar.inc.php"        \
    && mv         "${RCM_CONFIG_DIR}"                                                                               "${RCM_CONFIG_DIR}.ref"                     \
    && echo  -e   "${ROUNDCUBEMAIL}" | sed -e "s/\`/'/g" -e 's/ *$//'                                             > /etc/init.d/roundcubemail                   \
    && chmod  a+x                                                                                                   /etc/init.d/roundcubemail                   \
    && ln    -s   /etc/init.d/roundcubemail                                                                         /etc/rcD.d/S40roundcubemail
