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);
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 );
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;
110 }
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;
117 }
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;
124 }
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;
132 }
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;
140 }
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;
148 }
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;
156 }
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;
164 }
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;
172 }
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;
181 }
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;
188 }
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;
197 }
199 1;