diff --git a/base/Dockerfile b/base/Dockerfile index 7cc47f6..1c5ceb8 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -41,6 +41,12 @@ ARG KOPANO_CORE_VERSION=newest ARG KOPANO_REPOSITORY_FLAGS="trusted=yes" ARG KOPANO_WEBAPP_REPOSITORY_URL="file:/kopano/repo/webapp" ARG KOPANO_WEBAPP_VERSION=newest +ARG KOPANO_WEBAPP_FILES_REPOSITORY_URL="file:/kopano/repo/files" +ARG KOPANO_WEBAPP_FILES_VERSION=newest +ARG KOPANO_WEBAPP_MDM_REPOSITORY_URL="file:/kopano/repo/mdm" +ARG KOPANO_WEBAPP_MDM_VERSION=newest +ARG KOPANO_WEBAPP_SMIME_REPOSITORY_URL="file:/kopano/repo/smime" +ARG KOPANO_WEBAPP_SMIME_VERSION=newest ARG RELEASE_KEY_DOWNLOAD=0 # get common utilities diff --git a/docker-compose.yml-example b/docker-compose.yml-example index 250a872..eb3becd 100644 --- a/docker-compose.yml-example +++ b/docker-compose.yml-example @@ -186,6 +186,7 @@ services: - kopanosocket/:/run/kopano environment: - TZ=${TZ} + - ADDITIONAL_KOPANO_WEBAPP_PLUGINS=${ADDITIONAL_KOPANO_WEBAPP_PLUGINS} networks: - web - kopanonet diff --git a/setup.sh b/setup.sh index 3cf87c7..d92e2a8 100755 --- a/setup.sh +++ b/setup.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e @@ -15,6 +15,25 @@ if [ ! -e ./docker-compose.yml ]; then cp docker-compose.yml-example docker-compose.yml fi +LANG_OPTIONS=("de-at" "de-ch" "de-de" "en" "en-gb" "es" "fr" "it" "nl" "pl-pl") +PLUGIN_OPTIONS=("contactfax" "desktopnotifications" "filepreviewer" "files" "filesbackend-smb" "filesbackend-owncloud" "folderwidgets" "gmaps" "intranet" "mattermost" "mdm" "pimfolder" "quickitems" "smime" "titlecounter" "webappmanual" "zdeveloper") + +lang_menu() { + echo "Avaliable options:" + for i in ${!LANG_OPTIONS[@]}; do + printf "%3d%s) %s\n" $((i+1)) "${lang_choices[i]:- }" "${LANG_OPTIONS[i]}" + done + [[ "$msg" ]] && echo "$msg"; : +} + +plugin_menu() { + echo "Avaliable options:" + for i in ${!PLUGIN_OPTIONS[@]}; do + printf "%3d%s) %s\n" $((i+1)) "${plugin_choices[i]:- }" "${PLUGIN_OPTIONS[i]}" + done + [[ "$msg" ]] && echo "$msg"; : +} + if [ ! -e ./.env ]; then PRINT_SETUP_SUCCESS="" @@ -119,11 +138,54 @@ if [ ! -e ./.env ]; then MYSQL_DATABASE="kopano" MYSQL_ROOT_PASSWORD=$(random_string) MYSQL_PASSWORD=$(random_string) - fi + fi - echo ${PRINT_SETUP_SUCCESS} + ADDITIONAL_KOPANO_WEBAPP_PLUGINS="" - cat <<-EOF >"./.env" + prompt="Check language spell support (again to uncheck, ENTER when done): " + while lang_menu && read -rp "$prompt" num && [[ "$num" ]]; do + [[ "$num" != *[![:digit:]]* ]] && + (( num > 0 && num <= ${#LANG_OPTIONS[@]} )) || + { msg="Invalid option: $num"; continue; } + ((num--)); msg="${LANG_OPTIONS[num]} was ${choices[num]:+un}checked" + [[ "${choices[num]}" ]] && lang_choices[num]="" || lang_choices[num]="+" + done + + KOPANO_SPELL_PLUGIN="" + KOPANO_SPELL_LANG_PLUGIN="" + for i in ${!LANG_OPTIONS[@]}; do + [[ "${lang_choices[i]}" ]] && { KOPANO_SPELL_LANG_PLUGIN="${KOPANO_SPELL_LANG_PLUGIN} kopano-webapp-plugin-spell-${LANG_OPTIONS[i]}"; KOPANO_SPELL_PLUGIN="kopano-webapp-plugin-spell"; } + done + + ADDITIONAL_KOPANO_WEBAPP_PLUGINS="${KOPANO_SPELL_PLUGIN}${KOPANO_SPELL_LANG_PLUGIN}" + + prompt="Check for additional plugins (again to uncheck, ENTER when done): " + while plugin_menu && read -rp "$prompt" num && [[ "$num" ]]; do + [[ "$num" != *[![:digit:]]* ]] && + (( num > 0 && num <= ${#PLUGIN_OPTIONS[@]} )) || + { msg="Invalid option: $num"; continue; } + ((num--)); msg="${PLUGIN_OPTIONS[num]} was ${plugin_choices[num]:+un}checked" + [[ "${plugin_choices[num]}" ]] && plugin_choices[num]="" || plugin_choices[num]="+" + done + + KOPANO_WEBAPP_PLUGIN="" + for i in ${!PLUGIN_OPTIONS[@]}; do + [[ "${plugin_choices[i]}" ]] && { KOPANO_WEBAPP_PLUGIN="${KOPANO_WEBAPP_PLUGIN} kopano-webapp-plugin-${PLUGIN_OPTIONS[i]}"; } + done + + ADDITIONAL_KOPANO_WEBAPP_PLUGINS="${ADDITIONAL_KOPANO_WEBAPP_PLUGINS}${KOPANO_WEBAPP_PLUGIN}" + + value_default="no" + read -p "Integrate WhatsApp into DeskApp yes/no [$value_default]: " new_value + WHATSAPPDESKAPP_BOOLEAN=${new_value:-$value_default} + + if [ "${WHATSAPPDESKAPP_BOOLEAN}" == "yes" ]; then + ADDITIONAL_KOPANO_WEBAPP_PLUGINS="${ADDITIONAL_KOPANO_WEBAPP_PLUGINS} whatsapp4deskapp" + fi + + echo ${PRINT_SETUP_SUCCESS} + + cat <<-EOF >"./.env" # please consult https://github.com/zokradonh/kopano-docker # for possible configuration values and their impact CORE_VERSION=$CORE_VERSION @@ -171,9 +233,14 @@ HTTPS=443 # Docker Repository to push to docker_repo=zokradonh +ADDITIONAL_KOPANO_WEBAPP_PLUGINS=$ADDITIONAL_KOPANO_WEBAPP_PLUGINS + # modify below to build a different version, than the kopano nightly release #KOPANO_CORE_REPOSITORY_URL=https://serial:REPLACE-ME@download.kopano.io/supported/core:/final/Debian_9.0/ #KOPANO_WEBAPP_REPOSITORY_URL=https://serial:REPLACE-ME@download.kopano.io/supported/webapp:/final/Debian_9.0/ +#KOPANO_WEBAPP_FILES_REPOSITORY_URL=https://serial:REPLACE-ME@download.kopano.io/supported/files:/final/Debian_9.0/ +#KOPANO_WEBAPP_MDM_REPOSITORY_URL=https://serial:REPLACE-ME@download.kopano.io/supported/mdm:/final/Debian_9.0/ +#KOPANO_WEBAPP_SMIME_REPOSITORY_URL=https://serial:REPLACE-ME@download.kopano.io/supported/smime:/final/Debian_9.0/ #KOPANO_ZPUSH_REPOSITORY_URL=http://repo.z-hub.io/z-push:/final/Debian_9.0/ #RELEASE_KEY_DOWNLOAD=1 #DOWNLOAD_COMMUNITY_PACKAGES=0 diff --git a/webapp/Dockerfile b/webapp/Dockerfile index 248d1c6..0702fa7 100644 --- a/webapp/Dockerfile +++ b/webapp/Dockerfile @@ -8,10 +8,18 @@ ARG DOWNLOAD_COMMUNITY_PACKAGES=1 ARG KOPANO_CORE_REPOSITORY_URL="file:/kopano/repo/core" ARG KOPANO_REPOSITORY_FLAGS="trusted=yes" ARG KOPANO_WEBAPP_REPOSITORY_URL="file:/kopano/repo/webapp" +ARG KOPANO_WEBAPP_SMIME_REPOSITORY_URL="file:/kopano/repo/smime" +ARG KOPANO_WEBAPP_MDM_REPOSITORY_URL="file:/kopano/repo/mdm" +ARG KOPANO_WEBAPP_FILES_REPOSITORY_URL="file:/kopano/repo/files" ARG KOPANO_CORE_VERSION=newest ARG KOPANO_WEBAPP_VERSION=newest +ARG KOPANO_WEBAPP_FILES_VERSION=newest +ARG KOPANO_WEBAPP_MDM_VERSION=newest +ARG KOPANO_WEBAPP_SMIME_VERSION=newest ARG RELEASE_KEY_DOWNLOAD=0 +ENV ADDITIONAL_KOPANO_WEBAPP_PLUGINS="" + # install Kopano WebApp and refresh ca-certificates RUN \ # community download and package as apt source repository @@ -19,12 +27,21 @@ RUN \ if [ ${DOWNLOAD_COMMUNITY_PACKAGES} -eq 1 ]; then \ dl_and_package_community "core"; \ dl_and_package_community "webapp"; \ + dl_and_package_community "files"; \ + dl_and_package_community "mdm"; \ + dl_and_package_community "smime"; \ fi; \ echo "deb [${KOPANO_REPOSITORY_FLAGS}] ${KOPANO_CORE_REPOSITORY_URL} ./" > /etc/apt/sources.list.d/kopano.list; \ echo "deb [${KOPANO_REPOSITORY_FLAGS}] ${KOPANO_WEBAPP_REPOSITORY_URL} ./" >> /etc/apt/sources.list.d/kopano.list; \ + echo "deb [${KOPANO_REPOSITORY_FLAGS}] ${KOPANO_WEBAPP_SMIME_REPOSITORY_URL} ./" >> /etc/apt/sources.list.d/kopano.list; \ + echo "deb [${KOPANO_REPOSITORY_FLAGS}] ${KOPANO_WEBAPP_MDM_REPOSITORY_URL} ./" >> /etc/apt/sources.list.d/kopano.list; \ + echo "deb [${KOPANO_REPOSITORY_FLAGS}] ${KOPANO_WEBAPP_FILES_REPOSITORY_URL} ./" >> /etc/apt/sources.list.d/kopano.list; \ # save kopano version echo "core-${KOPANO_CORE_VERSION}" > /kopano/buildversion; \ echo "webapp-${KOPANO_WEBAPP_VERSION}" >> /kopano/buildversion; \ + echo "files-${KOPANO_WEBAPP_FILES_VERSION}" >> /kopano/buildversion; \ + echo "mdm-${KOPANO_WEBAPP_MDM_VERSION}" >> /kopano/buildversion; \ + echo "smime-${KOPANO_WEBAPP_SMIME_VERSION}" >> /kopano/buildversion; \ # install apt keys if supported kopano if [ ${RELEASE_KEY_DOWNLOAD} -eq 1 ]; then \ curl -s -S -o - "${KOPANO_CORE_REPOSITORY_URL}/Release.key" | apt-key add -; \ @@ -37,37 +54,8 @@ RUN \ crudini \ ca-certificates \ kopano-webapp \ - kopano-webapp-plugin-contactfax \ - kopano-webapp-plugin-desktopnotifications \ - kopano-webapp-plugin-filepreviewer \ - kopano-webapp-plugin-folderwidgets \ - kopano-webapp-plugin-gmaps \ - kopano-webapp-plugin-intranet \ - kopano-webapp-plugin-mattermost \ - kopano-webapp-plugin-pimfolder \ - kopano-webapp-plugin-quickitems \ - kopano-webapp-plugin-spell-de-at \ - kopano-webapp-plugin-spell-de-at \ - kopano-webapp-plugin-spell-de-ch \ - kopano-webapp-plugin-spell-de-de \ - kopano-webapp-plugin-spell-de-de \ - kopano-webapp-plugin-spell-en-gb \ - kopano-webapp-plugin-spell-en \ - kopano-webapp-plugin-spell-en \ - kopano-webapp-plugin-spell-es \ - kopano-webapp-plugin-spell-es \ - kopano-webapp-plugin-spell-fr \ - kopano-webapp-plugin-spell-it \ - kopano-webapp-plugin-spell-nl \ - kopano-webapp-plugin-spell-nl \ - kopano-webapp-plugin-spell-pl-pl \ - kopano-webapp-plugin-spell \ - kopano-webapp-plugin-spell \ - kopano-webapp-plugin-titlecounter \ - kopano-webapp-plugin-webappmanual \ - kopano-webapp-plugin-zdeveloper \ ${ADDITIONAL_KOPANO_PACKAGES} \ - whatsapp4deskapp \ + ${ADDITIONAL_KOPANO_WEBAPP_PLUGINS} \ && rm -rf /var/cache/apt /var/lib/apt/lists COPY apache2-kopano.conf /etc/apache2/sites-available/kopano.conf diff --git a/webapp/start.sh b/webapp/start.sh index daf3b4d..32b7a70 100755 --- a/webapp/start.sh +++ b/webapp/start.sh @@ -4,9 +4,12 @@ KCCONF_SERVERHOSTNAME=${KCCONF_SERVERHOSTNAME:-127.0.0.1} KCCONF_SERVERPORT=${KCCONF_SERVERPORT:-236} ADDITIONAL_KOPANO_PACKAGES=${ADDITIONAL_KOPANO_PACKAGES:-""} +ADDITIONAL_KOPANO_WEBAPP_PLUGINS=${ADDITIONAL_KOPANO_WEBAPP_PLUGINS:-""} set -eu # unset variables are errors & non-zero return values exit the whole script +ADDITIONAL_KOPANO_PACKAGES="$ADDITIONAL_KOPANO_PACKAGES $ADDITIONAL_KOPANO_WEBAPP_PLUGINS" + [ ! -z "$ADDITIONAL_KOPANO_PACKAGES" ] && apt update [ ! -z "$ADDITIONAL_KOPANO_PACKAGES" ] && for installpkg in "$ADDITIONAL_KOPANO_PACKAGES"; do if [ $(dpkg-query -W -f='${Status}' $installpkg 2>/dev/null | grep -c "ok installed") -eq 0 ]; then