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

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

Copyt trusty code

File size: 2.1 KB
Line 
1package Ocsinventory::Agent::Hooks;
2# This package give possibility to use hooks in unified unix agent.
3
4use strict;
5use warnings;
6
7#use FindBin qw($Bin);
8
9sub new {
10  my (undef, $context) = @_;
11
12  my $self = {};
13  $self->{accountinfo} = $context->{accountinfo};
14  $self->{accountconfig} = $context->{accountconfig};
15  my $logger = $self->{logger}=$context->{logger};
16
17  $self->{config} = $context->{config};
18
19  $self->{dontuse} = 1;
20
21  my $modulefile;
22  foreach (@{$self->{config}->{etcdir}}) {
23    $modulefile = $_.'/modules.conf';
24    if (-f $modulefile) {
25      if (do $modulefile) {
26        $logger->debug("Turns hooks on for $modulefile");
27        $self->{dontuse} = 0;
28        last;
29      } else {
30          $logger->debug("Failed to load `$modulefile': $?");
31      }
32    }
33  }
34
35  if ($self->{dontuse}) {
36      $logger->debug("No modules will be used.");
37  } else {
38      my $ocsAgentServerUri;
39
40      # to avoid a warning if $self->{config}->{server} is not defined
41      if ($self->{config}->{server}) {
42          $ocsAgentServerUri = "http://".$self->{config}->{server}.$self->{config}->{remotedir};
43      }
44
45      if ($self->{config}->{debug}) {
46        $::debug = 2;
47      }
48
49   
50  }
51
52  #Create objects for modules
53  foreach my $mod (keys %Ocsinventory::Agent::Modules::) {
54           $mod =~ s/\:\://;
55      my $package ="Ocsinventory::Agent::Modules::".$mod; 
56     
57        my $module = new $package($context) ;
58      my $name= $module->{structure}->{name};
59     
60      #Store the reference in a key to access modules easily 
61      $self->{modules}->{$name}=$module;
62
63  }
64
65  bless $self;
66}
67
68
69
70sub run {
71  my ($self, $args, $moduleparam) = @_;
72
73  return if $self->{dontuse};
74
75  my $name = $args->{name}; #type of hook asked
76
77  my $logger = $self->{logger};
78
79  $logger->debug("Calling handlers : `$name'");
80
81  #Launching hook for modules if not 'undef' and if modules are not disabled by start_handler
82  for (keys %{$self->{modules}}) {
83        my $module = $self->{modules}->{$_};
84
85        unless ($module->{disabled}) { 
86                my $hook = $module->{structure}->{$name};
87                if ($hook) {
88                        $module->$hook($moduleparam);
89                }
90        }
91  }
92
93}
94
951;
Note: See TracBrowser for help on using the repository browser.