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 );
21 @EXPORT = @events;
23 use strict;
24 use warnings;
25 use GOSA::GosaSupportDaemon;
26 use Net::ARP;
27 use Net::Ping;
28 use Socket;
31 BEGIN {}
33 END {}
35 ### Start ######################################################################
37 #&main::read_configfile($main::cfg_file, %cfg_defaults);
39 sub get_events {
40 return \@events;
41 }
43 sub ping {
44 my ($msg, $msg_hash, $session_id) = @_ ;
45 my $source = @{$msg_hash->{source}}[0];
46 my $target = @{$msg_hash->{target}}[0];
47 my $out_hash = &create_xml_hash("ping", $source, $target);
48 &add_content2xml_hash($out_hash, "session_id", $session_id);
49 my $out_msg = &create_xml_string($out_hash);
51 return ( $out_msg );
52 }
54 sub network_completition {
55 my ($msg, $msg_hash, $session_id) = @_ ;
56 my $source = @{$msg_hash->{source}}[0];
57 my $target = @{$msg_hash->{target}}[0];
58 my $name = @{$msg_hash->{hostname}}[0];
60 # Can we resolv the name?
61 my %data;
62 if (inet_aton($name)){
63 my $address = inet_ntoa(inet_aton($name));
64 my $p = Net::Ping->new('tcp');
65 my $mac= "";
66 if ($p->ping($address, 1)){
67 $mac = Net::ARP::arp_lookup("", $address);
68 }
70 %data= ('ip' => $address, 'mac' => $mac);
71 } else {
72 %data= ('ip' => '', 'mac' => '');
73 }
75 my $out_msg = &build_msg("network_completition", $target, 'GOSA', \%data );
77 return ( $out_msg );
78 }
80 sub detect_hardware {
81 my ($msg, $msg_hash) = @_ ;
82 # just forward msg to client, but dont forget to split off 'gosa_' in header
83 my $header = @{$msg_hash->{header}}[0];
84 my $source = @{$msg_hash->{source}}[0];
85 my $target = @{$msg_hash->{target}}[0];
87 my $out_hash = &create_xml_hash("detect_hardware", $source, $target);
88 my $out_msg = &create_xml_string($out_hash);
90 return ( $out_msg );
91 }
94 sub set_activated_for_installation {
95 my ($msg, $msg_hash) = @_;
97 my $header = @{$msg_hash->{header}}[0];
98 my $source = @{$msg_hash->{source}}[0];
99 my $target = @{$msg_hash->{target}}[0];
101 my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $target);
102 my $out_msg = &create_xml_string($out_hash);
104 return ( $out_msg );
105 }
107 sub trigger_action_localboot {
108 my ($msg, $msg_hash) = @_;
109 $msg =~ s/<header>gosa_trigger_action_localboot<\/header>/<header>trigger_action_localboot<\/header>/;
111 return ( $msg );
112 }
114 sub trigger_action_halt {
115 my ($msg, $msg_hash) = @_;
116 $msg =~ s/<header>gosa_trigger_action_halt<\/header>/<header>trigger_action_halt<\/header>/;
117 return ( $msg );
118 }
121 sub trigger_action_reboot {
122 my ($msg, $msg_hash) = @_;
123 $msg =~ s/<header>gosa_trigger_action_reboot<\/header>/<header>trigger_action_reboot<\/header>/;
124 return ( $msg );
125 }
128 sub trigger_action_memcheck {
129 my ($msg, $msg_hash) = @_ ;
130 $msg =~ s/<header>gosa_trigger_action_memcheck<\/header>/<header>trigger_action_memcheck<\/header>/;
131 return ( $msg );
132 }
135 sub trigger_action_reinstall {
136 my ($msg, $msg_hash) = @_;
137 $msg =~ s/<header>gosa_trigger_action_reinstall<\/header>/<header>trigger_action_reinstall<\/header>/;
138 return ( $msg );
139 }
142 sub trigger_action_update {
143 my ($msg, $msg_hash) = @_;
144 $msg =~ s/<header>gosa_trigger_action_update<\/header>/<header>trigger_action_update<\/header>/;
145 return ( $msg );
146 }
149 sub trigger_action_instant_update {
150 my ($msg, $msg_hash) = @_;
151 $msg =~ s/<header>gosa_trigger_action_instant_update<\/header>/<header>trigger_action_instant_update<\/header>/;
152 return ( $msg );
153 }
156 sub trigger_action_sysinfo {
157 my ($msg, $msg_hash) = @_;
158 $msg =~ s/<header>gosa_trigger_action_sysinfo<\/header>/<header>trigger_action_sysinfo<\/header>/;
159 return ( $msg );
160 }
164 sub new_key_for_client {
165 my ($msg, $msg_hash) = @_;
166 $msg =~ s/<header>gosa_new_key_for_client<\/header>/<header>new_key<\/header>/;
167 return ( $msg );
168 }
170 sub trigger_action_rescan {
171 my ($msg, $msg_hash) = @_;
172 $msg =~ s/<header>gosa_trigger_action_rescan<\/header>/<header>trigger_action_rescan<\/header>/;
173 return ( $msg );
174 }
176 1;