Code

move functions from SIPackages.pm to event module siTriggered.pm
[gosa.git] / gosa-si / server / events / gosaTriggered.pm
1 package gosaTriggered;
2 use Exporter;
3 @ISA = qw(Exporter);
4 my @events = (
5     "get_events", 
6     "ping",
7     "network_completition",
8     "set_activated_for_installation",
9     "new_key_for_client",
10     "detect_hardware",
11     "trigger_action_localboot",
12     "trigger_action_reboot",
13     "trigger_action_halt",
14     "trigger_action_update", 
15     "trigger_action_reinstall",
16     "trigger_action_memcheck", 
17     "trigger_action_sysinfo",
18     "trigger_action_instant_update",
19     "trigger_action_rescan",
20     "trigger_action_wake",
21     );
22 @EXPORT = @events;
24 use strict;
25 use warnings;
26 use GOSA::GosaSupportDaemon;
27 use Net::ARP;
28 use Net::Ping;
29 use Socket;
32 BEGIN {}
34 END {}
36 ### Start ######################################################################
38 #&main::read_configfile($main::cfg_file, %cfg_defaults);
40 sub get_events {
41     return \@events;
42 }
44 sub ping {
45      my ($msg, $msg_hash, $session_id) = @_ ;
46      my $source = @{$msg_hash->{source}}[0];
47      my $target = @{$msg_hash->{target}}[0];
48      my $out_hash =  &create_xml_hash("ping", $source, $target);
49      &add_content2xml_hash($out_hash, "session_id", $session_id);
50      my $out_msg = &create_xml_string($out_hash);
51     
52      my @out_msg_l = ( $out_msg );
53      return @out_msg_l;
54 }
56 sub network_completition {
57      my ($msg, $msg_hash, $session_id) = @_ ;
58      my $source = @{$msg_hash->{source}}[0];
59      my $target = @{$msg_hash->{target}}[0];
60      my $name = @{$msg_hash->{hostname}}[0];
62      # Can we resolv the name?
63      my %data;
64      if (inet_aton($name)){
65              my $address = inet_ntoa(inet_aton($name));
66              my $p = Net::Ping->new('tcp');
67              my $mac= "";
68              if ($p->ping($address, 1)){
69                $mac = Net::ARP::arp_lookup("", $address);
70              }
72              %data= ('ip' => $address, 'mac' => $mac);
73      } else {
74              %data= ('ip' => '', 'mac' => '');
75      }
77      my $out_msg = &build_msg("network_completition", $target, 'GOSA', \%data );
78     
79      return ( $out_msg );
80 }
82 sub detect_hardware {
83     my ($msg, $msg_hash) = @_ ;
84     # just forward msg to client, but dont forget to split off 'gosa_' in header
85     my $header = @{$msg_hash->{header}}[0];
86     my $source = @{$msg_hash->{source}}[0];
87     my $target = @{$msg_hash->{target}}[0];
89     my $out_hash = &create_xml_hash("detect_hardware", $source, $target);
90     my $out_msg = &create_xml_string($out_hash);
92     my @out_msg_l = ( $out_msg );
93     return @out_msg_l;
95 }
98 sub set_activated_for_installation {
99     my ($msg, $msg_hash) = @_;
101     my $header = @{$msg_hash->{header}}[0];
102     my $source = @{$msg_hash->{source}}[0];
103     my $target = @{$msg_hash->{target}}[0];
105     my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $target);
106     my $out_msg = &create_xml_string($out_hash);
108     my @out_msg_l = ( $out_msg );
109     return @out_msg_l;
112 sub trigger_action_localboot {
113     my ($msg, $msg_hash) = @_;
114     $msg =~ s/<header>gosa_trigger_action_localboot<\/header>/<header>trigger_action_localboot<\/header>/;
115     my @out_msg_l = ($msg);  
116     return @out_msg_l;
119 sub trigger_action_halt {
120     my ($msg, $msg_hash) = @_;
121     $msg =~ s/<header>gosa_trigger_action_halt<\/header>/<header>trigger_action_halt<\/header>/;
122     my @out_msg_l = ($msg);  
123     return @out_msg_l;
127 sub trigger_action_reboot {
128     my ($msg, $msg_hash) = @_;
129     $msg =~ s/<header>gosa_trigger_action_reboot<\/header>/<header>trigger_action_reboot<\/header>/;
130     my @out_msg_l = ($msg);  
131     return @out_msg_l;
135 sub trigger_action_memcheck {
136     my ($msg, $msg_hash) = @_ ;
137     $msg =~ s/<header>gosa_trigger_action_memcheck<\/header>/<header>trigger_action_memcheck<\/header>/;
138     my @out_msg_l = ($msg);  
139     return @out_msg_l;
143 sub trigger_action_reinstall {
144     my ($msg, $msg_hash) = @_;
145     $msg =~ s/<header>gosa_trigger_action_reinstall<\/header>/<header>trigger_action_reinstall<\/header>/;
146     my @out_msg_l = ($msg);  
147     return @out_msg_l;
151 sub trigger_action_update {
152     my ($msg, $msg_hash) = @_;
153     $msg =~ s/<header>gosa_trigger_action_update<\/header>/<header>trigger_action_update<\/header>/;
154     my @out_msg_l = ($msg);  
155     return @out_msg_l;
159 sub trigger_action_instant_update {
160     my ($msg, $msg_hash) = @_;
161     $msg =~ s/<header>gosa_trigger_action_instant_update<\/header>/<header>trigger_action_instant_update<\/header>/;
162     my @out_msg_l = ($msg);  
163     return @out_msg_l;
167 sub trigger_action_sysinfo {
168     my ($msg, $msg_hash) = @_;
169     $msg =~ s/<header>gosa_trigger_action_sysinfo<\/header>/<header>trigger_action_sysinfo<\/header>/;
170     my @out_msg_l = ($msg);  
171     return @out_msg_l;
176 sub new_key_for_client {
177     my ($msg, $msg_hash) = @_;
178     $msg =~ s/<header>gosa_new_key_for_client<\/header>/<header>new_key<\/header>/;
179     my @out_msg_l = ($msg);  
180     return @out_msg_l;
183 sub trigger_action_rescan {
184     my ($msg, $msg_hash) = @_;
185     $msg =~ s/<header>gosa_trigger_action_rescan<\/header>/<header>trigger_action_rescan<\/header>/;
186     my @out_msg_l = ($msg);  
187     return @out_msg_l;
191 sub trigger_action_wake {
192     my ($msg, $msg_hash) = @_;
193     my %data = ( 'macAddress'  => \@{$msg_hash->{macAddress}} );
194     my $out_msg = &build_msg("trigger_wake", "GOSA", "KNOWN_SERVER", \%data);
195     my @out_msg_l = ($out_msg);  
196     return @out_msg_l;
199 1;