]> git.proxmox.com Git - pmg-api.git/commitdiff
Makefile: cleanup, install pmg-cron-hourly as extra script
authorDietmar Maurer <dietmar@proxmox.com>
Sat, 25 Mar 2017 07:33:15 +0000 (08:33 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Sat, 25 Mar 2017 07:43:57 +0000 (08:43 +0100)
Makefile
bin/pmg-cron-hourly [new file with mode: 0644]

index 030af7c4fec44b1b6835db3b35bd414f7c3a5119..02143cf864e1499311453f48f81428d4da17ceac 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -19,11 +19,16 @@ REPOID=`./repoid.pl .git`
 
 SERVICES = pmgdaemon pmgproxy
 CLITOOLS = pmgdb pmgconfig pmgperf
-CLISCRIPTS= pmg-smtp-filter pmgsh pmgpolicy
+CLISCRIPTS = pmg-smtp-filter pmgsh pmgpolicy
+CRONSCRIPTS = pmg-cron-hourly
 
 CLI_CLASSES = $(addprefix, 'PMG/CLI/', $(addsuffix '.pm', ${CLITOOLS}))
-CLI_BINARIES = $(addprefix, 'bin/', ${CLITOOLS} ${CLISCRIPTS})
+SERVICE_CLASSES = $(addprefix, 'PMG/Service/', $(addsuffix '.pm', ${SERVIVES}))
+
+CLI_BINARIES = $(addprefix, 'bin/', ${CLITOOLS} ${CLISCRIPTS} ${CRONSCRIPTS})
 CLI_MANS = $(addsuffix .1, ${CLITOOLS}) pmgsh.1
+
+
 SERVICE_MANS = $(addsuffix .8, ${SERVICES}) pmg-smtp-filter.8 pmgpolicy.8
 CONF_MANS= pmg.conf.5 cluster.conf.5
 
@@ -98,6 +103,7 @@ LIBSOURCES =                         \
        PMG/RuleDB/Block.pm             \
        PMG/RuleDB.pm                   \
        ${CLI_CLASSES}                  \
+       ${SERVICE_CLASSES}              \
        PMG/API2/Network.pm             \
        PMG/API2/Services.pm            \
        PMG/API2/Tasks.pm               \
@@ -120,10 +126,12 @@ LIBSOURCES =                              \
        PMG/API2/Action.pm              \
        PMG/API2.pm
 
-all: ${LIBSOURCES} ${CLI_BINARIES} ${TEMPLATES_FILES} ${CONF_MANS} ${CLI_MANS} ${SERVICE_MANS}
+SOURCES= ${LIBSOURCES} ${CLI_BINARIES} ${TEMPLATES_FILES} ${CONF_MANS} ${CLI_MANS} ${SERVICE_MANS}
+
+all: ${SOURCES}
 
 .PHONY: deb
-deb ${DEB}: ${LIBSOURCES} ${CLI_BINARIES} ${TEMPLATES_FILES} ${CONF_MANS} ${CLI_MANS} ${SERVICE_MANS}
+deb ${DEB}: ${SOURCES}
        rm -rf build
        rsync -a * build
        cd build; dpkg-buildpackage -b -us -uc
@@ -142,7 +150,7 @@ PMG/pmgcfg.pm: PMG/pmgcfg.pm.in
        perl -I. -T -e "use PMG::Service::$*; PMG::Service::$*->generate_bash_completions();" >$@.tmp
        mv $@.tmp $@
 
-install: ${BTDATA} $(addsuffix .pm, $(addprefix PMG/Service/, ${SERVICES})) $(addsuffix .service-bash-completion, ${SERVICES}) ${LIBSOURCES} ${CLI_BINARIES} $(addsuffix .bash-completion, ${CLITOOLS}) ${TEMPLATES_FILES} ${CONF_MANS} ${CLI_MANS} ${SERVICE_MANS}
+install: ${SOURCES} $(addsuffix .service-bash-completion, ${SERVICES}) $(addsuffix .bash-completion, ${CLITOOLS})
        for i in ${SERVICES}; do perl -I. -T -e "use PMG::Service::$$i; PMG::Service::$$i->verify_api();"; done
        for i in ${CLITOOLS}; do perl -I. -T -e "use PMG::CLI::$$i; PMG::CLI::$$i->verify_api();"; done
        perl -I. bin/pmgsh verifyapi
@@ -163,7 +171,7 @@ install: ${BTDATA} $(addsuffix .pm, $(addprefix PMG/Service/, ${SERVICES})) $(ad
        for i in ${CLI_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man1/$$i; done
        for i in ${CONF_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man5/$$i; done
        for i in ${SERVICE_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man8/$$i; done
-
+       for i in ${CRONSCRIPTS}; do install -D -m 0755 bin/$$i ${DESTDIR}/usr/lib/pmg/bin/$$i; done
 
 .PHONY: upload
 upload: ${DEB}
diff --git a/bin/pmg-cron-hourly b/bin/pmg-cron-hourly
new file mode 100644 (file)
index 0000000..a90390d
--- /dev/null
@@ -0,0 +1,56 @@
+#!/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 PVE::SafeSyslog;
+use PVE::INotify;
+use PVE::RESTEnvironment;
+
+use PMG::Utils;
+use PMG::Config;
+use PMG::ClusterConfig;
+use PMG::LDAPSet;
+
+$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-cron-hourly', 'mail');
+
+my $cfg = PMG::Config->new();
+
+my $demo = $cfg->get('admin', 'demo');
+
+my $cluster = PMG::ClusterConfig->new();
+
+if ($demo) {
+    # fixme: generate fake statistics
+
+    return;
+}
+  
+PMG::Utils::service_cmd('pmgpolicy', 'restart');
+
+my $ldap_cfg = PVE::INotify::read_file("pmg-ldap.conf");
+PMG::LDAPSet::ldap_resync($ldap_cfg);
+
+# sync bayes journal to database
+system('sa-learn --sync >/dev/null 2>&1');
+
+# make sure clamav-daemon is running
+PMG::Utils::service_cmd('clamav-daemon', 'start');
+
+exit(0);
+