Code

gen_smb_hash should return generated smb hash instead of nothing
[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     "recreate_fai_server_db",
29     );
30 @EXPORT = @events;
32 use strict;
33 use warnings;
34 use GOSA::GosaSupportDaemon;
35 use Data::Dumper;
36 use Crypt::SmbHash;
37 use Net::ARP;
38 use Net::Ping;
39 use Socket;
40 use utf8;
42 BEGIN {}
44 END {}
46 ### Start ######################################################################
48 #&main::read_configfile($main::cfg_file, %cfg_defaults);
50 sub get_events {
51     return \@events;
52 }
55 sub recreate_fai_server_db {
56     my ($msg, $msg_hash, $session_id) = @_ ;
57  
58     $main::fai_server_db->create_table("new_fai_server", \@main::fai_server_col_names);
59     &main::create_fai_server_db("new_fai_server");
60     $main::fai_server_db->move_table("new_fai_server", $main::fai_server_tn);
62     return;
63 }
66 sub get_login_usr_for_client {
67     my ($msg, $msg_hash, $session_id) = @_ ;
68     my $header = @{$msg_hash->{'header'}}[0];
69     my $source = @{$msg_hash->{'source'}}[0];
70     my $target = @{$msg_hash->{'target'}}[0];
71     my $client = @{$msg_hash->{'client'}}[0];
73     $header =~ s/^gosa_//;
75     my $sql_statement = "SELECT * FROM known_clients WHERE hostname='$client' OR macaddress='$client'";
76     my $res = $main::known_clients_db->select_dbentry($sql_statement);
78     my $out_msg = "<xml><header>$header</header><source>$target</source><target>$source</target>";
79     $out_msg .= &db_res2xml($res);
80     $out_msg .= "</xml>";
82     my @out_msg_l = ( $out_msg );
83     return @out_msg_l;
84 }
87 sub get_client_for_login_usr {
88     my ($msg, $msg_hash, $session_id) = @_ ;
89     my $header = @{$msg_hash->{'header'}}[0];
90     my $source = @{$msg_hash->{'source'}}[0];
91     my $target = @{$msg_hash->{'target'}}[0];
92     my $usr = @{$msg_hash->{'usr'}}[0];
93     $header =~ s/^gosa_//;
95     my $sql_statement = "SELECT * FROM known_clients WHERE login LIKE '%$usr%'";
96     my $res = $main::known_clients_db->select_dbentry($sql_statement);
98     my $out_msg = "<xml><header>$header</header><source>$target</source><target>$source</target>";
99     $out_msg .= &db_res2xml($res);
100     $out_msg .= "</xml>";
101     my @out_msg_l = ( $out_msg );
102     return @out_msg_l;
107 sub ping {
108      my ($msg, $msg_hash, $session_id) = @_ ;
109      my $source = @{$msg_hash->{source}}[0];
110      my $target = @{$msg_hash->{target}}[0];
111      my $out_hash =  &create_xml_hash("ping", $source, $target);
112      &add_content2xml_hash($out_hash, "session_id", $session_id);
113      my $out_msg = &create_xml_string($out_hash);
114     
115      my @out_msg_l = ( $out_msg );
116      return @out_msg_l;
120 sub gen_smb_hash {
121      my ($msg, $msg_hash, $session_id) = @_ ;
122      my $source = @{$msg_hash->{source}}[0];
123      my $target = @{$msg_hash->{target}}[0];
124      my $password = @{$msg_hash->{password}}[0];
126      my %data= ('hash' => join(q[:], ntlmgen $password));
127      my $out_msg = &build_msg("gen_smb_hash", $target, 'GOSA', \%data );
128      return ( $out_msg );
132 sub network_completition {
133      my ($msg, $msg_hash, $session_id) = @_ ;
134      my $source = @{$msg_hash->{source}}[0];
135      my $target = @{$msg_hash->{target}}[0];
136      my $name = @{$msg_hash->{hostname}}[0];
138      # Can we resolv the name?
139      my %data;
140      if (inet_aton($name)){
141              my $address = inet_ntoa(inet_aton($name));
142              my $p = Net::Ping->new('tcp');
143              my $mac= "";
144              if ($p->ping($address, 1)){
145                $mac = Net::ARP::arp_lookup("", $address);
146              }
148              %data= ('ip' => $address, 'mac' => $mac);
149      } else {
150              %data= ('ip' => '', 'mac' => '');
151      }
153      my $out_msg = &build_msg("network_completition", $target, 'GOSA', \%data );
154     
155      return ( $out_msg );
159 sub detect_hardware {
160     my ($msg, $msg_hash) = @_ ;
161     # just forward msg to client, but dont forget to split off 'gosa_' in header
162     my $source = @{$msg_hash->{source}}[0];
163     my $target = @{$msg_hash->{target}}[0];
165     my $out_hash = &create_xml_hash("detect_hardware", $source, $target);
166     my $out_msg = &create_xml_string($out_hash);
168     my @out_msg_l = ( $out_msg );
169     return @out_msg_l;
174 sub trigger_reload_ldap_config {
175     my ($msg, $msg_hash) = @_ ;
176     my $target = @{$msg_hash->{target}}[0];
178     my $out_hash = &create_xml_hash("reload_ldap_config", $main::server_address, $main::server_address, $target);
179     my $out_msg = &create_xml_string($out_hash);
180     my @out_msg_l;
181     push(@out_msg_l, $out_msg);
182     return @out_msg_l;
186 sub set_activated_for_installation {
187     my ($msg, $msg_hash) = @_;
189     my $header = @{$msg_hash->{header}}[0];
190     my $source = @{$msg_hash->{source}}[0];
191     my $target = @{$msg_hash->{target}}[0];
193     my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $target);
194     my $out_msg = &create_xml_string($out_hash);
196     my @out_msg_l = ( $out_msg );
197     return @out_msg_l;
201 sub trigger_action_faireboot {
202     my ($msg, $msg_hash) = @_;
203     $msg =~ s/<header>gosa_trigger_action_faireboot<\/header>/<header>trigger_action_faireboot<\/header>/;
204     my @out_msg_l = ($msg);  
205     return @out_msg_l;
209 sub trigger_action_localboot {
210     my ($msg, $msg_hash) = @_;
211     $msg =~ s/<header>gosa_trigger_action_localboot<\/header>/<header>trigger_action_localboot<\/header>/;
212     my @out_msg_l = ($msg);  
213     return @out_msg_l;
217 sub trigger_action_halt {
218     my ($msg, $msg_hash) = @_;
219     $msg =~ s/<header>gosa_trigger_action_halt<\/header>/<header>trigger_action_halt<\/header>/;
220     my @out_msg_l = ($msg);  
221     return @out_msg_l;
225 sub trigger_action_reboot {
226     my ($msg, $msg_hash) = @_;
227     $msg =~ s/<header>gosa_trigger_action_reboot<\/header>/<header>trigger_action_reboot<\/header>/;
228     my @out_msg_l = ($msg);  
229     return @out_msg_l;
233 sub trigger_action_memcheck {
234     my ($msg, $msg_hash) = @_ ;
235     $msg =~ s/<header>gosa_trigger_action_memcheck<\/header>/<header>trigger_action_memcheck<\/header>/;
236     my @out_msg_l = ($msg);  
237     return @out_msg_l;
241 sub trigger_action_reinstall {
242     my ($msg, $msg_hash) = @_;
243     $msg =~ s/<header>gosa_trigger_action_reinstall<\/header>/<header>trigger_action_reinstall<\/header>/;
244     my @out_msg_l = ($msg);  
245     return @out_msg_l;
249 sub trigger_action_update {
250     my ($msg, $msg_hash) = @_;
251     $msg =~ s/<header>gosa_trigger_action_update<\/header>/<header>trigger_action_update<\/header>/;
252     my @out_msg_l = ($msg);  
253     return @out_msg_l;
257 sub trigger_action_instant_update {
258     my ($msg, $msg_hash) = @_;
259     $msg =~ s/<header>gosa_trigger_action_instant_update<\/header>/<header>trigger_action_instant_update<\/header>/;
260     my @out_msg_l = ($msg);  
261     return @out_msg_l;
265 sub trigger_action_sysinfo {
266     my ($msg, $msg_hash) = @_;
267     $msg =~ s/<header>gosa_trigger_action_sysinfo<\/header>/<header>trigger_action_sysinfo<\/header>/;
268     my @out_msg_l = ($msg);  
269     return @out_msg_l;
273 sub new_key_for_client {
274     my ($msg, $msg_hash) = @_;
275     $msg =~ s/<header>gosa_new_key_for_client<\/header>/<header>new_key<\/header>/;
276     my @out_msg_l = ($msg);  
277     return @out_msg_l;
281 sub trigger_action_rescan {
282     my ($msg, $msg_hash) = @_;
283     $msg =~ s/<header>gosa_trigger_action_rescan<\/header>/<header>trigger_action_rescan<\/header>/;
284     my @out_msg_l = ($msg);  
285     return @out_msg_l;
289 sub trigger_action_wake {
290     my ($msg, $msg_hash) = @_;
291     my %data = ( 'macAddress'  => \@{$msg_hash->{macAddress}} );
292     my $out_msg = &build_msg("trigger_wake", "GOSA", "KNOWN_SERVER", \%data);
293     my @out_msg_l = ($out_msg);  
294     return @out_msg_l;
297 1;