diff --git a/docker-compose.yml b/docker-compose.yml index 355250e..de9bcd1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -210,6 +210,9 @@ services: - zpushstates/:/var/lib/z-push/ environment: - TZ=${TZ} + # Shared folders automatically assigned to all users in the format: [{"name":"","id":"","type":"","flags":""},...] + # For more information on the parameters see the z-push-admin help for the addshared-action. + - ZPUSH_ADDITIONAL_FOLDERS=[] env_file: - kopano_zpush.env networks: diff --git a/zpush/commander.yaml b/zpush/commander.yaml index 160e9c3..2c4ef49 100644 --- a/zpush/commander.yaml +++ b/zpush/commander.yaml @@ -35,6 +35,41 @@ tests: stdout: contains: - "define('USERNAME', 'SYSTEM');" + start-service script (no additional folders): + command: bash -c "shopt -s expand_aliases; alias exec='echo exec'; alias php-fpm7.0='echo php-fpm7.0'; . /kopano/start.sh" && cat /etc/z-push/z-push.conf.php + exit-code: 0 + stdout: + contains: + - " $additionalFolders = array(\n );" + not-contains: # default entry + - "\t$additionalFolders = array(" + - "\t);" + start-service script (empty additional folders): + command: bash -c "shopt -s expand_aliases; alias exec='echo exec'; alias php-fpm7.0='echo php-fpm7.0'; . /kopano/start.sh" && cat /etc/z-push/z-push.conf.php + exit-code: 0 + stdout: + contains: + - " $additionalFolders = array(\n );" + not-contains: # default entry + - "\t$additionalFolders = array(" + - "\t);" + config: + env: + ZPUSH_ADDITIONAL_FOLDERS: "[]" + start-service script (set additional folders): + command: bash -c "shopt -s expand_aliases; alias exec='echo exec'; alias php-fpm7.0='echo php-fpm7.0'; . /kopano/start.sh" && cat /etc/z-push/z-push.conf.php + exit-code: 0 + stdout: + contains: + - " $additionalFolders = array(\n array('store' => \"SYSTEM\", 'folderrid' => \"42\", 'name' => \"Calendar\", 'type' => \"SYNC_FOLDER_TYPE_USER_APPOINTMENT\", 'flags' => \"4\"),\n array('store' => \"SYSTEM\", 'folderrid' => \"21\", 'name' => \"Mail\", 'type' => \"SYNC_FOLDER_TYPE_USER_MAIL\", 'flags' => \"0\"),\n );" + not-contains: # default entry + - "\t$additionalFolders = array(" + - "\t);" + config: + env: + ZPUSH_ADDITIONAL_FOLDERS: "[{\"name\":\"Calendar\",\"id\":\"42\",\"type\":\"SYNC_FOLDER_TYPE_USER_APPOINTMENT\",\"flags\":\"4\"},{\"name\":\"Mail\",\"id\":\"21\",\"type\":\"SYNC_FOLDER_TYPE_USER_MAIL\",\"flags\":\"0\"}]" + + config: env: DEBUG: ${DEBUG} diff --git a/zpush/start.sh b/zpush/start.sh index 57555f6..91ce6ad 100755 --- a/zpush/start.sh +++ b/zpush/start.sh @@ -1,9 +1,10 @@ #!/bin/bash -# define default value for serverhostname and serverport if not passed into container +# define default value for serverhostname, serverport, additional packages and shared folders if not passed into container KCCONF_SERVERHOSTNAME=${KCCONF_SERVERHOSTNAME:-127.0.0.1} KCCONF_SERVERPORT=${KCCONF_SERVERPORT:-236} ADDITIONAL_KOPANO_PACKAGES=${ADDITIONAL_KOPANO_PACKAGES:-""} +ZPUSH_ADDITIONAL_FOLDERS=${ZPUSH_ADDITIONAL_FOLDERS:-"[]"} set -eu # unset variables are errors & non-zero return values exit the whole script [ "$DEBUG" ] && set -x @@ -100,6 +101,15 @@ for setting in $(compgen -A variable KCCONF_ZPUSHGA2CONTACTS_); do php_cfg_gen /etc/z-push/gab2contacts.conf.php "${setting2}" "${!setting}" done +# configuring z-push shared folders +perl -i -0pe 's/\$additionalFolders.*\);//s' /etc/z-push/z-push.conf.php +echo -e " \$additionalFolders = array(" >> /etc/z-push/z-push.conf.php +echo "$ZPUSH_ADDITIONAL_FOLDERS" | jq -c '.[]' | while read -r folder; do + eval "$(echo "$folder" | jq -r '@sh "NAME=\(.name) ID=\(.id) TYPE=\(.type) FLAGS=\(.flags)"')" + echo -e " array('store' => \"SYSTEM\", 'folderrid' => \"$ID\", 'name' => \"$NAME\", 'type' => \"$TYPE\", 'flags' => \"$FLAGS\")," >> /etc/z-push/z-push.conf.php +done +echo -e ' );' >> /etc/z-push/z-push.conf.php + echo "Ensure config ownership" chown -R www-data:www-data /run/sessions