1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
package Ocsinventory::Agent::AccountConfig;
use strict;
use warnings;
# AccountConfig read and write the setting for the client given by the server
# This file will be overwrite and is not designed to be changed by the user
# DESPITE ITS NAME, ACCOUNTCONFIG IS NOT A CONFIG FILE!
sub new {
my (undef,$params) = @_;
my $self = {};
bless $self;
$self->{config} = $params->{config};
my $logger = $self->{logger} = $params->{logger};
# Configuration reading
$self->{xml} = {};
if ($self->{config}->{accountconfig}) {
if (! -f $self->{config}->{accountconfig}) {
$logger->debug ('accountconfig file: `'. $self->{config}->{accountconfig}.
" doesn't exist. I create an empty one");
$self->write();
} else {
eval {
$self->{xml} = XML::Simple::XMLin(
$self->{config}->{accountconfig},
SuppressEmpty => undef
);
};
}
}
$self;
}
sub get {
my ($self, $name) = @_;
my $logger = $self->{logger};
return $self->{xml}->{$name} if $name;
return $self->{xml};
}
sub set {
my ($self, $name, $value) = @_;
my $logger = $self->{logger};
$self->{xml}->{$name} = $value;
$self->write(); # save the change
}
sub write {
my ($self, $args) = @_;
my $logger = $self->{logger};
return unless $self->{config}->{accountconfig};
my $xml = XML::Simple::XMLout( $self->{xml} , RootName => 'CONF',
NoAttr => 1 );
my $fault;
if (!open CONF, ">".$self->{config}->{accountconfig}) {
$fault = 1;
} else {
print CONF $xml;
$fault = 1 if (!close CONF);
}
if (!$fault) {
$logger->debug ("ocsinv.conf updated successfully");
} else {
$logger->error ("Can't save setting change in `".$self->{config}->{accountconfig}."'");
}
}
1;
|