source: ocsinventory-agent/trunk/fuentes/lib/Ocsinventory/Agent/XML/Response/Prolog.pm @ 468

Last change on this file since 468 was 468, checked in by mabarracus, 4 years ago

Copyt trusty code

File size: 3.0 KB
Line 
1package Ocsinventory::Agent::XML::Response::Prolog;
2
3use strict;
4use Ocsinventory::Agent::XML::Response;
5
6our @ISA = ('Ocsinventory::Agent::XML::Response');
7
8sub new {
9    my ($class, @params) = @_;
10
11    my $this = $class->SUPER::new(@params);
12
13    bless ($this, $class);
14    $this->updatePrologFreq();
15    $this->saveNextTime();
16    $this->displaySupportLog();
17
18    return $this;
19}
20
21sub isInventoryAsked {
22    my $self = shift;
23
24    my $parsedContent = $self->getParsedContent(['OPTION','PARAM']);
25    if ($parsedContent && exists ($parsedContent->{RESPONSE}) && $parsedContent->{RESPONSE} =~ /^SEND$/) {
26        return 1;
27    }
28
29    0
30}
31
32sub getOptionsInfoByName {
33    my ($self, $name) = @_;
34
35    my $parsedContent = $self->getParsedContent(['OPTION','PARAM']);
36
37    my $ret = [];
38    return unless ($parsedContent && $parsedContent->{OPTION});
39    foreach (@{$parsedContent->{OPTION}}) {
40      if ($_->{NAME} && $_->{NAME} =~ /^$name$/i) {
41        $ret = $_->{PARAM}
42      }
43    }
44
45    return $ret;
46}
47
48sub updatePrologFreq {
49    my $self = shift;
50    my $parsedContent = $self->getParsedContent(['OPTION','PARAM']);
51     my $logger = $self->{logger};
52    if ($parsedContent && exists ($parsedContent->{PROLOG_FREQ})) {
53        if( $parsedContent->{PROLOG_FREQ} ne $self->{accountconfig}->get("PROLOG_FREQ")){
54             $logger->info("PROLOG_FREQ has changed since last process(old=".$self->{accountconfig}->get("PROLOG_FREQ").",new=".$parsedContent->{PROLOG_FREQ}.")");
55             $self->{prologFreqChanged} = 1;
56             $self->{accountconfig}->set("PROLOG_FREQ", $parsedContent->{PROLOG_FREQ});
57        }
58        else{
59            $logger->debug("PROLOG_FREQ has not changed since last process");
60        }
61    }
62}
63
64
65sub saveNextTime {
66    my ($self, $args) = @_;
67
68    my $logger = $self->{logger};
69
70    if (!$self->{config}->{next_timefile}) {
71        $logger->debug("no next_timefile to save!");
72        return;
73    }
74
75    my $parsedContent = $self->getParsedContent(['OPTION','PARAM']);
76
77    if (!open NEXT_TIME, ">".$self->{config}->{next_timefile}) {
78        $logger->error ("Cannot create the next_timefile `".$self->{config}->{next_timefile}."': $!");
79        return;
80    }
81    close NEXT_TIME or warn;
82
83    my $serverdelay = $self->{accountconfig}->get('PROLOG_FREQ');
84
85    my $time;
86    if( $self->{prologFreqChanged} ){
87        $logger->debug("Compute next_time file with random value");
88        $time  = time + int rand(($serverdelay?$serverdelay*3600:$self->{config}->{delaytime}));
89    }
90    else{
91        $time = time + ($serverdelay?$serverdelay*3600:$self->{config}->{delaytime});
92    }
93    utime $time,$time,$self->{config}->{next_timefile};
94   
95    if ($self->{config}->{cron}) {
96        $logger->info ("Next inventory after ".localtime($time));
97    }
98}
99
100sub displaySupportLog {
101    my $self = shift;
102    my $logger = $self->{logger};
103
104    my $parsedContent = $self->getParsedContent(['OPTION','PARAM']);
105
106    if ($parsedContent->{SUPPORT_LOG}) {
107      $logger->info("$parsedContent->{SUPPORT_LOG}")
108    } else {
109      $logger->info("No support detected. Registration key: N/A");
110    }
111}
112
1131;
Note: See TracBrowser for help on using the repository browser.