- [kopano](src/kopano) Now, use man pages and sample config files to find valid keys to match envvar.

master
mlan 2020-11-17 21:58:33 +01:00
parent 9d7ed67165
commit f13d2d2329
7 changed files with 54 additions and 72 deletions

View File

@ -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
- [kopano](src/kopano) Adding support for secure IMAPS, POP3S and ICALS.

View File

@ -88,7 +88,6 @@ ENV DEBIAN_FRONTEND=noninteractive \
DOCKER_BIN_DIR=/usr/local/bin \
LMTP_LISTEN=*:2003 \
SA_GROUP=kopano \
LOG_METHOD=syslog \
DOCKER_BUILD_DEB_DIR=/tmp/deb \
DOCKER_BUILD_PASSES=1
#
@ -173,7 +172,6 @@ RUN apt-get install --yes --no-install-recommends apache2 libapache2-mod-php \
&& . docker-common.sh \
&& . docker-config.sh \
&& 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' \
&& echo '</VirtualHost>' >> /etc/apache2/sites-available/kopano-webapp.conf \
&& dc_modify /etc/apache2/apache2.conf '^ErrorLog' syslog:user \

View File

@ -4,14 +4,6 @@
Consider integrating support for kDAV which provides CalDAV and CardDAV.
## Common configurations
The following directives exist:
```sh
!include common.cfg
```
## Revisit Persistent Data
Consider consolidating directories which are candidates for persistence under `/srv`.

View File

@ -36,6 +36,7 @@ services:
- ICALS_LISTEN=*:8443 # enable TLS
- DISABLED_FEATURES=${DISABLED_FEATURES-} # also enable IMAP and POP3
- SYSLOG_LEVEL=${SYSLOG_LEVEL-3}
- LOG_LEVEL=${LOG_LEVEL-3}
volumes:
- app-conf:/etc/kopano
- app-atch:/var/lib/kopano/attachments

View File

@ -14,62 +14,60 @@
#
DOCKER_CONF_DIR1=${DOCKER_CONF_DIR1-/etc/kopano}
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_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
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"
dagent_env_vars="LMTP_LISTEN SPAM_HEADER_NAME SPAM_HEADER_VALUE LOG_LEVEL"
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"
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
kopano_apply_envvars_core() {
for service in dagent gateway ical ldap search server spamd spooler; do
kopano_apply_envvars_cfg $service
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
shift
local env_vars=$@
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
if [ -n "${!env_var}" ]; then
dc_log 5 "Setting ${env_var} = ${!env_var} in $cfg_file"
@ -79,21 +77,8 @@ _kopano_apply_phpenvvars_gen() {
fi
}
kopano_apply_envvars() {
_kopano_apply_envvars_gen $dagent_cfg_file $dagent_env_vars
_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
}
kopano_get_envvars_man() { zcat $1 | sed -r "/^\.SS/!d;{s/^\.SS (.*)/\U\1/g;s/,//g}" | sort -u ;}
kopano_get_envvars_php() { sed -nr "/define\(/s/.*define\(['\"](.*)['\"], .*/\1/p" $1 | sort -u ;}
#
# Update SSL_CERTIFICATE_FILE and SSL_PRIVATE_KEY_FILE.

View File

@ -14,6 +14,7 @@ if dc_is_unlocked; then
kopano_export_tls_cert
kopano_generate_tls_cert
kopano_export_tls_cert
kopano_apply_envvars
kopano_apply_phpenvvars
kopano_apply_envvars_core
kopano_apply_envvars_webapp
kopano_apply_envvars_zpush
fi

View File

@ -65,6 +65,7 @@ APP_ENV ?= $(NET_ENV) $(SQL_ENV) \
-e POP3_LISTEN=*:110 \
-e ICAL_LISTEN=*:8080 \
-e DISABLED_FEATURES= \
-e LOGLEVEL=LOGLEVEL_DEBUG \
-e SYSLOG_LEVEL=$(APP_SLOG) \
-e LOG_LEVEL=$(APP_ALOG)
APPS_ENV ?= $(APP_ENV) \
@ -130,12 +131,12 @@ test-up_0: test-up-net
# 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)
docker container logs $(APP_NAME) | grep 'docker-entrypoint.sh'
docker rm -fv $(APP_NAME)
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)
docker container logs $(APP_NAME) | grep 'docker-entrypoint.sh'
docker rm -fv $(APP_NAME)