#!/bin/sh # PROVIDE: bunkerweb_scheduler # REQUIRE: LOGIN # KEYWORD: shutdown . /etc/rc.subr name="bunkerweb_scheduler" rcvar="bunkerweb_scheduler_enable" load_rc_config "$name" : ${bunkerweb_scheduler_enable:="NO"} : ${bunkerweb_scheduler_logfile:="/var/log/bunkerweb/scheduler.log"} : ${bunkerweb_scheduler_database_uri:="sqlite:////var/lib/bunkerweb/db.sqlite3"} _bunkerweb_pythonpath="/usr/local/share/bunkerweb/common/gen:/usr/local/share/bunkerweb/common/utils:/usr/local/share/bunkerweb/common/db:/usr/local/share/bunkerweb/common/api:/usr/local/share/bunkerweb/deps/python" pidfile="/var/run/bunkerweb/${name}.pid" procname="%%PREFIX%%/bin/%%PYTHON_VERSION%%" command="/usr/sbin/daemon" command_args="-f -u www -p ${pidfile} -o ${bunkerweb_scheduler_logfile} /usr/bin/env PYTHONPATH=${_bunkerweb_pythonpath} %%PREFIX%%/bin/%%PYTHON_VERSION%% /usr/local/share/bunkerweb/scheduler/main.py" bunkerweb_scheduler_precmd() { mkdir -p /var/cache/bunkerweb/misc mkdir -p /usr/local/share/bunkerweb/misc mkdir -p /var/log/bunkerweb /var/run/bunkerweb if [ ! -f /var/cache/bunkerweb/misc/default-server-cert.pem ] || \ [ ! -f /var/cache/bunkerweb/misc/default-server-cert.key ]; then /usr/bin/openssl req -x509 -nodes -newkey rsa:2048 \ -days 3650 \ -subj "/CN=localhost" \ -keyout /var/cache/bunkerweb/misc/default-server-cert.key \ -out /var/cache/bunkerweb/misc/default-server-cert.pem >/dev/null 2>&1 fi if [ ! -f /usr/local/share/bunkerweb/misc/root-ca.pem ] || \ [ ! -f /usr/local/share/bunkerweb/misc/root-ca.key ]; then /usr/bin/openssl req -x509 -nodes -newkey rsa:2048 \ -days 3650 \ -subj "/CN=BunkerWeb Root CA" \ -keyout /usr/local/share/bunkerweb/misc/root-ca.key \ -out /usr/local/share/bunkerweb/misc/root-ca.pem >/dev/null 2>&1 fi chown -R www:www /var/cache/bunkerweb chmod 600 /var/cache/bunkerweb/misc/default-server-cert.key chmod 644 /var/cache/bunkerweb/misc/default-server-cert.pem chown root:www /usr/local/share/bunkerweb/misc/root-ca.key /usr/local/share/bunkerweb/misc/root-ca.pem chmod 640 /usr/local/share/bunkerweb/misc/root-ca.key chmod 644 /usr/local/share/bunkerweb/misc/root-ca.pem chown www:www /var/run/bunkerweb chown -R www:www /var/log/bunkerweb # The scheduler runs as the worker user: it writes the configuration that # the nginx worker replaces when the scheduler pushes it back. for _d in /var/lib/bunkerweb /var/tmp/bunkerweb /usr/local/etc/nginx /usr/local/etc/bunkerweb/configs \ /usr/local/etc/bunkerweb/plugins /usr/local/etc/bunkerweb/pro/plugins; do install -d -m 0750 -o www -g www "${_d}" chown -R www:www "${_d}" done # Upstream migrates the database from its systemd wrapper, which # FreeBSD does not use, so do it here before the scheduler starts. env PYTHONPATH="${_bunkerweb_pythonpath}" DATABASE_URI="${bunkerweb_scheduler_database_uri}" \ %%PREFIX%%/bin/%%PYTHON_VERSION%% /usr/local/share/bunkerweb/common/db/freebsd-migrate.py } start_precmd="bunkerweb_scheduler_precmd" run_rc_command "$1"