X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fgosa-si-client;h=4ce9ceb4c57e283a177826393da0ead47a46cdf4;hb=b77bed70172ae336c5a41e3ea3ece03c4e274bc2;hp=d3328ea86c32088a2d72ad4a31f545b8f61e4c21;hpb=8c7a192fe908c28d7e88d3365d34f6780e0e26ec;p=gosa.git diff --git a/gosa-si/gosa-si-client b/gosa-si/gosa-si-client index d3328ea86..4ce9ceb4c 100755 --- a/gosa-si/gosa-si-client +++ b/gosa-si/gosa-si-client @@ -25,7 +25,7 @@ use Config::IniFiles; use POSIX; use Time::HiRes qw( gettimeofday ); -use POE qw(Component::Server::TCP Wheel::FollowTail); +use POE qw(Component::Server::TCP Wheel::FollowTail Wheel::Run); use IO::Socket::INET; use NetAddr::IP; use Data::Dumper; @@ -76,7 +76,7 @@ $gosa_si_client_fifo = "/var/run/gosa-si-client.socket"; # in function register_at_gosa_si_server, after which period of seconds a new registration should be tried if a registration was # not successful until now -my $delay_set_time = 5; +my $delay_set_time = 10; our $prg= basename($0); # all x seconds the client reports logged_in users to gosa-si-server @@ -613,6 +613,10 @@ sub send_msg_to_target { # encrypt xml msg my $crypted_msg = &encrypt_msg($msg, $encrypt_key); + # xxxxxxxxxxxxxx + + + # opensocket my $socket = &open_socket($address); if( !$socket ) { @@ -742,6 +746,8 @@ sub register_at_gosa_si_server { # send xml hash to server with general server passwd my $res = &send_msg_hash_to_target($register_hash, $server, $default_server_key); + if( $try_to_register >= @servers ) { last; } + # if delivery of registration msg succeed if($res == 0) { # reset try_to_register @@ -752,6 +758,7 @@ sub register_at_gosa_si_server { $client_address= "$client_ip:$client_port"; $client_mac_address = $local_mac; $client_dnsname = $dnsname; + last; # delivery of registration msg failed } else { @@ -761,8 +768,6 @@ sub register_at_gosa_si_server { next; } - if( $try_to_register >= @servers ) { last; } - } # end of while # one circle through all servers finished and no registration succeed @@ -949,36 +954,43 @@ sub trigger_logged_in_users_report { # just do if client is registered already if( $REGISTERED ) { - my $result = qx(/usr/bin/w -hs); - my @res_lines; - - if( defined $result ) { - chomp($result); - @res_lines = split("\n", $result); - } - - my @logged_in_user_list; - foreach my $line (@res_lines) { - chomp($line); - my @line_parts = split(/\s+/, $line); - push(@logged_in_user_list, $line_parts[0]); - } + my $result = qx(/usr/bin/users); + my @logged_in_user_list; + if( defined $result ) { + chomp($result); + @logged_in_user_list = split(/\s/, $result); + } + +# my @res_lines; +# +# if( defined $result ) { +# chomp($result); +# @res_lines = split("\n", $result); +# } +# +# my @logged_in_user_list; +# foreach my $line (@res_lines) { +# chomp($line); +# my @line_parts = split(/\s+/, $line); +# push(@logged_in_user_list, $line_parts[0]); +# } +# system("echo 'CURRENTLY_LOGGED_IN ".join(" ", @logged_in_user_list)."' > /var/run/gosa-si-client.socket"); $kernel->delay_set('trigger_logged_in_users_report', $trigger_logged_in_users_report_delay); } else { # try it in 1 sec again - $kernel->delay_set('trigger_logged_in_users_report', 1); + $kernel->delay_set('trigger_logged_in_users_report', 10); } } -sub generic_file_reset { - my ( $heap, $wheel_id ) = @_[ HEAP, ARG0 ]; - - my $service = $heap->{services}->{$wheel_id}; - daemon_log("INFO: '$service' watching reset", 5); - return; -} +#sub generic_file_reset { +# my ( $heap, $wheel_id ) = @_[ HEAP, ARG0 ]; +# +# my $service = $heap->{services}->{$wheel_id}; +# daemon_log("INFO: '$service' watching reset", 5); +# return; +#} sub generic_file_error { my ( $heap, $operation, $errno, $error_string, $wheel_id ) = @@ -1072,15 +1084,19 @@ sub _start { $kernel->yield('register_at_gosa_si_server'); # install all file watcher defined - while( my($file_name, $file) = each %files_to_watch ) { - my $file_watcher = POE::Wheel::FollowTail->new( + while( my($name, $file) = each %files_to_watch ) { + my $watcher = POE::Wheel::FollowTail->new( Filename => $file, - InputEvent => $file_name."_record", - ResetEvent => "file_reset", + InputEvent => $name."_record", + # ResetEvent => "file_reset", ErrorEvent => "file_error", ); - $heap->{services}->{ $file_watcher->ID } = $file_name; - $heap->{watchers}->{ $file_watcher->ID } = $file_watcher; +# $heap->{tail} = POE::Wheel::Run->new( +# Program => [ "/usr/bin/tail", "-f", $file ], +# StdoutEvent => $file_name."_record", +# ); + $heap->{services}->{ $watcher->ID } = $name; + $heap->{watchers}->{ $watcher->ID } = $watcher; } $kernel->yield('trigger_logged_in_users_report'); }