#!/usr/bin/perl -T $ENV{'PATH'} = '/sbin:/bin:/usr/sbin:/usr/bin'; delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; use strict; use warnings; use Time::Local; use PVE::SafeSyslog; use PVE::INotify; use PVE::RESTEnvironment; use PMG::Utils; use PMG::Config; use PMG::ClusterConfig; use PMG::DBTools; use PMG::API2::Subscription; use PMG::API2::APT; $SIG{'__WARN__'} = sub { my $err = $@; my $t = $_[0]; chomp $t; print STDERR "$t\n"; syslog('warning', "%s", $t); $@ = $err; }; PVE::RESTEnvironment->setup_default_cli_env(); initlog('pmg-daily', 'mail'); my $nodename = PVE::INotify::nodename(); eval { PMG::API2::Subscription->update({ node => $nodename }); }; if (my $err = $@) { syslog ('err', "update subscription info failed: $err"); } my $cfg = PMG::Config->new(); if (my $statlifetime = $cfg->get ('admin', 'statlifetime')) { my $count = 0; eval { my $dbh = PMG::DBTools::open_ruledb(); $count = PMG::DBTools::purge_statistic_database($dbh, $statlifetime); }; if (my $err = $@) { syslog('err', $err); } else { syslog('info', "cleanup removed $count entries from statistic database") if $count; } } # check for available updates # We assume that users with subscriptions want informations # about new packages. my $info = PVE::INotify::read_file('subscription'); my $notify = ($info && $info->{status} eq 'Active') ? 1 : 0; eval { PMG::API2::APT->update_database({ node => $nodename, notify => $notify, quiet => 1 }); }; if (my $err = $@) { syslog ('err', "update apt database failed: $err"); } # rotate razor log file rename('/root/.razor/razor-agent.log', '/root/.razor/razor-agent.log.0'); # setup proxy env (assume sa-update use http) if (my $http_proxy = $cfg->get('admin', 'http_proxy')) { $ENV{http_proxy} = $http_proxy; } # update spamassassin rules if (system('sa-update') == 0) { # if the exit code is 0, new updates were downloaded # then restart the pmg-smtp-filter to load the new rules PMG::Utils::service_cmd('pmg-smtp-filter', 'restart'); } # run bayes database maintainance system('sa-learn --force-expire >/dev/null 2>&1'); exit (0);