diff --git a/gosa-si/gosa-si-server b/gosa-si/gosa-si-server
index 45d0b2c1e49ef601d1469f8880ea5cd7f48a7712..7c689a3229ff41ae765363bc48b7bde0cb41f375 100755 (executable)
--- a/gosa-si/gosa-si-server
+++ b/gosa-si/gosa-si-server
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
# 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;
# 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;
};
}
+# 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"