- [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
|
# 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 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/).
|
- [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.
|
- [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) 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
|
# 1.2.4
|
||||||
|
|
||||||
|
|
10
Dockerfile
10
Dockerfile
|
@ -13,6 +13,8 @@ ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
DOCKER_BIN_DIR=/usr/local/bin \
|
DOCKER_BIN_DIR=/usr/local/bin \
|
||||||
DOCKER_ENTRY_DIR=/etc/docker/entry.d \
|
DOCKER_ENTRY_DIR=/etc/docker/entry.d \
|
||||||
DOCKER_EXIT_DIR=/etc/docker/exit.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_DIR1=/etc/kopano \
|
||||||
DOCKER_CONF_DIR2=/usr/share/z-push \
|
DOCKER_CONF_DIR2=/usr/share/z-push \
|
||||||
DOCKER_APPL_LIB=/var/lib/kopano \
|
DOCKER_APPL_LIB=/var/lib/kopano \
|
||||||
|
@ -31,6 +33,7 @@ ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
COPY src/*/bin $DOCKER_BIN_DIR/
|
COPY src/*/bin $DOCKER_BIN_DIR/
|
||||||
COPY src/*/entry.d $DOCKER_ENTRY_DIR/
|
COPY src/*/entry.d $DOCKER_ENTRY_DIR/
|
||||||
COPY src/*/exit.d $DOCKER_EXIT_DIR/
|
COPY src/*/exit.d $DOCKER_EXIT_DIR/
|
||||||
|
COPY src/*/config $DOCKER_CONF_DIR1/
|
||||||
|
|
||||||
#
|
#
|
||||||
# Install helpers. Set bash as default shell. Setup syslogs service.
|
# 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 \
|
gnupg \
|
||||||
jq \
|
jq \
|
||||||
inotify-tools \
|
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
|
# 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
|
## kDAV
|
||||||
|
|
||||||
Consider integrating support for kDAV which provides CalDAV and CardDAV.
|
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
|
## webapp-passwd
|
||||||
|
|
||||||
Integrate [webapp-passwd](https://github.com/silentsakky/zarafa-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)):
|
$(addsuffix -logs,$(srv_list)):
|
||||||
docker-compose logs $(patsubst %-logs,%,$@)
|
docker-compose logs $(patsubst %-logs,%,$@)
|
||||||
|
|
||||||
|
$(addsuffix -pull,$(srv_list)):
|
||||||
|
docker-compose pull $(patsubst %-pull,%,$@)
|
||||||
|
|
||||||
$(addsuffix -sh,$(srv_list)):
|
$(addsuffix -sh,$(srv_list)):
|
||||||
docker-compose exec $(patsubst %-sh,%,$@) sh -c 'exec $$(getent passwd root | sed "s/.*://g")'
|
docker-compose exec $(patsubst %-sh,%,$@) sh -c 'exec $$(getent passwd root | sed "s/.*://g")'
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,8 @@ HOSTNAME=${HOSTNAME-$(hostname)}
|
||||||
DOMAIN=${HOSTNAME#*.}
|
DOMAIN=${HOSTNAME#*.}
|
||||||
TLS_KEYBITS=${TLS_KEYBITS-2048}
|
TLS_KEYBITS=${TLS_KEYBITS-2048}
|
||||||
TLS_CERTDAYS=${TLS_CERTDAYS-30}
|
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
|
# general file manipulation commands, used both during build and run time
|
||||||
|
@ -232,6 +234,18 @@ dc_prune_pidfiles() {
|
||||||
done
|
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]
|
# 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_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}
|
||||||
DOCKER_LDAP_PMAP_FILE=${DOCKER_LDAP_PMAP_FILE-/usr/share/kopano/ldap.propmap.cfg}
|
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
|
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
|
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.
|
# With kopano-webapp and z-push use installed config file to find valid keys.
|
||||||
#
|
#
|
||||||
kopano_apply_envvars_core() {
|
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
|
kopano_apply_envvars_cfg $service
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
@ -48,16 +49,20 @@ kopano_apply_envvars_zpush() {
|
||||||
kopano_apply_envvars_php $zpush_cfg_file
|
kopano_apply_envvars_php $zpush_cfg_file
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# kopano_apply_envvars_cfg <service>
|
||||||
|
#
|
||||||
kopano_apply_envvars_cfg() {
|
kopano_apply_envvars_cfg() {
|
||||||
local cfg_file=$(kopano_gen_filename_cfg $1)
|
local service=$1
|
||||||
local man_file=$(kopano_gen_filename_man $1)
|
local cfg_file=$(kopano_gen_filename_cfg $service)
|
||||||
|
local man_file=$(kopano_gen_filename_man $service)
|
||||||
if [ -f $man_file ]; then
|
if [ -f $man_file ]; then
|
||||||
local env_vars="$(kopano_get_envvars_man $man_file)"
|
local env_vars="$(kopano_get_envvars_man $man_file)"
|
||||||
if [ -e $cfg_file ]; then
|
if [ -e $cfg_file ]; then
|
||||||
mv -f $cfg_file $cfg_file.bak
|
mv -f $cfg_file $cfg_file.bak
|
||||||
fi
|
fi
|
||||||
for env_var in $env_vars; do
|
for env_var in $env_vars; do
|
||||||
kopano_set_envvars_cfg $cfg_file $env_var
|
kopano_set_envvars_cfg $service $env_var
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
dc_log 4 "Could not find $man_file"
|
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)"
|
local env_vars="$(kopano_get_envvars_php $cfg_file)"
|
||||||
for env_var in $env_vars; do
|
for env_var in $env_vars; do
|
||||||
if [ -n "${!env_var}" ]; then
|
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"
|
dc_log 5 "Setting ${env_var} = ${!env_var} in $cfg_file"
|
||||||
sed -ri "s/(\s*define[('\"]+${env_var}['\",]+).+/\1 ${!env_var});/Ig" $cfg_file
|
sed -ri "s/(\s*define[('\"]+${env_var}['\",]+).+/\1 ${!env_var});/Ig" $cfg_file
|
||||||
local changed
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
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() {
|
kopano_set_envvars_cfg() {
|
||||||
local cfg_file=$1
|
local service=$1
|
||||||
|
local cfg_file=$(kopano_gen_filename_cfg $service)
|
||||||
local env_var=$2
|
local env_var=$2
|
||||||
|
local uniq_var=${service^^}_${env_var}
|
||||||
local cfg_par="${3-$env_var =}"
|
local cfg_par="${3-$env_var =}"
|
||||||
if [ -n "${!env_var+x}" ]; then
|
if [ -n "${!uniq_var+x}" ]; then
|
||||||
dc_log 5 "Setting ${cfg_par,,} ${!env_var} in $cfg_file"
|
local env_val="${!uniq_var}"
|
||||||
echo ${cfg_par,,} ${!env_var} >> $cfg_file
|
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
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +146,8 @@ kopano_generate_tls_cert() {
|
||||||
# LDAP directives
|
# LDAP directives
|
||||||
#
|
#
|
||||||
kopano_apply_envvar_propmap() {
|
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
|
local env_var=LDAP_PROPMAP
|
||||||
if [ -n "${!env_var+x}" ]; then
|
if [ -n "${!env_var+x}" ]; then
|
||||||
if [ -z "${!env_var}" ]; 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."
|
dc_log 5 "No ${!env_var} so copying $DOCKER_LDAP_PMAP_FILE there."
|
||||||
cp -f $DOCKER_LDAP_PMAP_FILE ${!env_var}
|
cp -f $DOCKER_LDAP_PMAP_FILE ${!env_var}
|
||||||
fi
|
fi
|
||||||
kopano_set_envvars_cfg $cfg_file $env_var '!propmap'
|
kopano_set_envvars_cfg $service $env_var '!propmap'
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue