# Rx3-Docker/Tools Docker Image
#-------------------------------------------------------------------------------

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 APACHE_DOC_ROOT
ARG REDPANDA_CONSOLE_PORT


ARG PHPPGADMIN_HTTPD_CONFIG="/etc/httpd/conf/sites.d/default_vhost.d/60-phppgadmin.conf"
ARG PHPPGADMIN_CONFIG="/etc/phppgadmin/config.inc.php"

ARG PHPMYADMIN_HTTPD_CONFIG="/etc/httpd/conf/sites.d/default_vhost.d/60-phpmyadmin.conf"
ARG PHPMYADMIN_CONFIG="/etc/phpmyadmin/config.inc.php"

ARG REDPANDA_CONSOLE_HOME="/opt/appl/redpanda_console"
ARG REDPANDA_CONSOLE_CONFIG="${REDPANDA_CONSOLE_HOME}/etc/redpanda-console-config.yaml"



#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ARG TOOLSD='#!/bin/bash                                                                                                                                                            \n\
                                                                                                                                                                                   \n\
# PostgreSQL                                                                                                                                                                       \n\
                                                                                                                                                                                   \n\
cp     '${PHPPGADMIN_CONFIG}'.ref                                                                                                                           '${PHPPGADMIN_CONFIG}' \n\
chown  apache:root                                                                                                                                          '${PHPPGADMIN_CONFIG}' \n\
                                                                                                                                                                                   \n\
sed -i "s/\t\$conf\[`servers`\]/\t\/\/\ $conf\[`servers`\]/"                                                                                                '${PHPPGADMIN_CONFIG}' \n\
sed -i "s/\$conf\[`extra_login_security`\] = true;/\$conf\[`extra_login_security`\] = false;/"                                                              '${PHPPGADMIN_CONFIG}' \n\
sed -i "s/?>//"                                                                                                                                             '${PHPPGADMIN_CONFIG}' \n\
                                                                                                                                                                                   \n\
for vars in POSTGRESQL_SERVER_NAME:desc POSTGRESQL_HOST:host POSTGRESQL_PORT:port                                                                                                  \n\
do                                                                                                                                                                                 \n\
    IFS=":"                                                                                                                                                                        \n\
    set ${vars}                                                                                                                                                                    \n\
                                                                                                                                                                                   \n\
    eval read -r -a $2 \<\<\< "\${$1}"                                                                                                                                             \n\
done                                                                                                                                                                               \n\
                                                                                                                                                                                   \n\
IFS=" "                                                                                                                                                                            \n\
                                                                                                                                                                                   \n\
