summaryrefslogtreecommitdiffstats
path: root/modules-available/syslog/hooks/cron.inc.php
blob: 625166481f67a2ee4672e3a01d8a2ca93172cdd2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?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");
	}
}