X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fmodules%2FGosaSupportDaemon.pm;h=ccdcea1517ec4f27a3cbe1f20292858873d0e0a8;hb=9d85688cf3be4d655cfce7b6944d693bea42384e;hp=496ce8d4edb0d015cff3f794aef0bd5473bdfec4;hpb=180195c38b58b9c63b5842eb324af5de8e92ffa1;p=gosa.git diff --git a/gosa-si/modules/GosaSupportDaemon.pm b/gosa-si/modules/GosaSupportDaemon.pm index 496ce8d4e..ccdcea151 100644 --- a/gosa-si/modules/GosaSupportDaemon.pm +++ b/gosa-si/modules/GosaSupportDaemon.pm @@ -2,7 +2,7 @@ package GOSA::GosaSupportDaemon; use Exporter; @ISA = qw(Exporter); -@EXPORT = qw(create_xml_hash send_msg_hash2address get_content_from_xml_hash add_content2xml_hash create_xml_string encrypt_msg decrypt_msg create_ciphering transform_msg2hash get_time send_msg get_where_statement get_select_statement get_update_statement get_limit_statement get_orderby_statement); +@EXPORT = qw(create_xml_hash get_content_from_xml_hash add_content2xml_hash create_xml_string encrypt_msg decrypt_msg create_ciphering transform_msg2hash get_time send_msg get_where_statement get_select_statement get_update_statement get_limit_statement get_orderby_statement); use strict; use warnings; @@ -30,10 +30,6 @@ END {} my $xml = new XML::Simple(); -sub process_incoming_msg { - return; -} - sub daemon_log { my ($msg, $level) = @_ ; &main::daemon_log($msg, $level); @@ -62,6 +58,22 @@ sub create_xml_hash { } +#=== FUNCTION ================================================================ +# NAME: create_xml_string +# PARAMETERS: xml_hash - hash - hash from function create_xml_hash +# RETURNS: xml_string - string - xml string representation of the hash +# DESCRIPTION: transform the hash to a string using XML::Simple module +#=============================================================================== +sub create_xml_string { + my ($xml_hash) = @_ ; + my $xml_string = $xml->XMLout($xml_hash, RootName => 'xml'); + #$xml_string =~ s/[\n]+//g; + #daemon_log("create_xml_string:",7); + #daemon_log("$xml_string\n", 7); + return $xml_string; +} + + sub transform_msg2hash { my ($msg) = @_ ; my $hash = $xml->XMLin($msg, ForceArray=>1); @@ -93,66 +105,6 @@ sub transform_msg2hash { } -#=== FUNCTION ================================================================ -# NAME: send_msg_hash2address -# PARAMETERS: msg_hash - hash - xml_hash created with function create_xml_hash -# PeerAddr string - socket address to send msg -# PeerPort string - socket port, if not included in socket address -# RETURNS: nothing -# DESCRIPTION: ???? -#=============================================================================== -sub send_msg_hash2address ($$$){ - my ($msg_hash, $address, $passwd) = @_ ; - - # fetch header for logging - my $header = @{$msg_hash->{header}}[0]; - - # generate xml string - my $msg_xml = &create_xml_string($msg_hash); - - # create ciphering object - my $act_cipher = &create_ciphering($passwd); - - # encrypt xml msg - my $crypted_msg = &encrypt_msg($msg_xml, $act_cipher); - - # opensocket - my $socket = &open_socket($address); - if(not defined $socket){ - daemon_log("cannot send '$header'-msg to $address , server not reachable", 5); - return 1; - } - - # send xml msg - print $socket $crypted_msg."\n"; - - close $socket; - - daemon_log("send '$header'-msg to $address", 1); - daemon_log("message:\n$msg_xml", 8); - return 0; -} - - -#=== FUNCTION ================================================================ -# NAME: get_content_from_xml_hash -# PARAMETERS: xml_ref - ref - reference of the xml hash -# element - string - key of the value you want -# RETURNS: value - string - if key is either header, target or source -# value - list - for all other keys in xml hash -# DESCRIPTION: -#=============================================================================== -sub get_content_from_xml_hash { - my ($xml_ref, $element) = @_ ; - #my $result = $main::xml_ref->{$element}; - #if( $element eq "header" || $element eq "target" || $element eq "source") { - # return @$result[0]; - #} - my @result = $xml_ref->{$element}; - return \@result; -} - - #=== FUNCTION ================================================================ # NAME: add_content2xml_hash # PARAMETERS: xml_ref - ref - reference to a hash from function create_xml_hash @@ -173,22 +125,6 @@ sub add_content2xml_hash { } -#=== FUNCTION ================================================================ -# NAME: create_xml_string -# PARAMETERS: xml_hash - hash - hash from function create_xml_hash -# RETURNS: xml_string - string - xml string representation of the hash -# DESCRIPTION: transform the hash to a string using XML::Simple module -#=============================================================================== -sub create_xml_string { - my ($xml_hash) = @_ ; - my $xml_string = $xml->XMLout($xml_hash, RootName => 'xml'); - #$xml_string =~ s/[\n]+//g; - #daemon_log("create_xml_string:",7); - #daemon_log("$xml_string\n", 7); - return $xml_string; -} - - #=== FUNCTION ================================================================ # NAME: encrypt_msg # PARAMETERS: msg - string - message to encrypt @@ -197,16 +133,31 @@ sub create_xml_string { # DESCRIPTION: crypts the incoming message with the Crypt::Rijndael module #=============================================================================== sub encrypt_msg { - my ($msg, $my_cipher) = @_; - if(not defined $my_cipher) { print "no cipher object\n"; } - $msg = "\0"x(16-length($msg)%16).$msg; +# my ($msg, $my_cipher) = @_; +# if(not defined $my_cipher) { print "no cipher object\n"; } +# { +# use bytes; +# $msg = "\0"x(16-length($msg)%16).$msg; +# } +# $msg = $my_cipher->encrypt($msg); +# chomp($msg = &encode_base64($msg)); +# +# # there are no newlines allowed inside msg +# $msg=~ s/\n//g; +# +# return $msg; + my ($msg, $key) = @_; + my $my_cipher = &create_ciphering($key); + { + use bytes; + $msg = "\0"x(16-length($msg)%16).$msg; + } $msg = $my_cipher->encrypt($msg); chomp($msg = &encode_base64($msg)); - # there are no newlines allowed inside msg $msg=~ s/\n//g; - return $msg; + } @@ -218,10 +169,17 @@ sub encrypt_msg { # DESCRIPTION: decrypts the incoming message with the Crypt::Rijndael module #=============================================================================== sub decrypt_msg { - my ($msg, $my_cipher) = @_ ; - if(defined $msg && defined $my_cipher) { - $msg = &decode_base64($msg); - } +# my ($msg, $my_cipher) = @_ ; +# +# if(defined $msg && defined $my_cipher) { +# $msg = &decode_base64($msg); +# } +# $msg = $my_cipher->decrypt($msg); +# $msg =~ s/\0*//g; +# return $msg; + my ($msg, $key) = @_ ; + $msg = &decode_base64($msg); + my $my_cipher = &create_ciphering($key); $msg = $my_cipher->decrypt($msg); $msg =~ s/\0*//g; return $msg; @@ -254,23 +212,23 @@ sub create_ciphering { # RETURNS: socket IO::Socket::INET # DESCRIPTION: open a socket to PeerAddr #=============================================================================== -sub open_socket { - my ($PeerAddr, $PeerPort) = @_ ; - if(defined($PeerPort)){ - $PeerAddr = $PeerAddr.":".$PeerPort; - } - my $socket; - $socket = new IO::Socket::INET(PeerAddr => $PeerAddr, - Porto => "tcp", - Type => SOCK_STREAM, - Timeout => 5, - ); - if(not defined $socket) { - return; - } - &daemon_log("open_socket: $PeerAddr", 7); - return $socket; -} +#sub open_socket { +# my ($PeerAddr, $PeerPort) = @_ ; +# if(defined($PeerPort)){ +# $PeerAddr = $PeerAddr.":".$PeerPort; +# } +# my $socket; +# $socket = new IO::Socket::INET(PeerAddr => $PeerAddr, +# Porto => "tcp", +# Type => SOCK_STREAM, +# Timeout => 5, +# ); +# if(not defined $socket) { +# return; +# } +# &daemon_log("open_socket: $PeerAddr", 7); +# return $socket; +#} sub get_time { @@ -298,8 +256,8 @@ sub get_time { # package # RETURNS: nothing #=============================================================================== -sub send_msg ($$$$$) { - my ($header, $from, $to, $data, $hostkey) = @_; +sub send_msg ($$$$) { + my ($header, $from, $to, $data) = @_; my $out_hash = &create_xml_hash($header, $from, $to); @@ -310,17 +268,20 @@ sub send_msg ($$$$$) { &add_content2xml_hash($out_hash, $key, $value); } } - - &send_msg_hash2address($out_hash, $to, $hostkey); + my $out_msg = &create_xml_string($out_hash); + return $out_msg; } sub get_where_statement { - my ($msg, $msg_hash)= @_; + my ($msg, $msg_hash) = @_; my $error= 0; my $clause_str= ""; - if( (not exists $msg_hash->{'where'}) || (not exists @{$msg_hash->{'where'}}[0]->{'clause'}) ) { $error++; }; + if( (not exists $msg_hash->{'where'}) || (not exists @{$msg_hash->{'where'}}[0]->{'clause'}) ) { + $error++; + } + if( $error == 0 ) { my @clause_l; my @where = @{@{$msg_hash->{'where'}}[0]->{'clause'}};