Code

Added reminders
[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     "get_login_usr_for_client",
7     "get_client_for_login_usr",
8     "gen_smb_hash",
9     "trigger_reload_ldap_config",
10     "ping",
11     "network_completition",
12     "set_activated_for_installation",
13     "new_key_for_client",
14     "detect_hardware",
15     "get_login_usr",
16     "get_login_client",
17     "trigger_action_localboot",
18     "trigger_action_faireboot",
19     "trigger_action_reboot",
20     "trigger_action_halt",
21     "trigger_action_update", 
22     "trigger_action_reinstall",
23     "trigger_action_memcheck", 
24     "trigger_action_sysinfo",
25     "trigger_action_instant_update",
26     "trigger_action_rescan",
27     "trigger_action_wake",
28     );
29 @EXPORT = @events;
31 use strict;
32 use warnings;
33 use GOSA::GosaSupportDaemon;
34 use Data::Dumper;
35 use Crypt::SmbHash;
36 use Net::ARP;
37 use Net::Ping;
38 use Socket;
39 use utf8;
41 BEGIN {}
43 END {}
45 ### Start ######################################################################
47 #&main::read_configfile($main::cfg_file, %cfg_defaults);
49 sub get_events {
50     return \@events;
51 }
54 sub get_login_usr_for_client {
55     my ($msg, $msg_hash, $session_id) = @_ ;
56     my $header = @{$msg_hash->{'header'}}[0];
57     my $source = @{$msg_hash->{'source'}}[0];
58     my $target = @{$msg_hash->{'target'}}[0];
59     my $client = @{$msg_hash->{'client'}}[0];
61     $header =~ s/^gosa_//;
63     my $sql_statement = "SELECT * FROM known_clients WHERE hostname='$client' OR macaddress='$client'";
64     my $res = $main::known_clients_db->select_dbentry($sql_statement);
66     my $out_msg = "<xml><header>$header</header><source>$target</source><target>$source</target>";
67     $out_msg .= &db_res2xml($res);
68     $out_msg .= "</xml>";
70     my @out_msg_l = ( $out_msg );
71     return @out_msg_l;
72 }
75 sub get_client_for_login_usr {
76     my ($msg, $msg_hash, $session_id) = @_ ;
77     my $header = @{$msg_hash->{'header'}}[0];
78     my $source = @{$msg_hash->{'source'}}[0];
79     my $target = @{$msg_hash->{'target'}}[0];
80     my $usr = @{$msg_hash->{'usr'}}[0];
81     $header =~ s/^gosa_//;
83     my $sql_statement = "SELECT * FROM known_clients WHERE login LIKE '%$usr%'";
84     my $res = $main::known_clients_db->select_dbentry($sql_statement);
86     my $out_msg = "<xml><header>$header</header><source>$target</source><target>$source</target>";
87     $out_msg .= &db_res2xml($res);
88     $out_msg .= "</xml>";
89     my @out_msg_l = ( $out_msg );
90     return @out_msg_l;
92 }
95 sub ping {
96      my ($msg, $msg_hash, $session_id) = @_ ;
97      my $source = @{$msg_hash->{source}}[0];
98      my $target = @{$msg_hash->{target}}[0];
99      my $out_hash =  &create_xml_hash("ping", $source, $target);
100      &add_content2xml_hash($out_hash, "session_id", $session_id);
101      my $out_msg = &create_xml_string($out_hash);
102     
103      my @out_msg_l = ( $out_msg );
104      return @out_msg_l;
108 sub gen_smb_hash {
109      my ($msg, $msg_hash, $session_id) = @_ ;
110      my $source = @{$msg_hash->{source}}[0];
111      my $target = @{$msg_hash->{target}}[0];
112      my $password = @{$msg_hash->{password}}[0];
114      my %data= ('hash' => join(q[:], ntlmgen $password));
115      my $out_msg = &build_msg("gen_smb_hash", $target, 'GOSA', \%data );
119 sub network_completition {
120      my ($msg, $msg_hash, $session_id) = @_ ;
121      my $source = @{$msg_hash->{source}}[0];
122      my $target = @{$msg_hash->{target}}[0];
123      my $name = @{$msg_hash->{hostname}}[0];
125      # Can we resolv the name?
126      my %data;
127      if (inet_aton($name)){
128              my $address = inet_ntoa(inet_aton($name));
129              my $p = Net::Ping->new('tcp');
130              my $mac= "";
131              if ($p->ping($address, 1)){
132                $mac = Net::ARP::arp_lookup("", $address);
133              }
135              %data= ('ip' => $address, 'mac' => $mac);
136      } else {
137              %data= ('ip' => '', 'mac' => '');
138      }
140      my $out_msg = &build_msg("network_completition", $target, 'GOSA', \%data );
141     
142      return ( $out_msg );
146 sub detect_hardware {
147     my ($msg, $msg_hash) = @_ ;
148     # just forward msg to client, but dont forget to split off 'gosa_' in header
149     my $source = @{$msg_hash->{source}}[0];
150     my $target = @{$msg_hash->{target}}[0];
152     my $out_hash = &create_xml_hash("detect_hardware", $source, $target);
153     my $out_msg = &create_xml_string($out_hash);
155     my @out_msg_l = ( $out_msg );
156     return @out_msg_l;
161 sub trigger_reload_ldap_config {
162     my ($msg, $msg_hash) = @_ ;
163     my $target = @{$msg_hash->{target}}[0];
165     my $out_hash = &create_xml_hash("reload_ldap_config", $main::server_address, $main::server_address, $target);
166     my $out_msg = &create_xml_string($out_hash);
167     my @out_msg_l;
168     push(@out_msg_l, $out_msg);
169     return @out_msg_l;
173 sub set_activated_for_installation {
174     my ($msg, $msg_hash) = @_;
176     my $header = @{$msg_hash->{header}}[0];
177     my $source = @{$msg_hash->{source}}[0];
178     my $target = @{$msg_hash->{target}}[0];
180     my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $target);
181     my $out_msg = &create_xml_string($out_hash);
183     my @out_msg_l = ( $out_msg );
184     return @out_msg_l;
188 sub trigger_action_faireboot {
189     my ($msg, $msg_hash) = @_;
190     $msg =~ s/<header>gosa_trigger_action_faireboot<\/header>/<header>trigger_action_faireboot<\/header>/;
191     my @out_msg_l = ($msg);  
192     return @out_msg_l;
196 sub trigger_action_localboot {
197     my ($msg, $msg_hash) = @_;
198     $msg =~ s/<header>gosa_trigger_action_localboot<\/header>/<header>trigger_action_localboot<\/header>/;
199     my @out_msg_l = ($msg);  
200     return @out_msg_l;
204 sub trigger_action_halt {
205     my ($msg, $msg_hash) = @_;
206     $msg =~ s/<header>gosa_trigger_action_halt<\/header>/<header>trigger_action_halt<\/header>/;
207     my @out_msg_l = ($msg);  
208     return @out_msg_l;
212 sub trigger_action_reboot {
213     my ($msg, $msg_hash) = @_;
214     $msg =~ s/<header>gosa_trigger_action_reboot<\/header>/<header>trigger_action_reboot<\/header>/;
215     my @out_msg_l = ($msg);  
216     return @out_msg_l;
220 sub trigger_action_memcheck {
221     my ($msg, $msg_hash) = @_ ;
222     $msg =~ s/<header>gosa_trigger_action_memcheck<\/header>/<header>trigger_action_memcheck<\/header>/;
223     my @out_msg_l = ($msg);  
224     return @out_msg_l;
228 sub trigger_action_reinstall {
229     my ($msg, $msg_hash) = @_;
230     $msg =~ s/<header>gosa_trigger_action_reinstall<\/header>/<header>trigger_action_reinstall<\/header>/;
231     my @out_msg_l = ($msg);  
232     return @out_msg_l;
236 sub trigger_action_update {
237     my ($msg, $msg_hash) = @_;
238     $msg =~ s/<header>gosa_trigger_action_update<\/header>/<header>trigger_action_update<\/header>/;
239     my @out_msg_l = ($msg);  
240     return @out_msg_l;
244 sub trigger_action_instant_update {
245     my ($msg, $msg_hash) = @_;
246     $msg =~ s/<header>gosa_trigger_action_instant_update<\/header>/<header>trigger_action_instant_update<\/header>/;
247     my @out_msg_l = ($msg);  
248     return @out_msg_l;
252 sub trigger_action_sysinfo {
253     my ($msg, $msg_hash) = @_;
254     $msg =~ s/<header>gosa_trigger_action_sysinfo<\/header>/<header>trigger_action_sysinfo<\/header>/;
255     my @out_msg_l = ($msg);  
256     return @out_msg_l;
260 sub new_key_for_client {
261     my ($msg, $msg_hash) = @_;
262     $msg =~ s/<header>gosa_new_key_for_client<\/header>/<header>new_key<\/header>/;
263     my @out_msg_l = ($msg);  
264     return @out_msg_l;
268 sub trigger_action_rescan {
269     my ($msg, $msg_hash) = @_;
270     $msg =~ s/<header>gosa_trigger_action_rescan<\/header>/<header>trigger_action_rescan<\/header>/;
271     my @out_msg_l = ($msg);  
272     return @out_msg_l;
276 sub trigger_action_wake {
277     my ($msg, $msg_hash) = @_;
278     my %data = ( 'macAddress'  => \@{$msg_hash->{macAddress}} );
279     my $out_msg = &build_msg("trigger_wake", "GOSA", "KNOWN_SERVER", \%data);
280     my @out_msg_l = ($out_msg);  
281     return @out_msg_l;
284 1;