From fa2f97e4b0dd66bd86bc356760e1c7ebc9f65be0 Mon Sep 17 00:00:00 2001 From: ceri Date: Thu, 25 Feb 2021 16:51:27 +0000 Subject: [PATCH 1/2] 1) /etc/periodic has special cases for zcat and bzcat, but not for zstd and xz which newsyslog also supports. 2) newsyslog.conf manpage does not have a xref for zstd(1). 3) usr.sbin/periodic/etc/monthly/200.accounting does not use temporary files appropriately. 4) periodic.conf(5) refers to "daily accounting" and "monthly accounting" withouth being clear that "daily" means process accounting and "monthly" is login accounting. --- share/man/man5/periodic.conf.5 | 2 +- usr.sbin/newsyslog/newsyslog.conf.5 | 1 + .../etc/daily/460.status-mail-rejects | 6 ++++ usr.sbin/periodic/etc/monthly/200.accounting | 30 ++++++++++++++----- usr.sbin/periodic/etc/security/800.loginfail | 2 ++ usr.sbin/periodic/etc/security/900.tcpwrap | 2 ++ 6 files changed, 34 insertions(+), 9 deletions(-) diff --git a/share/man/man5/periodic.conf.5 b/share/man/man5/periodic.conf.5 index 46174da2772..ef80578e537 100644 --- a/share/man/man5/periodic.conf.5 +++ b/share/man/man5/periodic.conf.5 @@ -365,7 +365,7 @@ daily. .Pq Vt bool Set to .Dq Li YES -if you want to rotate your daily accounting files. +if you want to rotate your daily process accounting files. No rotations are necessary unless .Va accounting_enable is enabled in diff --git a/usr.sbin/newsyslog/newsyslog.conf.5 b/usr.sbin/newsyslog/newsyslog.conf.5 index d6b1191aa8b..20ca3017c89 100644 --- a/usr.sbin/newsyslog/newsyslog.conf.5 +++ b/usr.sbin/newsyslog/newsyslog.conf.5 @@ -403,6 +403,7 @@ entry: .Xr bzip2 1 , .Xr gzip 1 , .Xr xz 1 , +.Xr zstd 1 , .Xr syslog 3 , .Xr chown 8 , .Xr newsyslog 8 , diff --git a/usr.sbin/periodic/etc/daily/460.status-mail-rejects b/usr.sbin/periodic/etc/daily/460.status-mail-rejects index ce633640b6a..6161a5525cc 100755 --- a/usr.sbin/periodic/etc/daily/460.status-mail-rejects +++ b/usr.sbin/periodic/etc/daily/460.status-mail-rejects @@ -52,6 +52,12 @@ case "$daily_status_mail_rejects_enable" in elif [ -f /var/log/maillog.$n.bz2 ] then bzcat -fc /var/log/maillog.$n.bz2 + elif [ -f /var/log/maillog.$n.xz ] + then + xzcat -f /var/log/maillog.$n.xz + elif [ -f /var/log/maillog.$n.zst ] + then + zstdcat -fc /var/log/maillog.$n.zst fi n=$(($n - 1)) done diff --git a/usr.sbin/periodic/etc/monthly/200.accounting b/usr.sbin/periodic/etc/monthly/200.accounting index 46f153de535..9d50ba18277 100755 --- a/usr.sbin/periodic/etc/monthly/200.accounting +++ b/usr.sbin/periodic/etc/monthly/200.accounting @@ -18,16 +18,30 @@ case "$monthly_accounting_enable" in W=/var/log/utx.log rc=0 remove=NO + filetoread=$W.0 if [ ! -f $W.0 ] then - if [ -f $W.0.gz ] + if [ -f $W.0.gz ] || [ -f $W.0.bz2 ] || [ -f $W.0.xz ] || [ -f $W.0.zst ] then + TMP=`mktemp -t accounting` remove=YES - zcat $W.0.gz > $W.0 || rc=1 - elif [ -f $W.0.bz2 ] - then - remove=YES - bzcat $W.0.bz2 > $W.0 || rc=1 + filetoread=$TMP + if [ -f $W.0.gz ] + then + zcat $W.0.gz > $TMP || rc=1 + elif [ -f $W.0.bz2 ] + then + bzcat $W.0.bz2 > $TMP || rc=1 + elif [ -f $W.0.xz ] + then + xzcat $W.0.xz > $TMP || rc=1 + elif [ -f $W.0.zst ] + then + zstdcat $W.0.zst > $TMP || rc=1 + else + # shouldn't get here, unless something disappeared under us. + rc=2 + fi else echo '$monthly_accounting_enable is set but' \ "$W.0 doesn't exist" @@ -39,10 +53,10 @@ case "$monthly_accounting_enable" in echo "" echo "Doing login accounting:" - rc=$(ac -p -w $W.0 | sort -nr -k 2 | tee /dev/stderr | wc -l) + rc=$(ac -p -w $filetoread | sort -nr -k 2 | tee /dev/stderr | wc -l) [ $rc -gt 0 ] && rc=1 fi - [ $remove = YES ] && rm -f $W.0;; + [ $remove = YES ] && rm -f $TMP;; *) rc=0;; esac diff --git a/usr.sbin/periodic/etc/security/800.loginfail b/usr.sbin/periodic/etc/security/800.loginfail index 4c78f441639..ef169482001 100755 --- a/usr.sbin/periodic/etc/security/800.loginfail +++ b/usr.sbin/periodic/etc/security/800.loginfail @@ -53,6 +53,8 @@ catmsgs() { case $f in *.gz) zcat -f $f;; *.bz2) bzcat -f $f;; + *.xz) xzcat -f $f;; + *.zst) zstdcat -f $f;; esac done [ -f ${LOG}/auth.log ] && cat $LOG/auth.log diff --git a/usr.sbin/periodic/etc/security/900.tcpwrap b/usr.sbin/periodic/etc/security/900.tcpwrap index 10b02e9e2bb..b6c44126bc1 100755 --- a/usr.sbin/periodic/etc/security/900.tcpwrap +++ b/usr.sbin/periodic/etc/security/900.tcpwrap @@ -53,6 +53,8 @@ catmsgs() { case $f in *.gz) zcat -f $f;; *.bz2) bzcat -f $f;; + *.xz) xzcat -f $f;; + *.zst) zstdcat -f $f;; esac done [ -f ${LOG}/messages ] && cat $LOG/messages -- 2.30.1