i=0                                                                                                                                                                                \n\
while [[ ${i} -lt ${#host[@]} ]]                                                                                                                                                   \n\
do                                                                                                                                                                                 \n\
    for var in desc host port                                                                                                                                                      \n\
    do                                                                                                                                                                             \n\
        eval echo -e "`\t\$conf`[\`servers\`][${i}][\`${var}\`]`            = `\`\${${var}[${i}]}\`\;"                                                   >> '${PHPPGADMIN_CONFIG}' \n\
    done                                                                                                                                                                           \n\
                                                                                                                                                                                   \n\
    echo -e "\t\$conf[`servers`][${i}][`sslmode`]         = `allow`;"                                                                                    >> '${PHPPGADMIN_CONFIG}' \n\
    echo -e "\t\$conf[`servers`][${i}][`defaultdb`]       = `postgres`;"                                                                                 >> '${PHPPGADMIN_CONFIG}' \n\
    echo -e "\t\$conf[`servers`][${i}][`pg_dump_path`]    = `/usr/bin/pg_dump`;"                                                                         >> '${PHPPGADMIN_CONFIG}' \n\
    echo -e "\t\$conf[`servers`][${i}][`pg_dumpall_path`] = `/usr/bin/pg_dumpall`;"                                                                      >> '${PHPPGADMIN_CONFIG}' \n\
                                                                                                                                                                                   \n\
    i=$(( ${i} + 1))                                                                                                                                                               \n\
done                                                                                                                                                                               \n\
                                                                                                                                                                                   \n\
echo "?>"                                                                                                                                                >> '${PHPPGADMIN_CONFIG}' \n\
                                                                                                                                                                                   \n\
                                                                                                                                                                                   \n\
# MariaDB                                                                                                                                                                          \n\
                                                                                                                                                                                   \n\
cp     '${PHPMYADMIN_CONFIG}'.ref                                                                                                                           '${PHPMYADMIN_CONFIG}' \n\
chown  apache:root                                                                                                                                          '${PHPMYADMIN_CONFIG}' \n\
                                                                                                                                                                                   \n\
sed -i -E `s/(^\$cfg`"\[`blowfish_secret`\] = `)([^`]{32})[^`]*`/\1\2`/g"                                                                                   '${PHPMYADMIN_CONFIG}' \n\
sed -i "s/^\$cfg\[`Servers`\]/\/\/\ $cfg\[`Servers`\]/"                                                                                                     '${PHPMYADMIN_CONFIG}' \n\
                                                                                                                                                                                   \n\
for vars in MARIADB_SERVER_NAME:verbose MARIADB_HOST:host MARIADB_PORT:port                                                                                                        \n\
do                                                                                                                                                                                 \n\
    IFS=":"                                                                                                                                                                        \n\
    set ${vars}                                                                                                                                                                    \n\
                                                                                                                                                                                   \n\
    eval read -r -a $2 \<\<\< "\${$1}"                                                                                                                                             \n\
done                                                                                                                                                                               \n\
                                                                                                                                                                                   \n\
IFS=" "                                                                                                                                                                            \n\
                                                                                                                                                                                   \n\
i=0                                                                                                                                                                                \n\
while [[ ${i} -lt ${#host[@]} ]]                                                                                                                                                   \n\
do                                                                                                                                                                                 \n\
    j=$(( ${i} + 1))                                                                                                                                                               \n\
                                                                                                                                                                                   \n\
    for var in verbose host port                                                                                                                                                   \n\
    do                                                                                                                                                                             \n\
        eval echo -e "`\$cfg`[\`Servers\`][${j}][\`${var}\`]`            = `\`\${${var}[${i}]}\`\;"                                                      >> '${PHPMYADMIN_CONFIG}' \n\
    done                                                                                                                                                                           \n\
                                                                                                                                                                                   \n\
    echo -e "\$cfg[`Servers`][${j}][`auth_type`]       = `cookie`;"                                                                                      >> '${PHPMYADMIN_CONFIG}' \n\
    echo -e "\$cfg[`Servers`][${j}][`compress`]        = `false`;"                                                                                       >> '${PHPMYADMIN_CONFIG}' \n\
    echo -e "\$cfg[`Servers`][${j}][`AllowNoPassword`] = `false`;"                                                                                       >> '${PHPMYADMIN_CONFIG}' \n\
                                                                                                                                                                                   \n\
    i=$(( ${i} + 1))                                                                                                                                                               \n\
done                                                                                                                                                                               \n\
                                                                                                                                                                                   \n\
echo "?>"                                                                                                                                                >> '${PHPMYADMIN_CONFIG}

#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ARG REDPANDA_CONSOLED='#!/bin/bash                                                                                                                                                 \n\
                                                                                                                                                                                   \n\
cp     '${REDPANDA_CONSOLE_CONFIG}'.ref                                                                                                               '${REDPANDA_CONSOLE_CONFIG}' \n\
chown  apache:root                                                                                                                                    '${REDPANDA_CONSOLE_CONFIG}' \n\
                                                                                                                                                                                   \n\
if [[ "${KAFKA_BROKERS}" != "" ]]                                                                                                                                                  \n\
then                                                                                                                                                                               \n\
    sed -i "s/^    - broker-/    #- broker-/"                                                                                                         '${REDPANDA_CONSOLE_CONFIG}' \n\
                                                                                                                                                                                   \n\
    for broker in ${KAFKA_BROKERS}                                                                                                                                                 \n\
    do                                                                                                                                                                             \n\
        sed -i "s/^  brokers:/  brokers:\\n    - ${broker}/"                                                                                          '${REDPANDA_CONSOLE_CONFIG}' \n\
    done                                                                                                                                                                           \n\
                                                                                                                                                                                   \n\
    sed -i "s/^  #setBasePathFromXForwardedPrefix:/  setBasePathFromXForwardedPrefix:/"                                                               '${REDPANDA_CONSOLE_CONFIG}' \n\
    sed -i "s/^#server:/server:/"                                                                                                                     '${REDPANDA_CONSOLE_CONFIG}' \n\
    sed -i "s/^  #listenPort: 8080/  listenPort: '${REDPANDA_CONSOLE_PORT}'/"                                                                         '${REDPANDA_CONSOLE_CONFIG}' \n\
fi                                                                                                                                                                                 \n\
                                                                                                                                                                                   \n\
# RedPanda Console is disabled by default                                                                                                                                          \n\
if [[ "${TOOLS_RPC_ENABLED}" != "TRUE" ]]                                                                                                                                          \n\
then                                                                                                                                                                               \n\
    file_enable /etc/supervisord.d/redpanda_consoled.ini FALSE                                                                                                                     \n\
fi'
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ARG REDPANDA_CONSOLED_INI='[program:redpanda_consoled]                                                                                                                             \n\
directory='${REDPANDA_CONSOLE_HOME}'                                                                                                                                               \n\
command='${REDPANDA_CONSOLE_HOME}'/bin/redpanda-console -config.filepath '${REDPANDA_CONSOLE_CONFIG}'                                                                              \n\
user=apache'
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



RUN    . /etc/profile.d/rx3.sh && isl --add ${IMG_URL}                                                                                                                               \
    && urpmi.update -a                                                                                                                                                               \
    && urpmi --force wget postgresql15 phppgadmin mariadb-client phpmyadmin                                                                                                          \
    && mv        /etc/httpd/conf/sites.d/phppgadmin.conf                                                                                    ${PHPPGADMIN_HTTPD_CONFIG}               \
    && sed -i -e '/<Directory .*/,/<\/Directory>/d'                                                                                         ${PHPPGADMIN_HTTPD_CONFIG}               \
    && echo -e   "<Directory /var/www/phppgadmin>\n    AllowOverride All\n    Require all granted\n</Directory>"                         >> ${PHPPGADMIN_HTTPD_CONFIG}               \
    && mv        ${PHPPGADMIN_CONFIG}                                                                                                       ${PHPPGADMIN_CONFIG}.ref                 \
    && mv        /etc/httpd/conf/sites.d/phpmyadmin.conf                                                                                    ${PHPMYADMIN_HTTPD_CONFIG}               \
    && sed -i -e '/<Directory .*/,/<\/Directory>/d'                                                                                         ${PHPMYADMIN_HTTPD_CONFIG}               \
    && echo -e   "<Directory /usr/share/phpmyadmin>\n    AllowOverride All\n    Require all granted\n</Directory>"                       >> ${PHPMYADMIN_HTTPD_CONFIG}               \
    && mv        ${PHPMYADMIN_CONFIG}                                                                                                       ${PHPMYADMIN_CONFIG}.ref                 \
    && echo -e   "${TOOLSD}"              | sed -e "s/\`/'/g" -e 's/ *$//'                                                                > /etc/init.d/toolsd                       \   
    && chmod a+x /etc/init.d/toolsd                                                                                                                                                  \
    && ln   -s   /etc/init.d/toolsd /etc/rcD.d/S40toolsd                                                                                                                             \
    && mkdir -p  ${REDPANDA_CONSOLE_HOME}/bin ${REDPANDA_CONSOLE_HOME}/etc                                                                                                           \ 
    && wget -q -O- "https://www.rx3.net/data/external/redpanda/redpanda_console_2.7.2_linux_amd64.tar.gz" | tar xzf - -C ${REDPANDA_CONSOLE_HOME}/bin                                \
    && wget -q -O- "https://www.rx3.net/data/external/redpanda/redpanda-console-config-27.7.yaml"                                         > ${REDPANDA_CONSOLE_CONFIG}.ref           \
    && echo -e   "${REDPANDA_CONSOLED}"    | sed -e "s/\`/'/g" -e 's/ *$//'                                                               > /etc/init.d/redpanda_consoled            \
    && chmod a+x /etc/init.d/redpanda_consoled                                                                                                                                       \
    && ln   -s   /etc/init.d/redpanda_consoled /etc/rcD.d/S45redpanda_consoled                                                                                                       \
    && echo  -e  "${REDPANDA_CONSOLED_INI}" | sed -e "s/\`/'/g" -e 's/ *$//'                                                              > /etc/supervisord.d/redpanda_consoled.ini
