- [kopano](src/kopano/entry.d/10-kopano-common) Allow module based parameter names.
- [docker](src/docker/bin/docker-config.sh) Add provision to set up crontab using envvars.master
parent
8e9a9bcf67
commit
4ccda2a36c
|
@ -1,10 +1,12 @@
|
|||
# 1.2.5
|
||||
|
||||
- [docker](Dockerfile) Install [kopano archiver](https://documentation.kopano.io/kopano_archiver_manual/) in target `core`.
|
||||
- [docker](Dockerfile) Install the [kopano archiver](https://documentation.kopano.io/kopano_archiver_manual/) in target `core`.
|
||||
- [docker](Dockerfile) Install the smime webapp plugin providing [S/MIME](https://kopano.com/blog/s-mime-plugin-description/).
|
||||
- [docker](Dockerfile) Install the mdm webapp plugin providing [Mobile Device Management](https://documentation.kopano.io/webapp_mdm_manual/).
|
||||
- [demo](demo) Add [S/MIME](https://kopano.com/blog/s-mime-plugin-description/) cert generation.
|
||||
- [kopano](src/kopano/entry.d/10-kopano-common) Fix bug in `kopano_apply_envvars_php()`.
|
||||
- [kopano](src/kopano/entry.d/10-kopano-common) Allow module based parameter names.
|
||||
- [docker](src/docker/bin/docker-config.sh) Add provision to set up crontab using envvars.
|
||||
|
||||
# 1.2.4
|
||||
|
||||
|
|
10
Dockerfile
10
Dockerfile
|
@ -13,6 +13,8 @@ ENV DEBIAN_FRONTEND=noninteractive \
|
|||
DOCKER_BIN_DIR=/usr/local/bin \
|
||||
DOCKER_ENTRY_DIR=/etc/docker/entry.d \
|
||||
DOCKER_EXIT_DIR=/etc/docker/exit.d \
|
||||
DOCKER_CRONTAB_FILE=/etc/kopano/docker-crontab \
|
||||
DOCKER_CRONTAB_DIR=/etc/cron.d \
|
||||
DOCKER_CONF_DIR1=/etc/kopano \
|
||||
DOCKER_CONF_DIR2=/usr/share/z-push \
|
||||
DOCKER_APPL_LIB=/var/lib/kopano \
|
||||
|
@ -31,6 +33,7 @@ ENV DEBIAN_FRONTEND=noninteractive \
|
|||
COPY src/*/bin $DOCKER_BIN_DIR/
|
||||
COPY src/*/entry.d $DOCKER_ENTRY_DIR/
|
||||
COPY src/*/exit.d $DOCKER_EXIT_DIR/
|
||||
COPY src/*/config $DOCKER_CONF_DIR1/
|
||||
|
||||
#
|
||||
# Install helpers. Set bash as default shell. Setup syslogs service.
|
||||
|
@ -46,7 +49,12 @@ RUN apt-get update && apt-get install --yes --no-install-recommends \
|
|||
gnupg \
|
||||
jq \
|
||||
inotify-tools \
|
||||
&& docker-service.sh "syslogd -nO- -l$SYSLOG_LEVEL $SYSLOG_OPTIONS"
|
||||
cron \
|
||||
&& ln -s $DOCKER_CRONTAB_FILE $DOCKER_CRONTAB_DIR \
|
||||
&& docker-service.sh \
|
||||
"syslogd -nO- -l$SYSLOG_LEVEL $SYSLOG_OPTIONS" \
|
||||
"cron -f"
|
||||
# "cron -f -L 4"
|
||||
|
||||
|
||||
|
||||
|
|
28
ROADMAP.md
28
ROADMAP.md
|
@ -1,5 +1,16 @@
|
|||
# Road map
|
||||
|
||||
## Overlapping parameters
|
||||
|
||||
`MYSQL_HOST=db`
|
||||
`SERVER_MYSQL_HOST=db-srv`
|
||||
`ARCHIVER_MYSQL_HOST=db-arc`
|
||||
|
||||
## Cron
|
||||
|
||||
`CRONTAB_ENTRY1=0 1 * * * root kopano-archiver -A`
|
||||
`CRONTAB_ENTRY2=0 3 * * 0 root kopano-archiver -C`
|
||||
|
||||
## kDAV
|
||||
|
||||
Consider integrating support for kDAV which provides CalDAV and CardDAV.
|
||||
|
@ -16,20 +27,3 @@ Consider to also consolidating it under /srv to simplify making it persistent?
|
|||
## webapp-passwd
|
||||
|
||||
Integrate [webapp-passwd](https://github.com/silentsakky/zarafa-webapp-passwd)?
|
||||
|
||||
## Improve Health Check?
|
||||
|
||||
Verify the user anonymously.
|
||||
```bash
|
||||
ldapsearch -h dockerhost -xLLL -b dc=example,dc=com '(kopanoAccount=1)'
|
||||
```
|
||||
|
||||
Check if kopano can get the user from LDAP
|
||||
```bash
|
||||
kopano-admin -l
|
||||
```
|
||||
check that apache and mysql is running
|
||||
```bash
|
||||
apache2ctl status
|
||||
mysqlcheck -A
|
||||
```
|
||||
|
|
|
@ -55,6 +55,9 @@ $(addsuffix -top,$(srv_list)):
|
|||
$(addsuffix -logs,$(srv_list)):
|
||||
docker-compose logs $(patsubst %-logs,%,$@)
|
||||
|
||||
$(addsuffix -pull,$(srv_list)):
|
||||
docker-compose pull $(patsubst %-pull,%,$@)
|
||||
|
||||
$(addsuffix -sh,$(srv_list)):
|
||||
docker-compose exec $(patsubst %-sh,%,$@) sh -c 'exec $$(getent passwd root | sed "s/.*://g")'
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@ HOSTNAME=${HOSTNAME-$(hostname)}
|
|||
DOMAIN=${HOSTNAME#*.}
|
||||
TLS_KEYBITS=${TLS_KEYBITS-2048}
|
||||
TLS_CERTDAYS=${TLS_CERTDAYS-30}
|
||||
DOCKER_CRONTAB_FILE=${DOCKER_CRONTAB_FILE-/etc/crontab}
|
||||
DOCKER_CRONTAB_ENV=${DOCKER_CRONTAB_ENV-CRONTAB_ENTRY}
|
||||
|
||||
#
|
||||
# general file manipulation commands, used both during build and run time
|
||||
|
@ -232,6 +234,18 @@ dc_prune_pidfiles() {
|
|||
done
|
||||
}
|
||||
|
||||
#
|
||||
# Setup crontab entries
|
||||
#
|
||||
dc_crontab_entries() {
|
||||
local entries="$(eval echo \${!$DOCKER_CRONTAB_ENV*})"
|
||||
for entry in $entries; do
|
||||
[ -z "${changed+x}" ] && local changed= && sed -i '/^#$/q' $DOCKER_CRONTAB_FILE
|
||||
echo "${!entry}" >> $DOCKER_CRONTAB_FILE
|
||||
dc_log 5 "Added entry ${!entry} in $DOCKER_CRONTAB_FILE"
|
||||
done
|
||||
}
|
||||
|
||||
#
|
||||
# TLS/SSL Certificates [openssl]
|
||||
#
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
# /etc/cron.d/docker-crontab: crontab entries for docker
|
||||
|
||||
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||
|
||||
# During initialization CRONTAB_ENTRY envvars will overwrite everything after
|
||||
# the first line with a single #. Don't change the next line.
|
||||
#
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 50-docker-crontab-entry
|
||||
#
|
||||
# Functions defined in:
|
||||
# docker-config.sh
|
||||
#
|
||||
#
|
||||
|
||||
#
|
||||
# Add crontab entries if the config is unlocked.
|
||||
#
|
||||
if dc_is_unlocked; then
|
||||
dc_crontab_entries
|
||||
fi
|
|
@ -18,6 +18,7 @@ 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}
|
||||
DOCKER_LDAP_PMAP_FILE=${DOCKER_LDAP_PMAP_FILE-/usr/share/kopano/ldap.propmap.cfg}
|
||||
DOCKER_LDAP_SERVICES=${DOCKER_LDAP_SERVICES-archiver dagent gateway ical ldap search server spamd spooler}
|
||||
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
|
||||
|
@ -32,7 +33,7 @@ webapp_smime_cfg_file=$DOCKER_CONF_DIR1/webapp/config-smime.php
|
|||
# With kopano-webapp and z-push use installed config file to find valid keys.
|
||||
#
|
||||
kopano_apply_envvars_core() {
|
||||
for service in dagent gateway ical ldap search server spamd spooler; do
|
||||
for service in $DOCKER_LDAP_SERVICES; do
|
||||
kopano_apply_envvars_cfg $service
|
||||
done
|
||||
}
|
||||
|
@ -48,16 +49,20 @@ kopano_apply_envvars_zpush() {
|
|||
kopano_apply_envvars_php $zpush_cfg_file
|
||||
}
|
||||
|
||||
#
|
||||
# kopano_apply_envvars_cfg <service>
|
||||
#
|
||||
kopano_apply_envvars_cfg() {
|
||||
local cfg_file=$(kopano_gen_filename_cfg $1)
|
||||
local man_file=$(kopano_gen_filename_man $1)
|
||||
local service=$1
|
||||
local cfg_file=$(kopano_gen_filename_cfg $service)
|
||||
local man_file=$(kopano_gen_filename_man $service)
|
||||
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.bak
|
||||
fi
|
||||
for env_var in $env_vars; do
|
||||
kopano_set_envvars_cfg $cfg_file $env_var
|
||||
kopano_set_envvars_cfg $service $env_var
|
||||
done
|
||||
else
|
||||
dc_log 4 "Could not find $man_file"
|
||||
|
@ -70,25 +75,31 @@ kopano_apply_envvars_php() {
|
|||
local env_vars="$(kopano_get_envvars_php $cfg_file)"
|
||||
for env_var in $env_vars; do
|
||||
if [ -n "${!env_var}" ]; then
|
||||
[ -z "${changed+x}" ] && cp -f $cfg_file $cfg_file.bak
|
||||
[ -z "${changed+x}" ] && local changed= && cp -f $cfg_file $cfg_file.bak
|
||||
dc_log 5 "Setting ${env_var} = ${!env_var} in $cfg_file"
|
||||
sed -ri "s/(\s*define[('\"]+${env_var}['\",]+).+/\1 ${!env_var});/Ig" $cfg_file
|
||||
local changed
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# kopano_set_envvars_cfg </path/file.cfg> <envvar name> [explicit parameter name]
|
||||
# kopano_set_envvars_cfg <service> <envvar name> [explicit parameter name]
|
||||
#
|
||||
kopano_set_envvars_cfg() {
|
||||
local cfg_file=$1
|
||||
local service=$1
|
||||
local cfg_file=$(kopano_gen_filename_cfg $service)
|
||||
local env_var=$2
|
||||
local uniq_var=${service^^}_${env_var}
|
||||
local cfg_par="${3-$env_var =}"
|
||||
if [ -n "${!env_var+x}" ]; then
|
||||
dc_log 5 "Setting ${cfg_par,,} ${!env_var} in $cfg_file"
|
||||
echo ${cfg_par,,} ${!env_var} >> $cfg_file
|
||||
if [ -n "${!uniq_var+x}" ]; then
|
||||
local env_val="${!uniq_var}"
|
||||
elif [ -n "${!env_var+x}" ]; then
|
||||
local env_val="${!env_var}"
|
||||
fi
|
||||
if [ -n "${env_val+x}" ]; then
|
||||
dc_log 5 "Setting ${cfg_par,,} ${env_val} in $cfg_file"
|
||||
echo ${cfg_par,,} ${env_val} >> $cfg_file
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -135,7 +146,8 @@ kopano_generate_tls_cert() {
|
|||
# LDAP directives
|
||||
#
|
||||
kopano_apply_envvar_propmap() {
|
||||
local cfg_file=$(kopano_gen_filename_cfg ldap)
|
||||
local service=ldap
|
||||
local cfg_file=$(kopano_gen_filename_cfg $service)
|
||||
local env_var=LDAP_PROPMAP
|
||||
if [ -n "${!env_var+x}" ]; then
|
||||
if [ -z "${!env_var}" ]; then
|
||||
|
@ -144,6 +156,6 @@ kopano_apply_envvar_propmap() {
|
|||
dc_log 5 "No ${!env_var} so copying $DOCKER_LDAP_PMAP_FILE there."
|
||||
cp -f $DOCKER_LDAP_PMAP_FILE ${!env_var}
|
||||
fi
|
||||
kopano_set_envvars_cfg $cfg_file $env_var '!propmap'
|
||||
kopano_set_envvars_cfg $service $env_var '!propmap'
|
||||
fi
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue