Code

new function for GOsa, trigger_action_faireboot
[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_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);
56     
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 );
95     
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
238 1;