Code

Added workaround for some ipv6 setups.
[gosa.git] / gosa-si / modules / ServerPackages.pm
index 80ce0ada7ea9b34d085b9bdf44aece6257816bdd..884b8f7ffdcab166588d17d6518de15da1a054b2 100644 (file)
@@ -259,30 +259,6 @@ sub get_ip {
        return $result;
 }
 
-#===  FUNCTION  ================================================================
-#         NAME:  open_socket
-#   PARAMETERS:  PeerAddr string something like 192.168.1.1 or 192.168.1.1:10000
-#                [PeerPort] string necessary if port not appended by PeerAddr
-#      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;
-#    }
-#    &main::daemon_log("open_socket to: $PeerAddr", 7);
-#    return $socket;
-#}
 
 #===  FUNCTION  ================================================================
 #         NAME:  register_at_bus
@@ -323,12 +299,10 @@ sub process_incoming_msg {
         &main::daemon_log("function 'process_incoming_msg': got no msg", 7);
     }
 
-    &main::daemon_log("ServerPackages: incoming msg: \n$crypted_msg", 8);
-
     $crypted_msg =~ /^([\s\S]*?)\.(\d{1,3}?)\.(\d{1,3}?)\.(\d{1,3}?)\.(\d{1,3}?)$/;
     $crypted_msg = $1;
        my $host="0.0.0.0";
