1 package gosaTriggered;
2 use Exporter;
3 @ISA = qw(Exporter);
4 my @events = (
5 "get_events",
6 "gen_smb_hash",
7 "trigger_reload_ldap_config",
8 "ping",
9 "network_completition",
10 "set_activated_for_installation",
11 "new_key_for_client",
12 "detect_hardware",
13 "trigger_action_localboot",
14 "trigger_action_faireboot",
15 "trigger_action_reboot",
16 "trigger_action_halt",
17 "trigger_action_update",
18 "trigger_action_reinstall",
19 "trigger_action_memcheck",
20 "trigger_action_sysinfo",
21 "trigger_action_instant_update",
22 "trigger_action_rescan",
23 "trigger_action_wake",
24 );
25 @EXPORT = @events;
27 use strict;
28 use warnings;
29 use GOSA::GosaSupportDaemon;
30 use Crypt::SmbHash;
31 use Net::ARP;
32 use Net::Ping;
33 use Socket;
36 BEGIN {}
38 END {}
40 ### Start ######################################################################
42 #&main::read_configfile($main::cfg_file, %cfg_defaults);
44 sub get_events {
45 return \@events;
46 }
49 sub ping {
50 my ($msg, $msg_hash, $session_id) = @_ ;
51 my $source = @{$msg_hash->{source}}[0];
52 my $target = @{$msg_hash->{target}}[0];
53 my $out_hash = &create_xml_hash("ping", $source, $target);
54 &add_content2xml_hash($out_hash, "session_id", $session_id);
55 my $out_msg = &create_xml_string($out_hash);
57 my @out_msg_l = ( $out_msg );
58 return @out_msg_l;
59 }
62 sub gen_smb_hash {
63 my ($msg, $msg_hash, $session_id) = @_ ;
64 my $source = @{$msg_hash->{source}}[0];
65 my $target = @{$msg_hash->{target}}[0];
66 my $password = @{$msg_hash->{password}}[0];
68 my %data= ('hash' => join(q[:], ntlmgen $password));
69 my $out_msg = &build_msg("gen_smb_hash", $target, 'GOSA', \%data );
70 }
73 sub network_completition {
74 my ($msg, $msg_hash, $session_id) = @_ ;
75 my $source = @{$msg_hash->{source}}[0];
76 my $target = @{$msg_hash->{target}}[0];
77 my $name = @{$msg_hash->{hostname}}[0];
79 # Can we resolv the name?
80 my %data;
81 if (inet_aton($name)){
82 my $address = inet_ntoa(inet_aton($name));
83 my $p = Net::Ping->new('tcp');
84 my $mac= "";
85 if ($p->ping($address, 1)){
86 $mac = Net::ARP::arp_lookup("", $address);
87 }
89 %data= ('ip' => $address, 'mac' => $mac);
90 } else {
91 %data= ('ip' => '', 'mac' => '');
92 }
94 my $out_msg = &build_msg("network_completition", $target, 'GOSA', \%data );
96 return ( $out_msg );
97 }
100 sub detect_hardware {
101 my ($msg, $msg_hash) = @_ ;
102 # just forward msg to client, but dont forget to split off 'gosa_' in header
103 my $source = @{$msg_hash->{source}}[0];
104 my $target = @{$msg_hash->{target}}[0];
106 my $out_hash = &create_xml_hash("detect_hardware", $source, $target);
107 my $out_msg = &create_xml_string($out_hash);
109 my @out_msg_l = ( $out_msg );
110 return @out_msg_l;
112 }
115 sub trigger_reload_ldap_config {
116 my ($msg, $msg_hash) = @_ ;
117 my $target = @{$msg_hash->{target}}[0];
119 my $out_hash = &create_xml_hash("reload_ldap_config", $main::server_address, $main::server_address, $target);
120 my $out_msg = &create_xml_string($out_hash);
121 my @out_msg_l;
122 push(@out_msg_l, $out_msg);
123 return @out_msg_l;
124 }
127 sub set_activated_for_installation {
128 my ($msg, $msg_hash) = @_;
130 my $header = @{$msg_hash->{header}}[0];
131 my $source = @{$msg_hash->{source}}[0];
132 my $target = @{$msg_hash->{target}}[0];
134 my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $target);
135 my $out_msg = &create_xml_string($out_hash);
137 my @out_msg_l = ( $out_msg );
138 return @out_msg_l;
139 }
142 sub trigger_action_faireboot {
143 my ($msg, $msg_hash) = @_;
144 $msg =~ s/<header>gosa_trigger_action_faireboot<\/header>/<header>trigger_action_faireboot<\/header>/;
145 my @out_msg_l = ($msg);
146 return @out_msg_l;
147 }
150 sub trigger_action_localboot {
151 my ($msg, $msg_hash) = @_;
152 $msg =~ s/<header>gosa_trigger_action_localboot<\/header>/<header>trigger_action_localboot<\/header>/;
153 my @out_msg_l = ($msg);
154 return @out_msg_l;
155 }
158 sub trigger_action_halt {
159 my ($msg, $msg_hash) = @_;
160 $msg =~ s/<header>gosa_trigger_action_halt<\/header>/<header>trigger_action_halt<\/header>/;
161 my @out_msg_l = ($msg);
162 return @out_msg_l;
163 }
166 sub trigger_action_reboot {
167 my ($msg, $msg_hash) = @_;
168 $msg =~ s/<header>gosa_trigger_action_reboot<\/header>/<header>trigger_action_reboot<\/header>/;
169 my @out_msg_l = ($msg);
170 return @out_msg_l;
171 }
174 sub trigger_action_memcheck {
175 my ($msg, $msg_hash) = @_ ;
176 $msg =~ s/<header>gosa_trigger_action_memcheck<\/header>/<header>trigger_action_memcheck<\/header>/;
177 my @out_msg_l = ($msg);
178 return @out_msg_l;
179 }
182 sub trigger_action_reinstall {
183 my ($msg, $msg_hash) = @_;
184 $msg =~ s/<header>gosa_trigger_action_reinstall<\/header>/<header>trigger_action_reinstall<\/header>/;
185 my @out_msg_l = ($msg);
186 return @out_msg_l;
187 }
190 sub trigger_action_update {
191 my ($msg, $msg_hash) = @_;
192 $msg =~ s/<header>gosa_trigger_action_update<\/header>/<header>trigger_action_update<\/header>/;
193 my @out_msg_l = ($msg);
194 return @out_msg_l;
195 }
198 sub trigger_action_instant_update {
199 my ($msg, $msg_hash) = @_;
200 $msg =~ s/<header>gosa_trigger_action_instant_update<\/header>/<header>trigger_action_instant_update<\/header>/;
201 my @out_msg_l = ($msg);
202 return @out_msg_l;
203 }
206 sub trigger_action_sysinfo {
207 my ($msg, $msg_hash) = @_;
208 $msg =~ s/<header>gosa_trigger_action_sysinfo<\/header>/<header>trigger_action_sysinfo<\/header>/;
209 my @out_msg_l = ($msg);
210 return @out_msg_l;
211 }
214 sub new_key_for_client {
215 my ($msg, $msg_hash) = @_;
216 $msg =~ s/<header>gosa_new_key_for_client<\/header>/<header>new_key<\/header>/;
217 my @out_msg_l = ($msg);
218 return @out_msg_l;
219 }
222 sub trigger_action_rescan {
223 my ($msg, $msg_hash) = @_;
224 $msg =~ s/<header>gosa_trigger_action_rescan<\/header>/<header>trigger_action_rescan<\/header>/;
225 my @out_msg_l = ($msg);
226 return @out_msg_l;
227 }
230 sub trigger_action_wake {
231 my ($msg, $msg_hash) = @_;
232 my %data = ( 'macAddress' => \@{$msg_hash->{macAddress}} );
233 my $out_msg = &build_msg("trigger_wake", "GOSA", "KNOWN_SERVER", \%data);
234 my @out_msg_l = ($out_msg);
235 return @out_msg_l;
236 }
238 1;