- [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
|
||||
|
||||
- [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 \
|
||||
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 \
|
||||
|
|
|
@ -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`.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue