summaryrefslogtreecommitdiffstats
path: root/modules-available/syslog/hooks/cron.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/syslog/hooks/cron.inc.php')
-rw-r--r--modules-available/syslog/hooks/cron.inc.php21
1 files changed, 21 insertions, 0 deletions
diff --git a/modules-available/syslog/hooks/cron.inc.php b/modules-available/syslog/hooks/cron.inc.php
index bae882a9..62516648 100644
--- a/modules-available/syslog/hooks/cron.inc.php
+++ b/modules-available/syslog/hooks/cron.inc.php
@@ -1,7 +1,28 @@
<?php
if (mt_rand(1, 10) === 1) {
+ // Prune old entries
Database::exec("DELETE FROM clientlog WHERE (UNIX_TIMESTAMP() - 86400 * 190) > dateline");
+ // Anonymize if requested
+ $days = Property::get('syslog.anon-days', 0);
+ if ($days > 0) {
+ $cutoff = time() - ($days * 86400);
+ Database::exec("UPDATE clientlog SET description = '[root] User logged in'
+ WHERE $cutoff > dateline AND logtypeid = 'session-open' AND description NOT LIKE '[root] User %'");
+ Database::exec("UPDATE clientlog SET description = '[root] User logged out'
+ WHERE $cutoff > dateline AND logtypeid = 'session-close' AND description NOT LIKE '[root] User %'");
+ Database::exec("UPDATE clientlog SET description = '-', extra = ''
+ WHERE $cutoff > dateline AND description NOT LIKE '-'
+ AND logtypeid NOT IN ('session-open', 'session-close', 'idleaction-busy', 'partition-temp',
+ 'partition-swap', 'smartctl-realloc', 'vmware-netifup', 'vmware-insmod', 'firewall-script-apply',
+ 'mount-vm-tmp-fail')");
+ if (Module::get('statistics') !== false) {
+ Database::exec("UPDATE statistic SET username = 'anonymous'
+ WHERE $cutoff > dateline AND username NOT LIKE 'anonymous' AND username NOT LIKE ''");
+ Database::exec("UPDATE machine SET currentuser = NULL
+ WHERE $cutoff > lastseen AND currentuser IS NOT NULL");
+ }
+ }
if (mt_rand(1, 100) === 1) {
Database::exec("OPTIMIZE TABLE clientlog");
}