diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fec0b61..41c34b9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ one in `OWNCLOUD_APPS_INSTALL` no longer aborts the container startup. A failing marketplace install now logs why it failed [#539](https://github.com/owncloud-docker/base/issues/539) + * `DEBUG=true` no longer prints secrets (admin, database, redis and SMTP + passwords, instance secret, object storage credentials, license key), and a + password containing a space no longer breaks `maintenance:install` + [#541](https://github.com/owncloud-docker/base/issues/541) * Changed * Removed env variable `OWNCLOUD_MARKETPLACE_KEY` (and its diff --git a/v22.04/overlay/etc/entrypoint.d/10-base.sh b/v22.04/overlay/etc/entrypoint.d/10-base.sh index aa623dd8..55d18f63 100755 --- a/v22.04/overlay/etc/entrypoint.d/10-base.sh +++ b/v22.04/overlay/etc/entrypoint.d/10-base.sh @@ -13,7 +13,8 @@ declare -x OWNCLOUD_DEBUG [[ -z "${OWNCLOUD_DEBUG}" ]] && OWNCLOUD_DEBUG="" declare -x OWNCLOUD_SECRET -[[ -z "${OWNCLOUD_SECRET}" ]] && OWNCLOUD_SECRET="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_SECRET:+x}" ]] && OWNCLOUD_SECRET="" declare -x OWNCLOUD_CIPHER [[ -z "${OWNCLOUD_CIPHER}" ]] && OWNCLOUD_CIPHER="" diff --git a/v22.04/overlay/etc/entrypoint.d/15-db.sh b/v22.04/overlay/etc/entrypoint.d/15-db.sh index 729f65c2..5352ee87 100755 --- a/v22.04/overlay/etc/entrypoint.d/15-db.sh +++ b/v22.04/overlay/etc/entrypoint.d/15-db.sh @@ -13,7 +13,8 @@ declare -x OWNCLOUD_DB_USERNAME [[ -z "${OWNCLOUD_DB_USERNAME}" ]] && OWNCLOUD_DB_USERNAME="" declare -x OWNCLOUD_DB_PASSWORD -[[ -z "${OWNCLOUD_DB_PASSWORD}" ]] && OWNCLOUD_DB_PASSWORD="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_DB_PASSWORD:+x}" ]] && OWNCLOUD_DB_PASSWORD="" declare -x OWNCLOUD_DB_PREFIX [[ -z "${OWNCLOUD_DB_PREFIX}" ]] && OWNCLOUD_DB_PREFIX="oc_" diff --git a/v22.04/overlay/etc/entrypoint.d/25-redis.sh b/v22.04/overlay/etc/entrypoint.d/25-redis.sh index e0b74618..49712a8e 100755 --- a/v22.04/overlay/etc/entrypoint.d/25-redis.sh +++ b/v22.04/overlay/etc/entrypoint.d/25-redis.sh @@ -13,7 +13,8 @@ declare -x OWNCLOUD_REDIS_DB [[ -z "${OWNCLOUD_REDIS_DB}" ]] && OWNCLOUD_REDIS_DB="" declare -x OWNCLOUD_REDIS_PASSWORD -[[ -z "${OWNCLOUD_REDIS_PASSWORD}" ]] && OWNCLOUD_REDIS_PASSWORD="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_REDIS_PASSWORD:+x}" ]] && OWNCLOUD_REDIS_PASSWORD="" declare -x OWNCLOUD_REDIS_TIMEOUT [[ -z "${OWNCLOUD_REDIS_TIMEOUT}" ]] && OWNCLOUD_REDIS_TIMEOUT="" diff --git a/v22.04/overlay/etc/entrypoint.d/30-admin.sh b/v22.04/overlay/etc/entrypoint.d/30-admin.sh index b1db604c..eef49514 100755 --- a/v22.04/overlay/etc/entrypoint.d/30-admin.sh +++ b/v22.04/overlay/etc/entrypoint.d/30-admin.sh @@ -4,6 +4,7 @@ declare -x OWNCLOUD_ADMIN_USERNAME [[ -z "${OWNCLOUD_ADMIN_USERNAME}" ]] && OWNCLOUD_ADMIN_USERNAME="admin" declare -x OWNCLOUD_ADMIN_PASSWORD -[[ -z "${OWNCLOUD_ADMIN_PASSWORD}" ]] && OWNCLOUD_ADMIN_PASSWORD="admin" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_ADMIN_PASSWORD:+x}" ]] && OWNCLOUD_ADMIN_PASSWORD="admin" true diff --git a/v22.04/overlay/etc/entrypoint.d/40-objectstorage.sh b/v22.04/overlay/etc/entrypoint.d/40-objectstorage.sh index d8e8d9f1..f536cda3 100755 --- a/v22.04/overlay/etc/entrypoint.d/40-objectstorage.sh +++ b/v22.04/overlay/etc/entrypoint.d/40-objectstorage.sh @@ -16,10 +16,12 @@ declare -x OWNCLOUD_OBJECTSTORE_REGION [[ -z "${OWNCLOUD_OBJECTSTORE_REGION}" ]] && OWNCLOUD_OBJECTSTORE_REGION="us-east-1" declare -x OWNCLOUD_OBJECTSTORE_KEY -[[ -z "${OWNCLOUD_OBJECTSTORE_KEY}" ]] && OWNCLOUD_OBJECTSTORE_KEY="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_OBJECTSTORE_KEY:+x}" ]] && OWNCLOUD_OBJECTSTORE_KEY="" declare -x OWNCLOUD_OBJECTSTORE_SECRET -[[ -z "${OWNCLOUD_OBJECTSTORE_SECRET}" ]] && OWNCLOUD_OBJECTSTORE_SECRET="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_OBJECTSTORE_SECRET:+x}" ]] && OWNCLOUD_OBJECTSTORE_SECRET="" declare -x OWNCLOUD_OBJECTSTORE_ENDPOINT [[ -z "${OWNCLOUD_OBJECTSTORE_ENDPOINT}" ]] && OWNCLOUD_OBJECTSTORE_ENDPOINT="https://s3.${OWNCLOUD_OBJECTSTORE_REGION}.amazonaws.com" diff --git a/v22.04/overlay/etc/entrypoint.d/65-license.sh b/v22.04/overlay/etc/entrypoint.d/65-license.sh index 7df5b4a0..97d0a1df 100755 --- a/v22.04/overlay/etc/entrypoint.d/65-license.sh +++ b/v22.04/overlay/etc/entrypoint.d/65-license.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash declare -x OWNCLOUD_LICENSE_KEY -[[ -z "${OWNCLOUD_LICENSE_KEY}" ]] && OWNCLOUD_LICENSE_KEY="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_LICENSE_KEY:+x}" ]] && OWNCLOUD_LICENSE_KEY="" declare -x OWNCLOUD_LICENSE_CLASS [[ -z "${OWNCLOUD_LICENSE_CLASS}" ]] && OWNCLOUD_LICENSE_CLASS="" diff --git a/v22.04/overlay/etc/entrypoint.d/75-mail.sh b/v22.04/overlay/etc/entrypoint.d/75-mail.sh index fd4b94b9..f9a044af 100755 --- a/v22.04/overlay/etc/entrypoint.d/75-mail.sh +++ b/v22.04/overlay/etc/entrypoint.d/75-mail.sh @@ -34,6 +34,7 @@ declare -x OWNCLOUD_MAIL_SMTP_NAME [[ -z "${OWNCLOUD_MAIL_SMTP_NAME}" ]] && OWNCLOUD_MAIL_SMTP_NAME="" declare -x OWNCLOUD_MAIL_SMTP_PASSWORD -[[ -z "${OWNCLOUD_MAIL_SMTP_PASSWORD}" ]] && OWNCLOUD_MAIL_SMTP_PASSWORD="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_MAIL_SMTP_PASSWORD:+x}" ]] && OWNCLOUD_MAIL_SMTP_PASSWORD="" true diff --git a/v22.04/overlay/usr/bin/occ b/v22.04/overlay/usr/bin/occ index 8d921046..362cf18e 100755 --- a/v22.04/overlay/usr/bin/occ +++ b/v22.04/overlay/usr/bin/occ @@ -9,6 +9,10 @@ if [[ -z "${OWNCLOUD_ENTRYPOINT_INITIALIZED}" ]]; then done fi +# the argument list can carry credentials, e.g. "maintenance:install --admin-pass", +# so it must not be echoed by xtrace. The caller already traces its own "occ ..." line. +{ set +x; } 2>/dev/null + if [[ "$(id -u)" == "0" ]]; then setpriv --reuid=www-data --regid=www-data --init-groups php /var/www/owncloud/occ "$@" else diff --git a/v22.04/overlay/usr/bin/owncloud b/v22.04/overlay/usr/bin/owncloud index e0247034..5872847a 100755 --- a/v22.04/overlay/usr/bin/owncloud +++ b/v22.04/overlay/usr/bin/owncloud @@ -11,20 +11,24 @@ fi case ${1} in install) - COMMAND="occ maintenance:install --no-interaction --data-dir ${OWNCLOUD_VOLUME_FILES}" - [[ -n "${OWNCLOUD_DB_TYPE}" ]] && COMMAND="${COMMAND} --database ${OWNCLOUD_DB_TYPE}" - [[ -n "${OWNCLOUD_DB_NAME}" ]] && COMMAND="${COMMAND} --database-name ${OWNCLOUD_DB_NAME}" - [[ -n "${OWNCLOUD_DB_USERNAME}" ]] && COMMAND="${COMMAND} --database-user ${OWNCLOUD_DB_USERNAME}" - [[ -n "${OWNCLOUD_DB_PASSWORD}" ]] && COMMAND="${COMMAND} --database-pass ${OWNCLOUD_DB_PASSWORD}" - [[ -n "${OWNCLOUD_DB_HOST}" ]] && COMMAND="${COMMAND} --database-host ${OWNCLOUD_DB_HOST}" - [[ -n "${OWNCLOUD_DB_PREFIX}" ]] && COMMAND="${COMMAND} --database-table-prefix ${OWNCLOUD_DB_PREFIX}" - [[ -n "${OWNCLOUD_ADMIN_USERNAME}" ]] && COMMAND="${COMMAND} --admin-user ${OWNCLOUD_ADMIN_USERNAME}" - [[ -n "${OWNCLOUD_ADMIN_PASSWORD}" ]] && COMMAND="${COMMAND} --admin-pass ${OWNCLOUD_ADMIN_PASSWORD}" + ARGS=(maintenance:install --no-interaction --data-dir "${OWNCLOUD_VOLUME_FILES}") + [[ -n "${OWNCLOUD_DB_TYPE}" ]] && ARGS+=(--database "${OWNCLOUD_DB_TYPE}") + [[ -n "${OWNCLOUD_DB_NAME}" ]] && ARGS+=(--database-name "${OWNCLOUD_DB_NAME}") + [[ -n "${OWNCLOUD_DB_USERNAME}" ]] && ARGS+=(--database-user "${OWNCLOUD_DB_USERNAME}") + [[ -n "${OWNCLOUD_DB_HOST}" ]] && ARGS+=(--database-host "${OWNCLOUD_DB_HOST}") + [[ -n "${OWNCLOUD_DB_PREFIX}" ]] && ARGS+=(--database-table-prefix "${OWNCLOUD_DB_PREFIX}") + [[ -n "${OWNCLOUD_ADMIN_USERNAME}" ]] && ARGS+=(--admin-user "${OWNCLOUD_ADMIN_USERNAME}") + + # keep the credentials out of the xtrace output when DEBUG=true + { set +x; } 2>/dev/null + [[ -n "${OWNCLOUD_DB_PASSWORD}" ]] && ARGS+=(--database-pass "${OWNCLOUD_DB_PASSWORD}") + [[ -n "${OWNCLOUD_ADMIN_PASSWORD}" ]] && ARGS+=(--admin-pass "${OWNCLOUD_ADMIN_PASSWORD}") set +e - ${COMMAND} + occ "${ARGS[@]}" RES=$? set -e + [[ "${DEBUG}" == "true" ]] && set -x if [[ "${RES}" -ge "1" ]]; then exit ${RES} diff --git a/v24.04/overlay/etc/entrypoint.d/10-base.sh b/v24.04/overlay/etc/entrypoint.d/10-base.sh index aa623dd8..55d18f63 100755 --- a/v24.04/overlay/etc/entrypoint.d/10-base.sh +++ b/v24.04/overlay/etc/entrypoint.d/10-base.sh @@ -13,7 +13,8 @@ declare -x OWNCLOUD_DEBUG [[ -z "${OWNCLOUD_DEBUG}" ]] && OWNCLOUD_DEBUG="" declare -x OWNCLOUD_SECRET -[[ -z "${OWNCLOUD_SECRET}" ]] && OWNCLOUD_SECRET="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_SECRET:+x}" ]] && OWNCLOUD_SECRET="" declare -x OWNCLOUD_CIPHER [[ -z "${OWNCLOUD_CIPHER}" ]] && OWNCLOUD_CIPHER="" diff --git a/v24.04/overlay/etc/entrypoint.d/15-db.sh b/v24.04/overlay/etc/entrypoint.d/15-db.sh index 729f65c2..5352ee87 100755 --- a/v24.04/overlay/etc/entrypoint.d/15-db.sh +++ b/v24.04/overlay/etc/entrypoint.d/15-db.sh @@ -13,7 +13,8 @@ declare -x OWNCLOUD_DB_USERNAME [[ -z "${OWNCLOUD_DB_USERNAME}" ]] && OWNCLOUD_DB_USERNAME="" declare -x OWNCLOUD_DB_PASSWORD -[[ -z "${OWNCLOUD_DB_PASSWORD}" ]] && OWNCLOUD_DB_PASSWORD="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_DB_PASSWORD:+x}" ]] && OWNCLOUD_DB_PASSWORD="" declare -x OWNCLOUD_DB_PREFIX [[ -z "${OWNCLOUD_DB_PREFIX}" ]] && OWNCLOUD_DB_PREFIX="oc_" diff --git a/v24.04/overlay/etc/entrypoint.d/25-redis.sh b/v24.04/overlay/etc/entrypoint.d/25-redis.sh index ebc33421..bafb3fa1 100755 --- a/v24.04/overlay/etc/entrypoint.d/25-redis.sh +++ b/v24.04/overlay/etc/entrypoint.d/25-redis.sh @@ -13,7 +13,8 @@ declare -x OWNCLOUD_REDIS_DB [[ -z "${OWNCLOUD_REDIS_DB}" ]] && OWNCLOUD_REDIS_DB="" declare -x OWNCLOUD_REDIS_PASSWORD -[[ -z "${OWNCLOUD_REDIS_PASSWORD}" ]] && OWNCLOUD_REDIS_PASSWORD="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_REDIS_PASSWORD:+x}" ]] && OWNCLOUD_REDIS_PASSWORD="" declare -x OWNCLOUD_REDIS_TIMEOUT [[ -z "${OWNCLOUD_REDIS_TIMEOUT}" ]] && OWNCLOUD_REDIS_TIMEOUT="" diff --git a/v24.04/overlay/etc/entrypoint.d/30-admin.sh b/v24.04/overlay/etc/entrypoint.d/30-admin.sh index b1db604c..eef49514 100755 --- a/v24.04/overlay/etc/entrypoint.d/30-admin.sh +++ b/v24.04/overlay/etc/entrypoint.d/30-admin.sh @@ -4,6 +4,7 @@ declare -x OWNCLOUD_ADMIN_USERNAME [[ -z "${OWNCLOUD_ADMIN_USERNAME}" ]] && OWNCLOUD_ADMIN_USERNAME="admin" declare -x OWNCLOUD_ADMIN_PASSWORD -[[ -z "${OWNCLOUD_ADMIN_PASSWORD}" ]] && OWNCLOUD_ADMIN_PASSWORD="admin" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_ADMIN_PASSWORD:+x}" ]] && OWNCLOUD_ADMIN_PASSWORD="admin" true diff --git a/v24.04/overlay/etc/entrypoint.d/40-objectstorage.sh b/v24.04/overlay/etc/entrypoint.d/40-objectstorage.sh index d8e8d9f1..f536cda3 100755 --- a/v24.04/overlay/etc/entrypoint.d/40-objectstorage.sh +++ b/v24.04/overlay/etc/entrypoint.d/40-objectstorage.sh @@ -16,10 +16,12 @@ declare -x OWNCLOUD_OBJECTSTORE_REGION [[ -z "${OWNCLOUD_OBJECTSTORE_REGION}" ]] && OWNCLOUD_OBJECTSTORE_REGION="us-east-1" declare -x OWNCLOUD_OBJECTSTORE_KEY -[[ -z "${OWNCLOUD_OBJECTSTORE_KEY}" ]] && OWNCLOUD_OBJECTSTORE_KEY="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_OBJECTSTORE_KEY:+x}" ]] && OWNCLOUD_OBJECTSTORE_KEY="" declare -x OWNCLOUD_OBJECTSTORE_SECRET -[[ -z "${OWNCLOUD_OBJECTSTORE_SECRET}" ]] && OWNCLOUD_OBJECTSTORE_SECRET="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_OBJECTSTORE_SECRET:+x}" ]] && OWNCLOUD_OBJECTSTORE_SECRET="" declare -x OWNCLOUD_OBJECTSTORE_ENDPOINT [[ -z "${OWNCLOUD_OBJECTSTORE_ENDPOINT}" ]] && OWNCLOUD_OBJECTSTORE_ENDPOINT="https://s3.${OWNCLOUD_OBJECTSTORE_REGION}.amazonaws.com" diff --git a/v24.04/overlay/etc/entrypoint.d/65-license.sh b/v24.04/overlay/etc/entrypoint.d/65-license.sh index 7df5b4a0..97d0a1df 100755 --- a/v24.04/overlay/etc/entrypoint.d/65-license.sh +++ b/v24.04/overlay/etc/entrypoint.d/65-license.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash declare -x OWNCLOUD_LICENSE_KEY -[[ -z "${OWNCLOUD_LICENSE_KEY}" ]] && OWNCLOUD_LICENSE_KEY="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_LICENSE_KEY:+x}" ]] && OWNCLOUD_LICENSE_KEY="" declare -x OWNCLOUD_LICENSE_CLASS [[ -z "${OWNCLOUD_LICENSE_CLASS}" ]] && OWNCLOUD_LICENSE_CLASS="" diff --git a/v24.04/overlay/etc/entrypoint.d/75-mail.sh b/v24.04/overlay/etc/entrypoint.d/75-mail.sh index fd4b94b9..f9a044af 100755 --- a/v24.04/overlay/etc/entrypoint.d/75-mail.sh +++ b/v24.04/overlay/etc/entrypoint.d/75-mail.sh @@ -34,6 +34,7 @@ declare -x OWNCLOUD_MAIL_SMTP_NAME [[ -z "${OWNCLOUD_MAIL_SMTP_NAME}" ]] && OWNCLOUD_MAIL_SMTP_NAME="" declare -x OWNCLOUD_MAIL_SMTP_PASSWORD -[[ -z "${OWNCLOUD_MAIL_SMTP_PASSWORD}" ]] && OWNCLOUD_MAIL_SMTP_PASSWORD="" +# ":+x" keeps the value out of the xtrace output when DEBUG=true +[[ -z "${OWNCLOUD_MAIL_SMTP_PASSWORD:+x}" ]] && OWNCLOUD_MAIL_SMTP_PASSWORD="" true diff --git a/v24.04/overlay/usr/bin/occ b/v24.04/overlay/usr/bin/occ index 8d921046..362cf18e 100755 --- a/v24.04/overlay/usr/bin/occ +++ b/v24.04/overlay/usr/bin/occ @@ -9,6 +9,10 @@ if [[ -z "${OWNCLOUD_ENTRYPOINT_INITIALIZED}" ]]; then done fi +# the argument list can carry credentials, e.g. "maintenance:install --admin-pass", +# so it must not be echoed by xtrace. The caller already traces its own "occ ..." line. +{ set +x; } 2>/dev/null + if [[ "$(id -u)" == "0" ]]; then setpriv --reuid=www-data --regid=www-data --init-groups php /var/www/owncloud/occ "$@" else diff --git a/v24.04/overlay/usr/bin/owncloud b/v24.04/overlay/usr/bin/owncloud index f12eba59..de7e0c9c 100755 --- a/v24.04/overlay/usr/bin/owncloud +++ b/v24.04/overlay/usr/bin/owncloud @@ -11,20 +11,24 @@ fi case ${1} in install) - COMMAND="occ maintenance:install --no-interaction --data-dir ${OWNCLOUD_VOLUME_FILES}" - [[ -n "${OWNCLOUD_DB_TYPE}" ]] && COMMAND="${COMMAND} --database ${OWNCLOUD_DB_TYPE}" - [[ -n "${OWNCLOUD_DB_NAME}" ]] && COMMAND="${COMMAND} --database-name ${OWNCLOUD_DB_NAME}" - [[ -n "${OWNCLOUD_DB_USERNAME}" ]] && COMMAND="${COMMAND} --database-user ${OWNCLOUD_DB_USERNAME}" - [[ -n "${OWNCLOUD_DB_PASSWORD}" ]] && COMMAND="${COMMAND} --database-pass ${OWNCLOUD_DB_PASSWORD}" - [[ -n "${OWNCLOUD_DB_HOST}" ]] && COMMAND="${COMMAND} --database-host ${OWNCLOUD_DB_HOST}" - [[ -n "${OWNCLOUD_DB_PREFIX}" ]] && COMMAND="${COMMAND} --database-table-prefix ${OWNCLOUD_DB_PREFIX}" - [[ -n "${OWNCLOUD_ADMIN_USERNAME}" ]] && COMMAND="${COMMAND} --admin-user ${OWNCLOUD_ADMIN_USERNAME}" - [[ -n "${OWNCLOUD_ADMIN_PASSWORD}" ]] && COMMAND="${COMMAND} --admin-pass ${OWNCLOUD_ADMIN_PASSWORD}" + ARGS=(maintenance:install --no-interaction --data-dir "${OWNCLOUD_VOLUME_FILES}") + [[ -n "${OWNCLOUD_DB_TYPE}" ]] && ARGS+=(--database "${OWNCLOUD_DB_TYPE}") + [[ -n "${OWNCLOUD_DB_NAME}" ]] && ARGS+=(--database-name "${OWNCLOUD_DB_NAME}") + [[ -n "${OWNCLOUD_DB_USERNAME}" ]] && ARGS+=(--database-user "${OWNCLOUD_DB_USERNAME}") + [[ -n "${OWNCLOUD_DB_HOST}" ]] && ARGS+=(--database-host "${OWNCLOUD_DB_HOST}") + [[ -n "${OWNCLOUD_DB_PREFIX}" ]] && ARGS+=(--database-table-prefix "${OWNCLOUD_DB_PREFIX}") + [[ -n "${OWNCLOUD_ADMIN_USERNAME}" ]] && ARGS+=(--admin-user "${OWNCLOUD_ADMIN_USERNAME}") + + # keep the credentials out of the xtrace output when DEBUG=true + { set +x; } 2>/dev/null + [[ -n "${OWNCLOUD_DB_PASSWORD}" ]] && ARGS+=(--database-pass "${OWNCLOUD_DB_PASSWORD}") + [[ -n "${OWNCLOUD_ADMIN_PASSWORD}" ]] && ARGS+=(--admin-pass "${OWNCLOUD_ADMIN_PASSWORD}") set +e - ${COMMAND} + occ "${ARGS[@]}" RES=$? set -e + [[ "${DEBUG}" == "true" ]] && set -x if [[ "${RES}" -ge "1" ]]; then exit ${RES}