X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fgosa-si-client;h=d9bf2393d29dd576ce5850a5106a87a3e39ecf01;hb=23a95c8513afb2c660b8211d3482b803c27396ff;hp=ff728f2acb316ab392fb4f3473d85b9ff6e09b28;hpb=9d4d4acda30e5fabc439a8fbf3ca8b05b5eff11f;p=gosa.git diff --git a/gosa-si/gosa-si-client b/gosa-si/gosa-si-client index ff728f2ac..d9bf2393d 100755 --- a/gosa-si/gosa-si-client +++ b/gosa-si/gosa-si-client @@ -150,7 +150,7 @@ sub check_cmdline_param () { sub read_configfile { my ($cfg_file, %cfg_defaults) = @_ ; my $cfg; - if( defined( $cfg_file) && ( length($cfg_file) > 0 )) { + if( defined( $cfg_file) && ( (-s $cfg_file) > 0 )) { if( -r $cfg_file ) { $cfg = Config::IniFiles->new( -file => $cfg_file ); } else { @@ -162,7 +162,7 @@ sub read_configfile { foreach my $section (keys %cfg_defaults) { foreach my $param (keys %{$cfg_defaults{ $section }}) { my $pinfo = $cfg_defaults{ $section }{ $param }; - ${@$pinfo[ 0 ]} = $cfg->val( $section, $param, @$pinfo[ 1 ] ); + ${@$pinfo[ 0 ]} = $cfg->val( $section, $param, @$pinfo[ 1 ] ); } } } @@ -221,7 +221,7 @@ sub sig_int_handler { my ($signal) = @_; daemon_log("shutting down gosa-si-client", 1); - system("killall gosa-si-client"); + system("kill `ps -C gosa-si-client -o pid=`"); } $SIG{INT} = \&sig_int_handler; @@ -961,24 +961,10 @@ sub trigger_logged_in_users_report { @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 + # try it in 10 sec again $kernel->delay_set('trigger_logged_in_users_report', 10); } } @@ -992,18 +978,18 @@ sub trigger_logged_in_users_report { # return; #} -#sub generic_file_error { -# my ( $heap, $operation, $errno, $error_string, $wheel_id ) = -# @_[ HEAP, ARG0, ARG1, ARG2, ARG3 ]; -# -# my $service = $heap->{services}->{$wheel_id}; -# daemon_log("ERROR: '$service' watcher $operation error $errno: $error_string", 1); -# daemon_log("ERROR: shutting down '$service' file watcher", 1); -# -# delete $heap->{services}->{$wheel_id}; -# delete $heap->{watchers}->{$wheel_id}; -# return; -#} +sub generic_file_error { + my ( $heap, $operation, $errno, $error_string, $wheel_id ) = + @_[ HEAP, ARG0, ARG1, ARG2, ARG3 ]; + + my $service = $heap->{services}->{$wheel_id}; + daemon_log("ERROR: '$service' watcher $operation error $errno: $error_string", 1); + daemon_log("ERROR: shutting down '$service' file watcher", 1); + + delete $heap->{services}->{$wheel_id}; + delete $heap->{watchers}->{$wheel_id}; + return; +} sub fifo_got_record { @@ -1084,19 +1070,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( - # Filename => $file, - # InputEvent => $file_name."_record", + while( my($name, $file) = each %files_to_watch ) { + my $watcher = POE::Wheel::FollowTail->new( + Filename => $file, + InputEvent => $name."_record", # ResetEvent => "file_reset", - # ErrorEvent => "file_error", - # ); - $heap->{tail} = POE::Wheel::Run->new( - Program => [ "/usr/bin/tail", "-f", $file_name ], - StdoutEvent => $file_name."_record", - ); - #$heap->{services}->{ $file_watcher->ID } = $file_name; - #$heap->{watchers}->{ $file_watcher->ID } = $file_watcher; + ErrorEvent => "file_error", + ); +# $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'); } @@ -1282,7 +1268,7 @@ $default_server_key = $server_key; # add gosa-si-server address from config file at first position of server list my $server_check_cfg = Config::IniFiles->new( -file => $cfg_file ); -my $server_check = $server_check_cfg->val( "server", "ip"); +my $server_check = (defined($server_check_cfg))?$server_check_cfg->val( "server", "ip"):undef; if( defined $server_check ) { unshift(@servers, $server_address); my $servers_string = join(", ", @servers);