Code

Added configuration file check
[gosa.git] / gosa-si / gosa-si-server
index 45d0b2c1e49ef601d1469f8880ea5cd7f48a7712..7c689a3229ff41ae765363bc48b7bde0cb41f375 100755 (executable)
@@ -52,6 +52,11 @@ use Net::LDAP::Util qw(:escape);
 
 my $modules_path = "/usr/lib/gosa-si/modules";
 use lib "/usr/lib/gosa-si/modules";
+my $server_version = '$HeadURL$:$Rev$';
+my $server_headURL;
+my $server_revision;
+my $server_status;
+
 
 # TODO es gibt eine globale funktion get_ldap_handle
 # - ist in einer session dieses ldap handle schon vorhanden, wird es zurückgegeben
@@ -1380,7 +1385,6 @@ sub watch_for_new_messages {
 
         # create outgoing messages
         my $message_to = @{$hit}[3];
-
         # translate message_to to plain login name
         my @message_to_l = split(/,/, $message_to);  
                my %receiver_h; 
@@ -1453,26 +1457,36 @@ sub watch_for_delivery_messages {
         # reciver is logged in nowhere
         if (not ref(@$res[0]) eq "ARRAY") { next; }    
 
-        # receiver is logged in at host
-        my $receiver_host = @{@{$res}[0]}[0];
-
-        # fetch key to encrypt msg propperly for usr/host
-        $sql = "SELECT * FROM $known_clients_tn WHERE (hostname='$receiver_host')";
-        &daemon_log("0 DEBUG: $sql", 7);
-        $res = $known_clients_db->exec_statement($sql);
-        my $receiver_key = @{@{$res}[0]}[2];
-
-        my %data = ('subject' => $subject, 'message' => $message, 'usr' => $receiver);
-        my $out_msg = &build_msg("usr_msg", $server_address, $receiver_host, \%data ); 
-        my $error_state = &send_msg_to_target($out_msg, $receiver_host, $receiver_key, "usr_msg", 0); 
+               my $send_succeed = 0;
+               foreach my $hit (@$res) {
+                               my $receiver_host = @$hit[0];
+                               &daemon_log("M DEBUG: user '$receiver' is logged in at host '$receiver_host'", 7);
+
+                               # fetch key to encrypt msg propperly for usr/host
+                               my $sql = "SELECT * FROM $known_clients_tn WHERE (hostname='$receiver_host')";
+                               &daemon_log("0 DEBUG: $sql", 7);
+                               my $res = $known_clients_db->exec_statement($sql);
+
+                               # host is already down
+                               if (not ref(@$res[0]) eq "ARRAY") { next; }
+
+                               # host is on
+                               my $receiver_key = @{@{$res}[0]}[2];
+                               my %data = ('subject' => $subject, 'message' => $message, 'usr' => $receiver);
+                               my $out_msg = &build_msg("usr_msg", $server_address, $receiver_host, \%data ); 
+                               my $error = &send_msg_to_target($out_msg, $receiver_host, $receiver_key, "usr_msg", 0); 
+                               if ($error == 0 ) {
+                                       $send_succeed++ ;
+                               }
+               }
 
-        if ($error_state == 0) {
-            # set outgoing msg at db to deliverd
-            my $sql = "UPDATE $messaging_tn SET flag='d' WHERE (id='$msg_id' AND direction='out' AND message_to='$receiver')"; 
-            &daemon_log("0 DEBUG: $sql", 7);
-            my $res = $messaging_db->exec_statement($sql); 
-        }
-    }
+               if ($send_succeed) {
+                               # set outgoing msg at db to deliverd
+                               my $sql = "UPDATE $messaging_tn SET flag='d' WHERE (id='$msg_id' AND direction='out' AND message_to='$receiver')"; 
+                               &daemon_log("0 DEBUG: $sql", 7);
+                               my $res = $messaging_db->exec_statement($sql); 
+               }
+       }
 
     $kernel->delay_set('watch_for_delivery_messages', $messaging_db_loop_delay); 
     return;
@@ -2508,8 +2522,23 @@ if( 0 != $pid ) {
     };
 }
 
+# parse head url and revision from svn
+my $server_status_hash = { 'developmental'=>'revision', 'stable'=>'release'};
+$server_version =~ /^\$HeadURL: (\S+) \$:\$Rev: (\d+) \$$/;
+$server_headURL = defined $1 ? $1 : 'unknown' ;
+$server_revision = defined $2 ? $2 : 'unknown' ;
+if ($server_headURL =~ /\/tag\// || 
+        $server_headURL =~ /\/branches\// ) {
+    $server_status = "stable"; 
+} else {
+    $server_status = "developmental" ;
+}
+
+
 daemon_log(" ", 1);
 daemon_log("$0 started!", 1);
+daemon_log("status: $server_status", 1);
+daemon_log($server_status_hash->{$server_status}.": $server_revision", 1); 
 
 if ($no_bus > 0) {
     $bus_activ = "false"