-       if($1 && $2 && $3 && $4) {
+       if(defined $2 && defined $3 && defined $4 && defined $5) {
                $host = sprintf("%s.%s.%s.%s", $2, $3, $4, $5);
        }
 
@@ -358,11 +332,12 @@ sub process_incoming_msg {
 
     # check wether incoming msg is from a known_server
     if( not defined $msg ) {
-        #my $query_res = $main::known_server_db->select_dbentry( {table=>'known_server'} ); 
         my $sql_statement= "SELECT * FROM known_server";
         my $query_res = $main::known_server_db->select_dbentry( $sql_statement ); 
+
         while( my ($hit_num, $hit) = each %{ $query_res } ) {  
             $host_name = $hit->{hostname};
+
             if( not $host_name =~ "^$host") {
                 next;
             }
@@ -452,7 +427,8 @@ sub process_incoming_msg {
         else { 
             if ($target eq "*") {
                 # msg is for all clients
-                my $query_res = $main::known_clients_db->select_dbentry( {table=>'known_clients'} ); 
+                my $sql_statement = "SELECT * FROM known_clients";
+                my $query_res = $main::known_clients_db->select_dbentry( $sql_statement ); 
                 while( my ($hit_num, $hit) = each %{ $query_res } ) {    
                     $host_name = $hit->{hostname};
                     $host_key = $hit->{hostkey};
@@ -465,15 +441,17 @@ sub process_incoming_msg {
                 my $host_key;
 
 
-                if( not defined $host_key ) {
-                    my $query_res = $main::known_clients_db->select_dbentry( {table=>'known_clients', hostname=>$target} );
+                if( not defined $host_key ) { 
+                    my $sql_statement = "SELECT * FROM known_clients WHERE hostname='$target'";
+                    my $query_res = $main::known_clients_db->select_dbentry( $sql_statement );
                     if( 1 == keys %{$query_res} ) {
                         $host_key = $query_res->{1}->{host_key};
                     }
                 } 
 
                 if( not defined $host_key ) {
-                    my $query_res = $main::known_server_db->select_dbentry( {table=>'known_server', hostname=>$target} );
+                    my $sql_statement = "SELECT * FROM known_server WHERE hostname='$target'";
+                    my $query_res = $main::known_server_db->select_dbentry( $sql_statement );
                     if( 1 == keys %{$query_res} ) {
                         $host_key = $query_res->{1}->{host_key};
                     }
@@ -535,15 +513,14 @@ sub new_passwd {
     my $query_res;
 
     # check known_clients_db
-    $query_res = $main::known_clients_db->select_dbentry( {table=>'known_clients', hostname=>$source_name} );
+    my $sql_statement = "SELECT * FROM known_clients WHERE hostname='$source_name'";
+    $query_res = $main::known_clients_db->select_dbentry( $sql_statement );
     if( 1 == keys %{$query_res} ) {
-        my $update_hash = { table=>'known_clients' };
-        $update_hash->{where} = [ { hostname=>[$source_name] } ];
-        $update_hash->{update} = [ {
-            hostkey=>[$source_key],
-            timestamp=>[&get_time],
-        } ];
-        my $res = $main::known_clients_db->update_dbentry( $update_hash );
+        my $act_time = &get_time;
+        my $sql_statement= "UPDATE known_clients ".
+            "SET hostkey='$source_key', timestamp='$act_time' ".
+            "WHERE hostname='$source_name'";
+        my $res = $main::known_clients_db->update_dbentry( $sql_statement );
 
         my $hash = &create_xml_hash("confirm_new_passwd", $server_address, $source_name);
         &send_msg_hash2address($hash, $source_name, $source_key);
@@ -551,15 +528,14 @@ sub new_passwd {
     }
 
     # check known_server_db
-    $query_res = $main::known_server_db->select_dbentry( {table=>'known_server', hostname=>$source_name } );
+    $sql_statement = "SELECT * FROM known_server WHERE hostname='$source_name'";
+    $query_res = $main::known_server_db->select_dbentry( $sql_statement );
     if( 1 == keys %{$query_res} ) {
-        my $update_hash = { table=>'known_server' };
-        $update_hash->{where} = [ { hostname=>[$source_name] } ];
-        $update_hash->{update} = [ {
-            hostkey=>[$source_key],
-                timestamp=>[&get_time],
-        } ];
-        my $res = $main::known_server_db->update_dbentry( $update_hash );
+        my $act_time = &get_time;
+        my $sql_statement= "UPDATE known_server ".
+            "SET hostkey='$source_key', timestamp='$act_time' ".
+            "WHERE hostname='$source_name'";
+        my $res = $main::known_server_db->update_dbentry( $sql_statement );
 
         my $hash = &create_xml_hash("confirm_new_passwd", $server_address, $source_name);
         &send_msg_hash2address($hash, $source_name, $source_key);
@@ -571,16 +547,6 @@ sub new_passwd {
 }
 
 
-sub send_msg_hash {
-    my ($hash, $host_name, $host_key);
-
-    
-    my $answer = &send_msg_hash2address($hash, $host_name, $host_key);
-    
-    return;
-}
-
-
 #===  FUNCTION  ================================================================
 #         NAME:  here_i_am
 #   PARAMETERS:  msg_hash - hash - hash from function create_xml_hash
@@ -595,10 +561,13 @@ sub here_i_am {
     my $out_hash;
 
     # number of known clients
-    my $nu_clients = keys %{ $main::known_clients_db->select_dbentry( {table=>'known_clients'} ) };
+    my $nu_clients= $main::known_clients_db->count_dbentries('known_clients');
 
     # check wether client address or mac address is already known
-    if (exists $main::known_clients->{$source}) {
+    my $sql_statement= "SELECT * FROM known_clients WHERE hostname='$source'";
+    my $db_res= $main::known_clients_db->select_dbentry( $sql_statement );
+    
+    if ( 1 == keys %{$db_res} ) {
         &main::daemon_log("WARNING: $source is already known as a client", 1);
         &main::daemon_log("WARNING: values for $source are being overwritten", 1);   
         $nu_clients --;
@@ -624,6 +593,7 @@ sub here_i_am {
     # create entry in known_clients
     my $events = @{$msg_hash->{events}}[0];
     
+
     # add entry to known_clients_db
     my $res = $main::known_clients_db->add_dbentry( {table=>'known_clients', 
                                                 primkey=>'hostname',
@@ -647,9 +617,10 @@ sub here_i_am {
     # notify registered client to bus
     if( $bus_activ eq "on") {
         # fetch actual bus key
-        my $query_res = $main::known_server_db->select_dbentry( {table=>'known_server'} );
-        my $hostkey = $query_res->{1}->{hostkey};
-        
+        my $sql_statement= "SELECT * FROM known_server WHERE status='bus'";
+        my $query_res = $main::known_server_db->select_dbentry( $sql_statement );
+        my $hostkey = $query_res->{1}->{'hostkey'};
+
         # send update msg to bus
         $out_hash = &create_xml_hash("new_client", $server_address, $bus_address, $source);
         &send_msg_hash2address($out_hash, $bus_address, $hostkey);
@@ -720,7 +691,8 @@ sub who_has_i_do {
 sub new_ldap_config {
     my ($address) = @_ ;
     
-    my $res = $main::known_clients_db->select_dbentry( { table=>'known_clients', hostname=>$address } );
+    my $sql_statement= "SELECT * FROM known_clients WHERE hostname='$address'";
+    my $res = $main::known_clients_db->select_dbentry( $sql_statement );
 
     # check hit
     my $hit_counter = keys %{$res};