Code

new function: GOsa can trigger new ldap config supply to client
[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     "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);
55     
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 );
94     
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
229 1;