File: //volume1/@appstore/MailClient/scripts/mailclient_smtp_change_hook.sh
#!/bin/sh
PACKAGE_DIR="/var/packages/MailClient"
MAILSERVER_BACKEND_BIN="/var/packages/MailPlus-Server/target/bin/syno_mailserver_backend"
TARGET_CACHED_CONF_FILE="/run/mailplus_cached_conf"
TARGET_CACHED_CONF_FILE_TMP="/run/mailplus_cached_conf.tmp"
NOTIFY_DAEMON_BIN="${PACKAGE_DIR}/target/tool/notify_daemon"
REGISTER_SCRIPT="${PACKAGE_DIR}/target/scripts/regist_server_service.sh"
MANAGE_POP3_DAEMON="${PACKAGE_DIR}/target/tool/manage_pop3_daemon"
SKIP_FETCHMAIL_ARG="skipFetchmail"
KEYS=("account_type" \
"acc_domain_name" \
"win_domain_short_name" \
"message_limit" \
"smtp_enabled" \
"smtp_port" \
"smtp_hostname" \
"smtp_main_domain")
function print_log()
{
/bin/logger -s -p local1.err -t "SYNO.MailClient.Script" $1
}
function print_info()
{
/bin/logger -s -p local1.info -t "SYNO.MailClient.Script" $1
}
SKIP_FETCHMAIL="no"
for i in "$@"
do
if [ "$i" = "${SKIP_FETCHMAIL_ARG}" ]; then
SKIP_FETCHMAIL="yes"
fi
done
###
### stop all pop3 fetchmail proccess
###
if [ "${SKIP_FETCHMAIL}" = "no" ]; then
${MANAGE_POP3_DAEMON} -a stop
fi
###
### cached smtp configs
###
if [ -f $TARGET_CACHED_CONF_FILE_TMP ];then
rm -f $TARGET_CACHED_CONF_FILE_TMP
fi
for key in "${KEYS[@]}"
do
for i in {1..5}
do
val=`$MAILSERVER_BACKEND_BIN --getConfKeyVal ${key}`
cmd_result=$?
if [ $cmd_result -eq 0 ]; then
break
else
print_log "smtp_change_hook exec failed for [${key}][${val}] - retry $i"
sleep 1
fi
done
if [ ! -z "${val}" ]; then
synosetkeyvalue $TARGET_CACHED_CONF_FILE_TMP ${key} ${val}
if [ ${key} == "account_type" ]; then
account_type_change=true
fi
else
print_log "smtp_change_hook get empty value for [${key}][${val}]"
fi
done
mv $TARGET_CACHED_CONF_FILE_TMP $TARGET_CACHED_CONF_FILE
###
### if account type change, reload privilege
###
if [ $account_type_change ]; then
${NOTIFY_DAEMON_BIN} --reload_priv
${REGISTER_SCRIPT} register synomailclientd
fi
###
### start all pop3 fetchmail proccess
###
if [ "${SKIP_FETCHMAIL}" = "no" ]; then
${MANAGE_POP3_DAEMON} -a start
fi