From a7e23ee53b859a1ea96284c3f5ca23092373f13d Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 10 Dec 2018 21:14:01 +0100 Subject: [PATCH] Adding MDM / FILE / Spell support during setup.sh --- base/Dockerfile | 8 +++-- docker-compose.yml-example | 1 + setup.sh | 62 +++++++++++++++++++++++++++++++++++++- webapp/Dockerfile | 52 +++++++++++--------------------- webapp/start.sh | 3 ++ 5 files changed, 88 insertions(+), 38 deletions(-) diff --git a/base/Dockerfile b/base/Dockerfile index 56cab93..1c5ceb8 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -41,8 +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_SMIME_REPOSITORY_URL="file:/kopano/repo/smime" -ARG KOPANO_SMIME_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 b426dc1..1082b25 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 f87a8c1..b90fadb 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" "folderwidgets" "gmaps" "intranet" "mattermost" "pimfolder" "quickitems" "titlecounter" "webappmanual" "zdeveloper" "smime" "mdm" "files" "filesbackend-smb" "filesbackend-owncloud") + +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="" @@ -117,6 +136,42 @@ if [ ! -e ./.env ]; then MYSQL_PASSWORD=$(random_string) fi + ADDITIONAL_KOPANO_WEBAPP_PLUGINS="" + + 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 + KOPANO_SPELL_PLUGIN="kopano-webapp-plugin-spell" + [[ "${lang_choices[i]}" ]] && { KOPANO_SPELL_LANG_PLUGIN="${KOPANO_SPELL_LANG_PLUGIN} kopano-webapp-plugin-spell-${LANG_OPTIONS[i]}"; } + 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}" + echo ${PRINT_SETUP_SUCCESS} cat <<-EOF >"./.env" @@ -166,9 +221,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 ba2ebdb..0702fa7 100644 --- a/webapp/Dockerfile +++ b/webapp/Dockerfile @@ -8,12 +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_SMIME_REPOSITORY_URL="file:/kopano/repo/smime" +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_SMIME_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 @@ -21,15 +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_SMIME_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 "smime-${KOPANO_SMIME_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 -; \ @@ -42,38 +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 \ - kopano-webapp-plugin-smime \ ${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