summaryrefslogtreecommitdiff
path: root/mail/stalwart/files/stalwart.in
diff options
context:
space:
mode:
Diffstat (limited to 'mail/stalwart/files/stalwart.in')
-rw-r--r--mail/stalwart/files/stalwart.in70
1 files changed, 70 insertions, 0 deletions
diff --git a/mail/stalwart/files/stalwart.in b/mail/stalwart/files/stalwart.in
new file mode 100644
index 000000000000..7ecef0faf7f9
--- /dev/null
+++ b/mail/stalwart/files/stalwart.in
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# PROVIDE: stalwart
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+
+. /etc/rc.subr
+
+name="stalwart"
+rcvar="stalwart_enable"
+
+load_rc_config stalwart
+
+: ${stalwart_enable:="NO"}
+: ${stalwart_user:="%%USERS%%"}
+: ${stalwart_group:="%%GROUPS%%"}
+: ${stalwart_config:="%%ETCDIR%%/config.toml"}
+: ${stalwart_log:="/var/log/stalwart.log"}
+: ${stalwart_path:="/var/db/stalwart"}
+
+pidfile="/var/run/stalwart/server.pid"
+procname="%%LOCALBASE%%/bin/stalwart"
+start_cmd="stalwart_start"
+start_precmd="stalwart_prestart"
+
+stalwart_env="STALWART_PATH=${stalwart_path} RUN_AS_USER=${stalwart_user} RUN_AS_GROUP=${stalwart_group}"
+
+stalwart_prestart() {
+ if [ ! -f "${stalwart_log}" ]; then
+ install -o ${stalwart_user} -g ${stalwart_group} -m 0640 /dev/null ${stalwart_log}
+ fi
+
+ if [ ! -d "/var/run/stalwart" ] ; then
+ install -d -o ${stalwart_user} -g ${stalwart_group} "/var/run/stalwart"
+ fi
+
+ # if empty, RocksDB needs to be initialized
+ if [ ! -d "${stalwart_path}" ] || [ -z "$(ls -A "${stalwart_path}" 2>/dev/null)" ]; then
+ stalwart_init
+ fi
+
+}
+
+stalwart_start()
+{
+ echo -n "Starting Stalwart: "
+
+ /usr/sbin/daemon -p ${pidfile} \
+ -T ${name} \
+ -o ${stalwart_log} \
+ ${procname} --config ${stalwart_config} \
+ ${stalwart_flags}
+
+ echo "done."
+}
+
+stalwart_init()
+{
+ mkdir -p ${stalwart_path}
+ /usr/bin/install -d -o ${stalwart_user} -g ${stalwart_group} -m 0755 ${stalwart_path}
+ # will tell user of a password it generated in the config we are throwing away
+ /usr/bin/su -m ${stalwart_user} -c "${procname} -I ${stalwart_path}" 2> /dev/null
+
+ # clean up autogenerated etc and logs directories we didn't want
+ rm -f ${stalwart_path}/etc/config.toml
+ rmdir ${stalwart_path}/etc
+ rmdir ${stalwart_path}/logs
+}
+
+run_rc_command "$1"