summaryrefslogtreecommitdiff
path: root/frontends
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-16 15:22:00 +0300
committerPaul Buetow <paul@buetow.org>2026-05-16 15:22:00 +0300
commit91d5fec541ecc9147d89a2c25f3ba76ce1895bb7 (patch)
tree848c677cb4b3748dc2d104f30f4d77ab068fc894 /frontends
parent98217b5ab29265d2662bebf0a1d946eaead80dbd (diff)
frontends + packages: add dserver/dtail support for FreeBSD and Rocky
Adds FreeBSD .tpl variants of the existing dserver templates and a matching pkg-dtail-freebsd.sh packaging script, plus a pkg-dtail-rpm.sh script and packages/files/dtail-rocky/ (systemd units, key-cache script, dtail.json) for the Rocky Linux dtail build.
Diffstat (limited to 'frontends')
-rw-r--r--frontends/etc/dserver/dtail-freebsd.json.tpl127
-rw-r--r--frontends/etc/rc.d/dserver-freebsd.tpl30
-rw-r--r--frontends/scripts/dserver-update-key-cache-freebsd.sh.tpl33
3 files changed, 190 insertions, 0 deletions
diff --git a/frontends/etc/dserver/dtail-freebsd.json.tpl b/frontends/etc/dserver/dtail-freebsd.json.tpl
new file mode 100644
index 0000000..cd99560
--- /dev/null
+++ b/frontends/etc/dserver/dtail-freebsd.json.tpl
@@ -0,0 +1,127 @@
+{
+ "Client": {
+ "TermColorsEnable": true,
+ "TermColors": {
+ "Remote": {
+ "DelimiterAttr": "Dim",
+ "DelimiterBg": "Blue",
+ "DelimiterFg": "Cyan",
+ "RemoteAttr": "Dim",
+ "RemoteBg": "Blue",
+ "RemoteFg": "White",
+ "CountAttr": "Dim",
+ "CountBg": "Blue",
+ "CountFg": "White",
+ "HostnameAttr": "Bold",
+ "HostnameBg": "Blue",
+ "HostnameFg": "White",
+ "IDAttr": "Dim",
+ "IDBg": "Blue",
+ "IDFg": "White",
+ "StatsOkAttr": "None",
+ "StatsOkBg": "Green",
+ "StatsOkFg": "Black",
+ "StatsWarnAttr": "None",
+ "StatsWarnBg": "Red",
+ "StatsWarnFg": "White",
+ "TextAttr": "None",
+ "TextBg": "Black",
+ "TextFg": "White"
+ },
+ "Client": {
+ "DelimiterAttr": "Dim",
+ "DelimiterBg": "Yellow",
+ "DelimiterFg": "Black",
+ "ClientAttr": "Dim",
+ "ClientBg": "Yellow",
+ "ClientFg": "Black",
+ "HostnameAttr": "Dim",
+ "HostnameBg": "Yellow",
+ "HostnameFg": "Black",
+ "TextAttr": "None",
+ "TextBg": "Black",
+ "TextFg": "White"
+ },
+ "Server": {
+ "DelimiterAttr": "AttrDim",
+ "DelimiterBg": "BgCyan",
+ "DelimiterFg": "FgBlack",
+ "ServerAttr": "AttrDim",
+ "ServerBg": "BgCyan",
+ "ServerFg": "FgBlack",
+ "HostnameAttr": "AttrBold",
+ "HostnameBg": "BgCyan",
+ "HostnameFg": "FgBlack",
+ "TextAttr": "AttrNone",
+ "TextBg": "BgBlack",
+ "TextFg": "FgWhite"
+ },
+ "Common": {
+ "SeverityErrorAttr": "AttrBold",
+ "SeverityErrorBg": "BgRed",
+ "SeverityErrorFg": "FgWhite",
+ "SeverityFatalAttr": "AttrBold",
+ "SeverityFatalBg": "BgMagenta",
+ "SeverityFatalFg": "FgWhite",
+ "SeverityWarnAttr": "AttrBold",
+ "SeverityWarnBg": "BgBlack",
+ "SeverityWarnFg": "FgWhite"
+ },
+ "MaprTable": {
+ "DataAttr": "AttrNone",
+ "DataBg": "BgBlue",
+ "DataFg": "FgWhite",
+ "DelimiterAttr": "AttrDim",
+ "DelimiterBg": "BgBlue",
+ "DelimiterFg": "FgWhite",
+ "HeaderAttr": "AttrBold",
+ "HeaderBg": "BgBlue",
+ "HeaderFg": "FgWhite",
+ "HeaderDelimiterAttr": "AttrDim",
+ "HeaderDelimiterBg": "BgBlue",
+ "HeaderDelimiterFg": "FgWhite",
+ "HeaderSortKeyAttr": "AttrUnderline",
+ "HeaderGroupKeyAttr": "AttrReverse",
+ "RawQueryAttr": "AttrDim",
+ "RawQueryBg": "BgBlack",
+ "RawQueryFg": "FgCyan"
+ }
+ }
+ },
+ "Server": {
+ "SSHBindAddress": "0.0.0.0",
+ "HostKeyFile": "/var/run/dserver/cache/ssh_host_key",
+ "HostKeyBits": 2048,
+ "MapreduceLogFormat": "default",
+ "MaxConcurrentCats": 2,
+ "MaxConcurrentTails": 50,
+ "MaxConnections": 50,
+ "MaxLineLength": 1048576,
+ "Permissions": {
+ "Default": [
+ "readfiles:^/.*$"
+ ],
+ "Users": {
+ "paul": [
+ "readfiles:^/.*$"
+ ],
+ "pbuetow": [
+ "readfiles:^/.*$"
+ ],
+ "jamesblake": [
+ "readfiles:^/tmp/foo.log$",
+ "readfiles:^/.*$",
+ "readfiles:!^/tmp/bar.log$"
+ ]
+ }
+ }
+ },
+ "Common": {
+ "LogDir": "/var/log/dserver",
+ "Logger": "Fout",
+ "LogRotation": "Daily",
+ "CacheDir": "/var/run/dserver/cache",
+ "SSHPort": 2222,
+ "LogLevel": "Info"
+ }
+}
diff --git a/frontends/etc/rc.d/dserver-freebsd.tpl b/frontends/etc/rc.d/dserver-freebsd.tpl
new file mode 100644
index 0000000..6110c0c
--- /dev/null
+++ b/frontends/etc/rc.d/dserver-freebsd.tpl
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# PROVIDE: dserver
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+
+. /etc/rc.subr
+
+name="dserver"
+rcvar="dserver_enable"
+desc="DTail distributed log server"
+
+# Use daemon(8) explicitly: rc.subr's dserver_user wraps with su -m but does
+# not fork, so the service command blocks. daemon(8) -u runs as the target
+# user and properly detaches from the terminal.
+procname="/usr/local/bin/dserver"
+command="/usr/sbin/daemon"
+command_args="-u dserver -o /var/log/dserver/dserver.log -- /usr/local/bin/dserver -cfg /usr/local/etc/dserver/dtail.json"
+
+start_precmd="dserver_precmd"
+
+dserver_precmd()
+{
+ 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
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/frontends/scripts/dserver-update-key-cache-freebsd.sh.tpl b/frontends/scripts/dserver-update-key-cache-freebsd.sh.tpl
new file mode 100644
index 0000000..22173d7
--- /dev/null
+++ b/frontends/scripts/dserver-update-key-cache-freebsd.sh.tpl
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Refresh the dserver SSH key cache from user authorized_keys files.
+# Called by /usr/local/etc/periodic/daily/200.dserver-update-key-cache.
+
+CACHEDIR=/var/run/dserver/cache
+DSERVER_USER=dserver
+DSERVER_GROUP=dserver
+
+echo 'Updating SSH key cache'
+
+ls /home/ | while read remoteuser; do
+ keysfile="/home/$remoteuser/.ssh/authorized_keys"
+
+ if [ -f "$keysfile" ]; then
+ cachefile="$CACHEDIR/$remoteuser.authorized_keys"
+ echo "Caching $keysfile -> $cachefile"
+
+ cp "$keysfile" "$cachefile"
+ chown "$DSERVER_USER:$DSERVER_GROUP" "$cachefile"
+ chmod 600 "$cachefile"
+ fi
+done
+
+# Remove stale cache entries for users whose authorized_keys no longer exist
+find "$CACHEDIR" -name '*.authorized_keys' -type f | while read cachefile; do
+ remoteuser=$(basename "$cachefile" .authorized_keys)
+ if [ ! -f "/home/$remoteuser/.ssh/authorized_keys" ]; then
+ echo "Deleting obsolete cache file $cachefile"
+ rm "$cachefile"
+ fi
+done
+
+echo 'All set...'