]>
Commit | Line | Data |
---|---|---|
19407634 | 1 | #!/usr/bin/perl |
aff192e6 DM |
2 | |
3 | use strict; | |
19407634 DM |
4 | use warnings; |
5 | ||
aff192e6 DM |
6 | use IO::File; |
7 | use File::Find; | |
8 | use File::stat; | |
9 | ||
fdc94486 | 10 | use PVE::INotify; |
4027c59b DM |
11 | use PVE::Cluster; |
12 | use PVE::APLInfo; | |
13 | use PVE::SafeSyslog; | |
14 | use PVE::RPCEnvironment; | |
15 | use PVE::API2::Subscription; | |
fdc94486 | 16 | use PVE::API2::APT; |
4027c59b | 17 | |
c8969ecb | 18 | initlog ('pveupdate', 'daemon'); |
aff192e6 | 19 | |
4027c59b DM |
20 | die "please run as root\n" if $> != 0; |
21 | ||
22 | $ENV{'PATH'} = '/sbin:/bin:/usr/sbin:/usr/bin'; | |
23 | ||
24 | PVE::INotify::inotify_init(); | |
25 | ||
26 | my $rpcenv = PVE::RPCEnvironment->init('cli'); | |
27 | ||
28 | $rpcenv->init_request(); | |
29 | $rpcenv->set_language($ENV{LANG}); | |
c9355915 | 30 | $rpcenv->set_user('root@pam'); |
4027c59b DM |
31 | |
32 | my $nodename = PVE::INotify::nodename(); | |
33 | ||
34 | eval { PVE::API2::Subscription->update({ node => $nodename }); }; | |
35 | if (my $err = $@) { | |
a88002cf | 36 | syslog ('err', "update subscription info failed: $err"); |
4027c59b DM |
37 | } |
38 | ||
c9164975 DM |
39 | my $dccfg = PVE::Cluster::cfs_read_file('datacenter.cfg'); |
40 | eval { PVE::APLInfo::update($dccfg->{http_proxy}); }; | |
41 | if (my $err = $@) { | |
a88002cf DM |
42 | syslog ('err', "update appliance info failed - see /var/log/pveam.log for details"); |
43 | } | |
44 | ||
d916c09d DM |
45 | my $info = PVE::INotify::read_file('subscription'); |
46 | # We assume that users with subscriptions want informations | |
47 | # about new packages. | |
48 | my $notify = ($info && $info->{status} eq 'Active') ? 1 : 0; | |
49 | eval { PVE::API2::APT->update_database({ node => $nodename, notify => $notify, quiet => 1 }); }; | |
50 | if (my $err = $@) { | |
51 | syslog ('err', "update apt database failed: $err"); | |
c9164975 | 52 | } |
aff192e6 DM |
53 | |
54 | sub cleanup_tasks { | |
55 | ||
56 | my $taskdir = "/var/log/pve/tasks"; | |
57 | my $filename = "$taskdir/index.1"; | |
58 | ||
59 | my $fh = IO::File->new($filename, O_RDONLY); | |
60 | return if !$fh; | |
61 | ||
62 | my $endtime = 0; | |
63 | while (defined(my $line = <$fh>)) { | |
64 | if ($line =~ m/^(\S+)(\s([0-9A-Za-z]{8})(\s(\S.*))?)?$/) { | |
65 | $endtime = hex($3); | |
66 | last; | |
67 | } | |
68 | } | |
69 | close($fh); | |
70 | ||
71 | return if !$endtime; | |
72 | ||
73 | # print "delete task older that $endtime\n" . localtime($endtime) . "\n"; | |
74 | ||
75 | my $count = 0; | |
76 | ||
77 | my $wanted = sub { | |
78 | my $filename = $_; | |
79 | ||
80 | return if $filename !~ m/^UPID:/; | |
81 | ||
82 | my $st; | |
83 | if (($st = stat($filename)) && ($st->mtime < $endtime)) { | |
84 | unlink($filename); | |
85 | $count++; | |
86 | } | |
87 | }; | |
88 | ||
b0a65294 | 89 | foreach my $subdir (qw(0 1 2 3 4 5 6 7 8 9 A B C D E F)) { |
aff192e6 DM |
90 | my $path = "$taskdir/$subdir"; |
91 | find($wanted, $path); | |
92 | } | |
93 | ||
94 | if ($count) { | |
95 | syslog('info', "cleanup removed $count task logs"); | |
96 | } | |
97 | } | |
98 | ||
99 | cleanup_tasks(); | |
100 | ||
101 | exit (0); |