- [kopano](src/kopano) Now, use man pages and sample config files to find valid keys to match envvar.
parent
9d7ed67165
commit
f13d2d2329
|
@ -1,3 +1,7 @@
|
||||||
|
# 1.2.4
|
||||||
|
|
||||||
|
- [kopano](src/kopano) Now, use man pages and sample config files to find valid keys to match envvar.
|
||||||
|
|
||||||
# 1.2.3
|
# 1.2.3
|
||||||
|
|
||||||
- [kopano](src/kopano) Adding support for secure IMAPS, POP3S and ICALS.
|
- [kopano](src/kopano) Adding support for secure IMAPS, POP3S and ICALS.
|
||||||
|
|
|
@ -88,7 +88,6 @@ ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
DOCKER_BIN_DIR=/usr/local/bin \
|
DOCKER_BIN_DIR=/usr/local/bin \
|
||||||
LMTP_LISTEN=*:2003 \
|
LMTP_LISTEN=*:2003 \
|
||||||
SA_GROUP=kopano \
|
SA_GROUP=kopano \
|
||||||
LOG_METHOD=syslog \
|
|
||||||
DOCKER_BUILD_DEB_DIR=/tmp/deb \
|
DOCKER_BUILD_DEB_DIR=/tmp/deb \
|
||||||
DOCKER_BUILD_PASSES=1
|
DOCKER_BUILD_PASSES=1
|
||||||
#
|
#
|
||||||
|
@ -173,7 +172,6 @@ RUN apt-get install --yes --no-install-recommends apache2 libapache2-mod-php \
|
||||||
&& . docker-common.sh \
|
&& . docker-common.sh \
|
||||||
&& . docker-config.sh \
|
&& . docker-config.sh \
|
||||||
&& dc_replace /etc/kopano/webapp/config.php 'define("SECURE_COOKIES", true);' 'define("SECURE_COOKIES", false);' \
|
&& dc_replace /etc/kopano/webapp/config.php 'define("SECURE_COOKIES", true);' 'define("SECURE_COOKIES", false);' \
|
||||||
# && dc_fixmissing /etc/php/7.?/apache2/conf.d/kopano.ini /etc/php/7.?/mods-available/kopano.ini /etc/php5/conf.d/kopano.ini \
|
|
||||||
&& dc_replace /etc/apache2/sites-available/kopano-webapp.conf 'Alias /webapp /usr/share/kopano-webapp' '<VirtualHost *:80>\\nDocumentRoot /usr/share/kopano-webapp' \
|
&& dc_replace /etc/apache2/sites-available/kopano-webapp.conf 'Alias /webapp /usr/share/kopano-webapp' '<VirtualHost *:80>\\nDocumentRoot /usr/share/kopano-webapp' \
|
||||||
&& echo '</VirtualHost>' >> /etc/apache2/sites-available/kopano-webapp.conf \
|
&& echo '</VirtualHost>' >> /etc/apache2/sites-available/kopano-webapp.conf \
|
||||||
&& dc_modify /etc/apache2/apache2.conf '^ErrorLog' syslog:user \
|
&& dc_modify /etc/apache2/apache2.conf '^ErrorLog' syslog:user \
|
||||||
|
|
|
@ -4,14 +4,6 @@
|
||||||
|
|
||||||
Consider integrating support for kDAV which provides CalDAV and CardDAV.
|
Consider integrating support for kDAV which provides CalDAV and CardDAV.
|
||||||
|
|
||||||
## Common configurations
|
|
||||||
|
|
||||||
The following directives exist:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
!include common.cfg
|
|
||||||
```
|
|
||||||
|
|
||||||
## Revisit Persistent Data
|
## Revisit Persistent Data
|
||||||
|
|
||||||
Consider consolidating directories which are candidates for persistence under `/srv`.
|
Consider consolidating directories which are candidates for persistence under `/srv`.
|
||||||
|
|
|
@ -36,6 +36,7 @@ services:
|
||||||
- ICALS_LISTEN=*:8443 # enable TLS
|
- ICALS_LISTEN=*:8443 # enable TLS
|
||||||
- DISABLED_FEATURES=${DISABLED_FEATURES-} # also enable IMAP and POP3
|
- DISABLED_FEATURES=${DISABLED_FEATURES-} # also enable IMAP and POP3
|
||||||
- SYSLOG_LEVEL=${SYSLOG_LEVEL-3}
|
- SYSLOG_LEVEL=${SYSLOG_LEVEL-3}
|
||||||
|
- LOG_LEVEL=${LOG_LEVEL-3}
|
||||||
volumes:
|
volumes:
|
||||||
- app-conf:/etc/kopano
|
- app-conf:/etc/kopano
|
||||||
- app-atch:/var/lib/kopano/attachments
|
- app-atch:/var/lib/kopano/attachments
|
||||||
|
|
|
@ -14,62 +14,60 @@
|
||||||
#
|
#
|
||||||
DOCKER_CONF_DIR1=${DOCKER_CONF_DIR1-/etc/kopano}
|
DOCKER_CONF_DIR1=${DOCKER_CONF_DIR1-/etc/kopano}
|
||||||
DOCKER_CONF_DIR2=${DOCKER_CONF_DIR2-/usr/share/z-push}
|
DOCKER_CONF_DIR2=${DOCKER_CONF_DIR2-/usr/share/z-push}
|
||||||
|
DOCKER_MAN5_DIR=${DOCKER_MAN5_DIR-/usr/share/man/man5/}
|
||||||
DOCKER_APPL_SSL_CERT=${DOCKER_APPL_SSL_CERT-$DOCKER_APPL_SSL_DIR/cert.pem}
|
DOCKER_APPL_SSL_CERT=${DOCKER_APPL_SSL_CERT-$DOCKER_APPL_SSL_DIR/cert.pem}
|
||||||
DOCKER_APPL_SSL_KEY=${DOCKER_APPL_SSL_KEY-$DOCKER_APPL_SSL_DIR/priv_key.pem}
|
DOCKER_APPL_SSL_KEY=${DOCKER_APPL_SSL_KEY-$DOCKER_APPL_SSL_DIR/priv_key.pem}
|
||||||
|
|
||||||
dagent_cfg_file=$DOCKER_CONF_DIR1/dagent.cfg
|
|
||||||
gateway_cfg_file=$DOCKER_CONF_DIR1/gateway.cfg
|
|
||||||
ical_cfg_file=$DOCKER_CONF_DIR1/ical.cfg
|
|
||||||
ldap_cfg_file=$DOCKER_CONF_DIR1/ldap.cfg
|
|
||||||
search_cfg_file=$DOCKER_CONF_DIR1/search.cfg
|
|
||||||
server_cfg_file=$DOCKER_CONF_DIR1/server.cfg
|
|
||||||
spamd_cfg_file=$DOCKER_CONF_DIR1/spamd.cfg
|
|
||||||
spooler_cfg_file=$DOCKER_CONF_DIR1/spooler.cfg
|
|
||||||
|
|
||||||
sqlstate_cfg_file=$DOCKER_CONF_DIR2/backend/sqlstatemachine/config.php
|
sqlstate_cfg_file=$DOCKER_CONF_DIR2/backend/sqlstatemachine/config.php
|
||||||
zpush_cfg_file=$DOCKER_CONF_DIR2/config.php
|
zpush_cfg_file=$DOCKER_CONF_DIR2/config.php
|
||||||
|
webapp_cfg_file=$DOCKER_CONF_DIR1/webapp/config.php
|
||||||
|
|
||||||
#
|
#
|
||||||
# Define environment variables
|
# Apply environment variables to configuration files.
|
||||||
|
# Uuse all valid keys (variables) for a service to see if there is a envvar with
|
||||||
|
# identical name, if so apply its value to the config file.
|
||||||
|
# With kopano-core use man page files to lookup valid keys.
|
||||||
|
# With kopano-webapp and z-push use installed config file to find valid keys.
|
||||||
#
|
#
|
||||||
ssl_env_vars="SSL_CERTIFICATE_FILE SSL_CIPHERS SSL_CURVES SSL_PREFER_SERVER_CIPHERS SSL_PRIVATE_KEY_FILE SSL_VERIFY_CLIENT SSL_VERIFY_FILE SSL_VERIFY_PATH TLS_MIN_PROTO"
|
kopano_apply_envvars_core() {
|
||||||
dagent_env_vars="LMTP_LISTEN SPAM_HEADER_NAME SPAM_HEADER_VALUE LOG_LEVEL"
|
for service in dagent gateway ical ldap search server spamd spooler; do
|
||||||
gateway_env_vars="BYPASS_AUTH DISABLE_PLAINTEXT_AUTH HTML_SAFETY_FILTER IMAP_CAPABILITY_IDLE IMAP_EXPUNGE_ON_DELETE IMAP_IGNORE_COMMAND_IDLE IMAP_LISTEN IMAP_MAX_FAIL_COMMANDS IMAP_MAX_MESSAGESIZE IMAP_ONLY_MAILFOLDERS IMAP_PUBLIC_FOLDERS IMAPS_LISTEN POP3_LISTEN POP3S_LISTEN DISABLE_PLAINTEXT_AUTH LOG_LEVEL"
|
kopano_apply_envvars_cfg $service
|
||||||
ical_env_vars="ICAL_LISTEN ICALS_LISTEN ENABLE_ICAL_GET LOG_LEVEL"
|
|
||||||
ldap_env_vars="LDAP_URI LDAP_STARTTLS LDAP_BIND_USER LDAP_BIND_PASSWD LDAP_SEARCH_BASE LDAP_USER_TYPE_ATTRIBUTE_VALUE LDAP_GROUP_TYPE_ATTRIBUTE_VALUE LDAP_USER_SEARCH_FILTER"
|
|
||||||
search_env_vars="INDEX_PROCESSES INDEX_DRAFTS INDEX_JUNK SUGGESTIONS INDEX_ATTACHMENTS INDEX_ATTACHMENT_MAX_SIZE LOG_LEVEL"
|
|
||||||
server_env_vars="MYSQL_HOST MYSQL_PORT MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD DISABLED_FEATURES USER_PLUGIN SEARCH_TIMEOUT LOG_LEVEL"
|
|
||||||
spamd_env_vars="SPAM_DIR SPAM_DB HEADER_TAG LEARN_HAM HAM_DIR SA_GROUP LOG_LEVEL LOG_METHOD"
|
|
||||||
spooler_env_vars="SMTP_SERVER SMTP_PORT LOG_LEVEL"
|
|
||||||
|
|
||||||
sqlstate_env_vars="STATE_SQL_ENGINE STATE_SQL_SERVER STATE_SQL_PORT STATE_SQL_DATABASE STATE_SQL_USER STATE_SQL_PASSWORD STATE_SQL_OPTIONS"
|
|
||||||
zpush_env_vars="TIMEZONE USE_CUSTOM_REMOTE_IP_HEADER USE_FULLEMAIL_FOR_LOGIN STATE_MACHINE STATE_DIR LOGBACKEND LOGLEVEL LOGAUTHFAIL LOG_SYSLOG_PROGRAM LOG_SYSLOG_FACILITY SYNC_CONFLICT_DEFAULT PING_INTERVAL FILEAS_ORDER SYNC_MAX_ITEMS UNSET_UNDEFINED_PROPERTIES ALLOW_WEBSERVICE_USERS_ACCESS USE_PARTIAL_FOLDERSYNC"
|
|
||||||
|
|
||||||
#
|
|
||||||
# Define helpers
|
|
||||||
#
|
|
||||||
|
|
||||||
_kopano_apply_envvars_gen() {
|
|
||||||
# move existing cfg files
|
|
||||||
local cfg_file=$1
|
|
||||||
shift
|
|
||||||
local env_vars=$@
|
|
||||||
if [ -e $cfg_file ]; then
|
|
||||||
mv -f $cfg_file $cfg_file.orig
|
|
||||||
fi
|
|
||||||
for env_var in $env_vars; do
|
|
||||||
if [ -n "${!env_var+x}" ]; then
|
|
||||||
dc_log 5 "Setting ${env_var,,} = ${!env_var} in $cfg_file"
|
|
||||||
echo ${env_var,,} = ${!env_var} >> $cfg_file
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
_kopano_apply_phpenvvars_gen() {
|
kopano_apply_envvars_webapp() {
|
||||||
|
kopano_apply_envvars_php $webapp_cfg_file
|
||||||
|
}
|
||||||
|
|
||||||
|
kopano_apply_envvars_zpush() {
|
||||||
|
kopano_apply_envvars_php $sqlstate_cfg_file
|
||||||
|
kopano_apply_envvars_php $zpush_cfg_file
|
||||||
|
}
|
||||||
|
|
||||||
|
kopano_apply_envvars_cfg() {
|
||||||
|
local cfg_file=$DOCKER_CONF_DIR1/$1.cfg
|
||||||
|
local man_file=$DOCKER_MAN5_DIR/kopano-$1.cfg.5.gz
|
||||||
|
if [ -f $man_file ]; then
|
||||||
|
local env_vars="$(kopano_get_envvars_man $man_file)"
|
||||||
|
if [ -e $cfg_file ]; then
|
||||||
|
mv -f $cfg_file $cfg_file.orig
|
||||||
|
fi
|
||||||
|
for env_var in $env_vars; do
|
||||||
|
if [ -n "${!env_var+x}" ]; then
|
||||||
|
dc_log 5 "Setting ${env_var,,} = ${!env_var} in $cfg_file"
|
||||||
|
echo ${env_var,,} = ${!env_var} >> $cfg_file
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
dc_log 4 "Could not find $man_file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
kopano_apply_envvars_php() {
|
||||||
local cfg_file=$1
|
local cfg_file=$1
|
||||||
shift
|
|
||||||
local env_vars=$@
|
|
||||||
if [ -e $cfg_file ]; then
|
if [ -e $cfg_file ]; then
|
||||||
|
local env_vars="$(kopano_get_envvars_php $cfg_file)"
|
||||||
|
cp -f $cfg_file $cfg_file.orig
|
||||||
for env_var in $env_vars; do
|
for env_var in $env_vars; do
|
||||||
if [ -n "${!env_var}" ]; then
|
if [ -n "${!env_var}" ]; then
|
||||||
dc_log 5 "Setting ${env_var} = ${!env_var} in $cfg_file"
|
dc_log 5 "Setting ${env_var} = ${!env_var} in $cfg_file"
|
||||||
|
@ -79,21 +77,8 @@ _kopano_apply_phpenvvars_gen() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
kopano_apply_envvars() {
|
kopano_get_envvars_man() { zcat $1 | sed -r "/^\.SS/!d;{s/^\.SS (.*)/\U\1/g;s/,//g}" | sort -u ;}
|
||||||
_kopano_apply_envvars_gen $dagent_cfg_file $dagent_env_vars
|
kopano_get_envvars_php() { sed -nr "/define\(/s/.*define\(['\"](.*)['\"], .*/\1/p" $1 | sort -u ;}
|
||||||
_kopano_apply_envvars_gen $gateway_cfg_file $gateway_env_vars $ssl_env_vars
|
|
||||||
_kopano_apply_envvars_gen $ical_cfg_file $ical_env_vars $ssl_env_vars
|
|
||||||
_kopano_apply_envvars_gen $ldap_cfg_file $ldap_env_vars
|
|
||||||
_kopano_apply_envvars_gen $search_cfg_file $search_env_vars
|
|
||||||
_kopano_apply_envvars_gen $server_cfg_file $server_env_vars
|
|
||||||
_kopano_apply_envvars_gen $spamd_cfg_file $spamd_env_vars
|
|
||||||
_kopano_apply_envvars_gen $spooler_cfg_file $spooler_env_vars
|
|
||||||
}
|
|
||||||
|
|
||||||
kopano_apply_phpenvvars() {
|
|
||||||
_kopano_apply_phpenvvars_gen $sqlstate_cfg_file $sqlstate_env_vars
|
|
||||||
_kopano_apply_phpenvvars_gen $zpush_cfg_file $zpush_env_vars
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Update SSL_CERTIFICATE_FILE and SSL_PRIVATE_KEY_FILE.
|
# Update SSL_CERTIFICATE_FILE and SSL_PRIVATE_KEY_FILE.
|
||||||
|
|
|
@ -14,6 +14,7 @@ if dc_is_unlocked; then
|
||||||
kopano_export_tls_cert
|
kopano_export_tls_cert
|
||||||
kopano_generate_tls_cert
|
kopano_generate_tls_cert
|
||||||
kopano_export_tls_cert
|
kopano_export_tls_cert
|
||||||
kopano_apply_envvars
|
kopano_apply_envvars_core
|
||||||
kopano_apply_phpenvvars
|
kopano_apply_envvars_webapp
|
||||||
|
kopano_apply_envvars_zpush
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -65,6 +65,7 @@ APP_ENV ?= $(NET_ENV) $(SQL_ENV) \
|
||||||
-e POP3_LISTEN=*:110 \
|
-e POP3_LISTEN=*:110 \
|
||||||
-e ICAL_LISTEN=*:8080 \
|
-e ICAL_LISTEN=*:8080 \
|
||||||
-e DISABLED_FEATURES= \
|
-e DISABLED_FEATURES= \
|
||||||
|
-e LOGLEVEL=LOGLEVEL_DEBUG \
|
||||||
-e SYSLOG_LEVEL=$(APP_SLOG) \
|
-e SYSLOG_LEVEL=$(APP_SLOG) \
|
||||||
-e LOG_LEVEL=$(APP_ALOG)
|
-e LOG_LEVEL=$(APP_ALOG)
|
||||||
APPS_ENV ?= $(APP_ENV) \
|
APPS_ENV ?= $(APP_ENV) \
|
||||||
|
@ -130,12 +131,12 @@ test-up_0: test-up-net
|
||||||
# run containers see if there are logs and stop.
|
# run containers see if there are logs and stop.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
docker run -d $(APP_ENV) $(APP_VOL) $(IMG_REPO):$(call _ver,$(IMG_VER),core)
|
docker run -d --name $(APP_NAME) $(IMG_REPO):$(call _ver,$(IMG_VER),core)
|
||||||
sleep $(TST_W8L1)
|
sleep $(TST_W8L1)
|
||||||
docker container logs $(APP_NAME) | grep 'docker-entrypoint.sh'
|
docker container logs $(APP_NAME) | grep 'docker-entrypoint.sh'
|
||||||
docker rm -fv $(APP_NAME)
|
docker rm -fv $(APP_NAME)
|
||||||
sleep $(TST_W8S1)
|
sleep $(TST_W8S1)
|
||||||
docker run -d $(APP_ENV) $(APP_VOL) $(IMG_REPO):$(call _ver,$(IMG_VER),full)
|
docker run -d --name $(APP_NAME) $(IMG_REPO):$(call _ver,$(IMG_VER),full)
|
||||||
sleep $(TST_W8L1)
|
sleep $(TST_W8L1)
|
||||||
docker container logs $(APP_NAME) | grep 'docker-entrypoint.sh'
|
docker container logs $(APP_NAME) | grep 'docker-entrypoint.sh'
|
||||||
docker rm -fv $(APP_NAME)
|
docker rm -fv $(APP_NAME)
|
||||||
|
|
Loading…
Reference in New Issue