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_reboot",
15 "trigger_action_halt",
16 "trigger_action_update",
17 "trigger_action_reinstall",
18 "trigger_action_memcheck",
19 "trigger_action_sysinfo",
20 "trigger_action_instant_update",
21 "trigger_action_rescan",
22 "trigger_action_wake",
23 );
24 @EXPORT = @events;
26 use strict;
27 use warnings;
28 use GOSA::GosaSupportDaemon;
29 use Crypt::SmbHash;
30 use Net::ARP;
31 use Net::Ping;
32 use Socket;
35 BEGIN {}
37 END {}
39 ### Start ######################################################################
41 #&main::read_configfile($main::cfg_file, %cfg_defaults);
43 sub get_events {
44 return \@events;
45 }
48 sub ping {
49 my ($msg, $msg_hash, $session_id) = @_ ;
50 my $source = @{$msg_hash->{source}}[0];
51 my $target = @{$msg_hash->{target}}[0];
52 my $out_hash = &create_xml_hash("ping", $source, $target);
53 &add_content2xml_hash($out_hash, "session_id", $session_id);
54 my $out_msg = &create_xml_string($out_hash);
56 my @out_msg_l = ( $out_msg );
57 return @out_msg_l;
58 }
61 sub gen_smb_hash {
62 my ($msg, $msg_hash, $session_id) = @_ ;
63 my $source = @{$msg_hash->{source}}[0];
64 my $target = @{$msg_hash->{target}}[0];
65 my $password = @{$msg_hash->{password}}[0];
67 my %data= ('hash' => join(q[:], ntlmgen $password));
68 my $out_msg = &build_msg("gen_smb_hash", $target, 'GOSA', \%data );
69 }
72 sub network_completition {
73 my ($msg, $msg_hash, $session_id) = @_ ;
74 my $source = @{$msg_hash->{source}}[0];
75 my $target = @{$msg_hash->{target}}[0];
76 my $name = @{$msg_hash->{hostname}}[0];
78 # Can we resolv the name?
79 my %data;
80 if (inet_aton($name)){
81 my $address = inet_ntoa(inet_aton($name));
82 my $p = Net::Ping->new('tcp');
83 my $mac= "";
84 if ($p->ping($address, 1)){
85 $mac = Net::ARP::arp_lookup("", $address);
86 }
88 %data= ('ip' => $address, 'mac' => $mac);
89 } else {
90 %data= ('ip' => '', 'mac' => '');
91 }
93 my $out_msg = &build_msg("network_completition", $target, 'GOSA', \%data );
95 return ( $out_msg );
96 }
99 sub detect_hardware {
100 my ($msg, $msg_hash) = @_ ;
101 # just forward msg to client, but dont forget to split off 'gosa_' in header
102 my $source = @{$msg_hash->{source}}[0];
103 my $target = @{$msg_hash->{target}}[0];
105 my $out_hash = &create_xml_hash("detect_hardware", $source, $target);
106 my $out_msg = &create_xml_string($out_hash);
108 my @out_msg_l = ( $out_msg );
109 return @out_msg_l;
111 }
114 sub trigger_reload_ldap_config {
115 my ($msg, $msg_hash) = @_ ;
116 my $target = @{$msg_hash->{target}}[0];
118 my $out_hash = &create_xml_hash("reload_ldap_config", $main::server_address, $main::server_address, $target);
119 my $out_msg = &create_xml_string($out_hash);
120 my @out_msg_l;
121 push(@out_msg_l, $out_msg);
122 return @out_msg_l;
123 }
126 sub set_activated_for_installation {
127 my ($msg, $msg_hash) = @_;
129 my $header = @{$msg_hash->{header}}[0];
130 my $source = @{$msg_hash->{source}}[0];
131 my $target = @{$msg_hash->{target}}[0];
133 my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $target);
134 my $out_msg = &create_xml_string($out_hash);
136 my @out_msg_l = ( $out_msg );
137 return @out_msg_l;
138 }
141 sub trigger_action_localboot {
142 my ($msg, $msg_hash) = @_;
143 $msg =~ s/<header>gosa_trigger_action_localboot<\/header>/<header>trigger_action_localboot<\/header>/;
144 my @out_msg_l = ($msg);
145 return @out_msg_l;
146 }
149 sub trigger_action_halt {
150 my ($msg, $msg_hash) = @_;
151 $msg =~ s/<header>gosa_trigger_action_halt<\/header>/<header>trigger_action_halt<\/header>/;
152 my @out_msg_l = ($msg);
153 return @out_msg_l;
154 }
157 sub trigger_action_reboot {
158 my ($msg, $msg_hash) = @_;
159 $msg =~ s/<header>gosa_trigger_action_reboot<\/header>/<header>trigger_action_reboot<\/header>/;
160 my @out_msg_l = ($msg);
161 return @out_msg_l;
162 }
165 sub trigger_action_memcheck {
166 my ($msg, $msg_hash) = @_ ;
167 $msg =~ s/<header>gosa_trigger_action_memcheck<\/header>/<header>trigger_action_memcheck<\/header>/;
168 my @out_msg_l = ($msg);
169 return @out_msg_l;
170 }
173 sub trigger_action_reinstall {
174 my ($msg, $msg_hash) = @_;
175 $msg =~ s/<header>gosa_trigger_action_reinstall<\/header>/<header>trigger_action_reinstall<\/header>/;
176 my @out_msg_l = ($msg);
177 return @out_msg_l;
178 }
181 sub trigger_action_update {
182 my ($msg, $msg_hash) = @_;
183 $msg =~ s/<header>gosa_trigger_action_update<\/header>/<header>trigger_action_update<\/header>/;
184 my @out_msg_l = ($msg);
185 return @out_msg_l;
186 }
189 sub trigger_action_instant_update {
190 my ($msg, $msg_hash) = @_;
191 $msg =~ s/<header>gosa_trigger_action_instant_update<\/header>/<header>trigger_action_instant_update<\/header>/;
192 my @out_msg_l = ($msg);
193 return @out_msg_l;
194 }
197 sub trigger_action_sysinfo {
198 my ($msg, $msg_hash) = @_;
199 $msg =~ s/<header>gosa_trigger_action_sysinfo<\/header>/<header>trigger_action_sysinfo<\/header>/;
200 my @out_msg_l = ($msg);
201 return @out_msg_l;
202 }
205 sub new_key_for_client {
206 my ($msg, $msg_hash) = @_;
207 $msg =~ s/<header>gosa_new_key_for_client<\/header>/<header>new_key<\/header>/;
208 my @out_msg_l = ($msg);
209 return @out_msg_l;
210 }
213 sub trigger_action_rescan {
214 my ($msg, $msg_hash) = @_;
215 $msg =~ s/<header>gosa_trigger_action_rescan<\/header>/<header>trigger_action_rescan<\/header>/;
216 my @out_msg_l = ($msg);
217 return @out_msg_l;
218 }
221 sub trigger_action_wake {
222 my ($msg, $msg_hash) = @_;
223 my %data = ( 'macAddress' => \@{$msg_hash->{macAddress}} );
224 my $out_msg = &build_msg("trigger_wake", "GOSA", "KNOWN_SERVER", \%data);
225 my @out_msg_l = ($out_msg);
226 return @out_msg_l;
227 }
229 1;