X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fgosa-si-client;h=4ce9ceb4c57e283a177826393da0ead47a46cdf4;hb=8c2ee00809a86e8974c584f93e19997d7b73a696;hp=21a7094c799d41e2c481e205c5060a3eeefcb1c3;hpb=98935520f50e303f6ee2774910f9c750e752eb9e;p=gosa.git diff --git a/gosa-si/gosa-si-client b/gosa-si/gosa-si-client index 21a7094c7..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 ) { @@ -706,9 +710,6 @@ sub register_at_gosa_si_server { my $events = join( ",", keys %{$event_hash} ); while(1) { - - if( $try_to_register >= @servers ) { last; } - # fetch first gosa-si-server from @servers my $server = shift(@servers); @@ -724,49 +725,48 @@ sub register_at_gosa_si_server { exit(1); } - # create registration msg - my $local_ip = &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); - my $local_mac = &get_local_mac_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); - my $register_hash = &create_xml_hash("here_i_am", $local_ip.":".$client_port, $server); - &add_content2xml_hash($register_hash, "new_passwd", $server_key); - &add_content2xml_hash($register_hash, "mac_address", $local_mac); - &add_content2xml_hash($register_hash, "events", $events); - &add_content2xml_hash($register_hash, "gotoHardwareChecksum", $gotoHardwareChecksum); - - # Add $HOSTNAME from ENV if force-hostname is set - if( defined($client_force_hostname) && - $client_force_hostname eq "true") { - if(defined($ENV{HOSTNAME}) && - length($ENV{HOSTNAME}) >0 ) { - &add_content2xml_hash($register_hash, "force-hostname", $ENV{HOSTNAME}); - } else { - &main::daemon_log("force-hostname was set to true, but no \$HOSTNAME was found in Environment!",0); - } - } - - # send xml hash to server with general server passwd - my $res = &send_msg_hash_to_target($register_hash, $server, $default_server_key); + # create registration msg + my $local_ip = &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); + my $local_mac = &get_local_mac_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); + my $register_hash = &create_xml_hash("here_i_am", $local_ip.":".$client_port, $server); + &add_content2xml_hash($register_hash, "new_passwd", $server_key); + &add_content2xml_hash($register_hash, "mac_address", $local_mac); + &add_content2xml_hash($register_hash, "events", $events); + &add_content2xml_hash($register_hash, "gotoHardwareChecksum", $gotoHardwareChecksum); + + # Add $HOSTNAME from ENV if force-hostname is set + if( defined($client_force_hostname) && $client_force_hostname eq "true") { + if(defined($ENV{HOSTNAME}) && length($ENV{HOSTNAME}) >0 ) { + &add_content2xml_hash($register_hash, "force-hostname", $ENV{HOSTNAME}); + } else { + &main::daemon_log("force-hostname was set to true, but no \$HOSTNAME was found in Environment!",0); + } + } + + # send xml hash to server with general server passwd + my $res = &send_msg_hash_to_target($register_hash, $server, $default_server_key); - # if delivery of registration msg succeed - if($res == 0) { - # reset try_to_register - $try_to_register = 0; - - # Set fixed client address and mac address - $client_ip= &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); - $client_address= "$client_ip:$client_port"; - $client_mac_address = $local_mac; - $client_dnsname = $dnsname; - - last; - - # delivery of registration msg failed - } else { - $try_to_register++; - # wait 1 sec until trying to register again - sleep(1); - next; - } + if( $try_to_register >= @servers ) { last; } + + # if delivery of registration msg succeed + if($res == 0) { + # reset try_to_register + $try_to_register = 0; + + # Set fixed client address and mac address + $client_ip= &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); + $client_address= "$client_ip:$client_port"; + $client_mac_address = $local_mac; + $client_dnsname = $dnsname; + last; + + # delivery of registration msg failed + } else { + $try_to_register++; + # wait 1 sec until trying to register again + sleep(1); + next; + } } # end of while @@ -954,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 ) = @@ -1077,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'); }