Code

Updated table summary
[gosa.git] / gosa-si / modules / GosaSupportDaemon.pm
index 4c46c58e26fc43b649f456a11505c1d6e0e1f59d..7d769c08ad6ff4e302a900203e214f955cb2b16c 100644 (file)
@@ -46,6 +46,7 @@ use IO::Socket::INET;
 use Crypt::Rijndael;
 use Digest::MD5  qw(md5 md5_hex md5_base64);
 use MIME::Base64;
+use XML::Quote qw(:all);
 use XML::Simple;
 use Data::Dumper;
 use Net::DNS;
@@ -68,7 +69,7 @@ END {}
 
 ### Start ######################################################################
 
-my $xml = new XML::Simple();
+our $xml = new XML::Simple();
 
 sub daemon_log {
     my ($msg, $level) = @_ ;
@@ -130,7 +131,8 @@ sub _transformHashToString {
                } elsif ( ref $content eq "ARRAY") {
                        $s .= &_transformArrayToString($tag, $content);
                } else {
-                       $s .= "<$tag>".$content."</$tag>";
+                       $content = defined $content ? $content : "";
+                       $s .= "<$tag>".&xml_quote($content)."</$tag>";
                }
        }
        return $s;
@@ -143,7 +145,8 @@ sub _transformArrayToString {
                if (ref $content eq "HASH") {
                        $s .= "<$tag>".&_transformHashToString($content)."</$tag>";
                } else {
-                       $s .= "<$tag>$content</$tag>";
+                       $content = defined $content ? $content : "";
+                       $s .= "<$tag>".&xml_quote($content)."</$tag>";
                }
        }
        return $s;
@@ -684,6 +687,15 @@ sub get_ip {
 sub get_interface_for_ip {
        my $result;
        my $ip= shift;
+
+       if($ip =~ /^[a-z]/i) {
+               my $ip_address = inet_ntoa(scalar gethostbyname($ip));
+               if(defined($ip_address) && $ip_address =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/) {
+                       # Write ip address to $source variable
+                       $ip = $ip_address;
+               }
+       }
+
        if ($ip && length($ip) > 0) {
                my @ifs= &get_interfaces();
                if($ip eq "0.0.0.0") {