diff options
Diffstat (limited to 'frontends/etc')
| -rw-r--r-- | frontends/etc/dserver/dtail-freebsd.json.tpl | 2 | ||||
| -rw-r--r-- | frontends/etc/rc.d/dserver-freebsd.tpl | 9 | ||||
| -rwxr-xr-x | frontends/etc/rc.d/dserver.tpl | 6 |
3 files changed, 15 insertions, 2 deletions
diff --git a/frontends/etc/dserver/dtail-freebsd.json.tpl b/frontends/etc/dserver/dtail-freebsd.json.tpl index cd99560..634fcca 100644 --- a/frontends/etc/dserver/dtail-freebsd.json.tpl +++ b/frontends/etc/dserver/dtail-freebsd.json.tpl @@ -90,7 +90,7 @@ }, "Server": { "SSHBindAddress": "0.0.0.0", - "HostKeyFile": "/var/run/dserver/cache/ssh_host_key", + "HostKeyFile": "/var/db/dserver/ssh_host_key", "HostKeyBits": 2048, "MapreduceLogFormat": "default", "MaxConcurrentCats": 2, diff --git a/frontends/etc/rc.d/dserver-freebsd.tpl b/frontends/etc/rc.d/dserver-freebsd.tpl index 6110c0c..04380cb 100644 --- a/frontends/etc/rc.d/dserver-freebsd.tpl +++ b/frontends/etc/rc.d/dserver-freebsd.tpl @@ -21,9 +21,18 @@ start_precmd="dserver_precmd" dserver_precmd() { + # /var/run is volatile on FreeBSD (cleanvar purges it at boot) — recreate + # the runtime dirs and repopulate the SSH key cache on every service + # start (a daily periodic job keeps it fresh afterwards). The SSH host + # key lives in persistent /var/db/dserver so it survives reboots (a + # regenerated host key would break clients' known_hosts). install -d -o dserver -m 0755 /var/log/dserver install -d -o dserver -m 0755 /var/run/dserver install -d -o dserver -m 0755 /var/run/dserver/cache + install -d -o dserver -m 0700 /var/db/dserver + if [ -x /usr/local/bin/dserver-update-key-cache.sh ]; then + /usr/local/bin/dserver-update-key-cache.sh + fi } load_rc_config $name diff --git a/frontends/etc/rc.d/dserver.tpl b/frontends/etc/rc.d/dserver.tpl index 305b0ce..76e79a5 100755 --- a/frontends/etc/rc.d/dserver.tpl +++ b/frontends/etc/rc.d/dserver.tpl @@ -7,6 +7,10 @@ daemon_user="_dserver" . /etc/rc.d/rc.subr rc_reload=NO +# dserver does not daemonize itself — let rc.subr start it in the background +# (rc_bg) instead of backgrounding the whole rc_cmd invocation, which would +# hide rc_pre failures and the start result from rcctl. +rc_bg=YES rc_pre() { # /var/run is wiped by /etc/rc at boot — recreate the runtime dirs and @@ -26,4 +30,4 @@ rc_pre() { fi } -rc_cmd $1 & +rc_cmd "$1" |
