]>
Commit | Line | Data |
---|---|---|
d0d5b944 DM |
1 | #!/usr/bin/perl -T |
2 | ||
3 | $ENV{'PATH'} = '/sbin:/bin:/usr/sbin:/usr/bin'; | |
4 | ||
5 | delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; | |
6 | ||
7 | use strict; | |
8 | use warnings; | |
9 | use Time::Local; | |
10 | ||
11 | use PVE::SafeSyslog; | |
12 | use PVE::INotify; | |
13 | use PVE::RESTEnvironment; | |
14 | ||
15 | use PMG::Utils; | |
16 | use PMG::Config; | |
17 | use PMG::ClusterConfig; | |
18 | use PMG::DBTools; | |
19 | ||
20 | $SIG{'__WARN__'} = sub { | |
21 | my $err = $@; | |
22 | my $t = $_[0]; | |
23 | chomp $t; | |
24 | print STDERR "$t\n"; | |
25 | syslog('warning', "%s", $t); | |
26 | $@ = $err; | |
27 | }; | |
28 | ||
29 | PVE::RESTEnvironment->setup_default_cli_env(); | |
30 | ||
31 | initlog('pmg-daily', 'mail'); | |
32 | ||
33 | my $cfg = PMG::Config->new(); | |
34 | ||
35 | sub get_timespan { | |
36 | ||
37 | my ($sec, $min, $hour, $mday, $mon, $year) = | |
38 | localtime(time()); | |
39 | ||
40 | my $end = timelocal(0, 0, 0, $mday, $mon, $year); | |
41 | my $start = $end - 3600*24; | |
42 | ||
43 | return ($start, $end); | |
44 | } | |
45 | ||
46 | my $statlifetime = $cfg->get('admin', 'statlifetime'); | |
47 | ||
48 | if ($statlifetime && $statlifetime > 0) { | |
49 | my ($start, $end) = get_timespan(); | |
50 | ||
51 | $statlifetime -= 1; | |
52 | ||
53 | my $secs = $statlifetime * 86400; | |
54 | ||
55 | $start -= $secs; | |
56 | ||
57 | # delete statistics older than $start | |
58 | ||
59 | my $dbh; | |
60 | ||
61 | my ($srows, $rrows) = (0, 0); | |
62 | ||
63 | eval { | |
64 | my $dbh = PMG::DBTools::open_ruledb(); | |
65 | ||
66 | $dbh->begin_work; | |
67 | ||
68 | my $sth = $dbh->prepare("DELETE FROM CStatistic WHERE time < $start"); | |
69 | $sth->execute; | |
70 | $srows = $sth->rows; | |
71 | $sth->finish; | |
72 | ||
73 | if ($srows > 0) { | |
74 | $sth = $dbh->prepare( | |
75 | "DELETE FROM CReceivers WHERE NOT EXISTS " . | |
76 | "(SELECT * FROM CStatistic WHERE CID = CStatistic_CID AND RID = CStatistic_RID)"); | |
77 | ||
78 | $sth->execute; | |
79 | $rrows = $sth->rows; | |
80 | $sth->finish; | |
81 | } | |
82 | ||
83 | $dbh->commit; | |
84 | }; | |
85 | if (my $err = $@) { | |
86 | $dbh->rollback if $dbh; | |
b902c0b8 | 87 | syslog('err', $err); |
d0d5b944 DM |
88 | } else { |
89 | syslog('info', "cleanup removed $srows entries from " . | |
90 | "statistic database ($srows, $rrows)") if $srows; | |
91 | } | |
92 | ||
93 | $dbh->disconnect() if $dbh; | |
94 | } | |
95 | ||
96 | ||
97 | # fixme: check for available updates | |
98 | ||
99 | # rotate razor log file | |
100 | rename('/root/.razor/razor-agent.log', '/root/.razor/razor-agent.log.0'); | |
101 | ||
102 | # run bayes database maintainance | |
103 | system('sa-learn --force-expire >/dev/null 2>&1'); | |
104 | ||
105 | exit (0); | |
106 |