source: ocsinventory-agent/trunk/fuentes/lib/Ocsinventory/Agent/Config.pm @ 468

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

Copyt trusty code

File size: 7.1 KB
Line 
1package Ocsinventory::Agent::Config;
2
3use strict;
4use Getopt::Long;
5
6our $VERSION = '2.0.5';
7my $basedir = '';
8my $default = {
9  'daemon'    =>  0,
10  'debug'     =>  0,
11  'devlib'    =>  0,
12  'force'     =>  0,
13  'help'      =>  0,
14  'info'      =>  1,
15  'lazy'      =>  0,
16  'local'     =>  '',
17  #'logger'    =>  'Syslog,File,Stderr',
18  'logger'    =>  'Stderr',
19  'logfile'   =>  '',
20  'password'  =>  '',
21  'proxy'     =>  '',
22  'realm'     =>  '',
23  'remotedir' =>  '/ocsinventory', # deprecated, give a complet URL to
24                                   # --server instead
25  'server'    =>  'http://ocsinventory-ng/ocsinventory',
26  'stdout'    =>  0,
27  'tag'       =>  '',
28  'user'      =>  '',
29  'version'   =>  0,
30  'wait'      =>  '',
31#  'xml'       =>  0,
32  'nosoft'    =>  0, # DEPRECATED!
33  'nosoftware'=>  0,
34  'delaytime' =>  '3600', # max delay time (seconds)
35  'backendCollectTimeout'   => '600',   # timeOut of process : see Backend.pm
36  'scanhomedirs' => 0,
37
38  # Other values that can't be changed with the
39  # CLI parameters
40  'VERSION'   => $VERSION,
41  'deviceid'  => '',
42  'basevardir'=>  $basedir.'/var/lib/ocsinventory-agent',
43  'logdir'    =>  $basedir.'/var/log/ocsinventory-agent',
44#  'pidfile'   =>  $basedir.'/var/run/ocsinventory-agent.pid',
45};
46
47
48sub new {
49        my (undef, $params) = @_;
50
51
52        my $self = {};
53
54        bless $self;
55        $self->{file} = $params->{file};
56
57        $self->{config} = $default;
58        $self->loadFromCfgFile();
59
60        return $self;
61}
62
63sub loadFromCfgFile {
64  my $self = shift;
65
66  my $config;
67
68  $self->{config}{etcdir} = [];
69
70  push (@{$self->{config}{etcdir}}, '/etc/ocsinventory');
71  push (@{$self->{config}{etcdir}}, '/usr/local/etc/ocsinventory');
72  push (@{$self->{config}{etcdir}}, '/etc/ocsinventory-agent');
73  push (@{$self->{config}{etcdir}}, $ENV{HOME}.'/.ocsinventory'); # Should I?
74
75  my $file;
76if (!$file || !-f $file) {
77    foreach (@{$self->{config}{etcdir}}) {
78      $file = $_.'/ocsinventory-agent.cfg';
79      last if -f $file;
80    }
81    return $config unless -f $file;
82  }
83
84  $self->{configfile} = $file;
85
86  if (!open (CONFIG, "<".$file)) {
87    print(STDERR "Config: Failed to open $file\n");
88          return $config;
89  }
90
91  foreach (<CONFIG>) {
92    s/#.+//;
93    if (/(\w+)\s*=\s*(.+)/) {
94      my $key = $1;
95      my $val = $2;
96      # Remove the quotes
97      $val =~ s/\s+$//;
98      $val =~ s/^'(.*)'$/$1/;
99      $val =~ s/^"(.*)"$/$1/;
100      $self->{config}{$key} = $val;
101    }
102  }
103  close CONFIG;
104}
105
106sub loadUserParams {
107        my $self = shift;
108
109
110        my %options = (
111                "backend-collect-timeout=s"  =>   \$self->{config}{backendCollectTimeout},
112                "basevardir=s"    =>   \$self->{config}{basevardir},
113                "d|daemon"        =>   \$self->{config}{daemon},
114                "debug"           =>   \$self->{config}{debug},
115                "devlib"          =>   \$self->{config}{devlib},
116                "f|force"         =>   \$self->{config}{force},
117                "h|help"          =>   \$self->{config}{help},
118                "i|info"          =>   \$self->{config}{info},
119                "lazy"            =>   \$self->{config}{lazy},
120                "l|local=s"       =>   \$self->{config}{local},
121                "logfile=s"       =>   \$self->{config}{logfile},
122                "nosoft"          =>   \$self->{config}{nosoft},
123                "nosoftware"      =>   \$self->{config}{nosoftware},
124                "p|password=s"    =>   \$self->{config}{password},
125                "P|proxy=s"       =>   \$self->{config}{proxy},
126                "r|realm=s"       =>   \$self->{config}{realm},
127                "R|remotedir=s"   =>   \$self->{config}{remotedir},
128                "s|server=s"      =>   \$self->{config}{server},
129                "stdout"          =>   \$self->{config}{stdout},
130                "t|tag=s"         =>   \$self->{config}{tag},
131                "u|user=s"        =>   \$self->{config}{user},
132                "version"         =>   \$self->{config}{version},
133                "w|wait=s"        =>   \$self->{config}{wait},
134#  "x|xml"          =>   \$self->{config}{xml},
135                "delaytime"       =>   \$self->{config}{delaytime},
136                "scan-homedirs"   =>   \$self->{config}{scanhomedirs},
137                "nolocal"        =>   \$self->{config}{nolocal},
138        );
139
140        $self->help() if (!GetOptions(%options) || $self->{config}{help});
141        $self->version() if $self->{config}{version};
142
143}
144
145
146sub help {
147  my ($self, $error) = @_;
148  if ($error) {
149    chomp $error;
150    print "ERROR: $error\n\n";
151  }
152
153  if ($self->{configfile}) {
154      print STDERR "Setting initialised with values retrieved from ".
155      "the config found at ".$self->{configfile}."\n";
156  }
157
158  print STDERR "\n";
159  print STDERR "Usage:\n";
160  print STDERR "\t--backend-collect-timeout set a max delay time of one action (search package id, ...) is set (".$self->{config}{backendCollectTimeout}.")\n";
161  print STDERR "\t--basevardir=/path  indicate the directory where should the agent store its files (".$self->{config}{basevardir}.")\n";
162  print STDERR "\t-d  --daemon        detach the agent in background (".$self->{config}{daemon}.")\n";
163  print STDERR "\t    --debug         debug mode (".$self->{config}{debug}.")\n";
164  print STDERR "\t    --devlib        search for Backend mod in ./lib only (".$self->{config}{devlib}.")\n";
165  print STDERR "\t-f --force          always send data to server (Don't ask before) (".$self->{config}{force}.")\n";
166  print STDERR "\t-i --info           verbose mode (".$self->{config}{info}.")\n";
167  print STDERR "\t--lazy              do not contact the server more than one time during the PROLOG_FREQ (".$self->{config}{lazy}.")\n";
168  print STDERR "\t-l --local=DIR      do not contact server but write ".
169  "inventory in DIR directory in XML (".$self->{config}{local}.")\n";
170  print STDERR "\t   --logfile=FILE   log message in FILE (".$self->{config}{logfile}.")\n";
171  print STDERR "\t-p --password=PWD   password for server auth\n";
172  print STDERR "\t-P --proxy=PROXY    proxy address. e.g: http://user:pass\@proxy:port (".$self->{config}{proxy}.")\n";
173  print STDERR "\t-r --realm=REALM    realm for server auth. e.g: 'Restricted Area' (".$self->{config}{realm}.")\n";
174  print STDERR "\t-s --server=uri     server uri (".$self->{config}{server}.")\n";
175  print STDERR "\t   --stdout         do not write or post the inventory but print it on STDOUT\n";
176  print STDERR "\t-t --tag=TAG        use TAG as tag (".$self->{config}{tag}."). ".
177  "Will be ignored by server if a value already exists.\n";
178  print STDERR "\t-u --user=USER      user for server auth (".$self->{config}{user}.")\n";
179  print STDERR "\t   --version        print the version\n";
180  print STDERR "\t-w --wait=seconds   wait a random period before ".
181  "  contacting server like --daemon does (".$self->{config}{wait}.")\n";
182#  print STDERR "\t-x --xml            write output in a xml file ($self->{config}{xml})\n";
183  print STDERR "\t--nosoft            DEPRECATED, use --nosoftware instead\n";
184  print STDERR "\t--nosoftware        do not return installed software list (".$self->{config}{nosoftware}.")\n";
185  print STDERR "\t--delaytime         set a max delay time (in second) if no PROLOG_FREQ is set (".$self->{config}{delaytime}.")\n";
186  print STDERR "\t--scan-homedirs     permit to scan home user directories (".$self->{config}{scanhomedirs}.")\n" ;
187
188  print STDERR "\n";
189  print STDERR "Manpage:\n";
190  print STDERR "\tSee man ocsinventory-agent\n";
191
192  print STDERR "\n";
193  print STDERR "Ocsinventory-Agent is released under GNU GPL 2 license\n";
194  exit 1;
195}
196
197
198sub version {
199  print "Ocsinventory unified agent for UNIX, Linux and MacOSX (".$VERSION.")\n";
200  exit 0;
201}
202
203
2041;
Note: See TracBrowser for help on using the repository browser.