X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fgosa-si-client;h=b4d3a2e9f31fef10c9c73e1af6baff9d5dc3346f;hb=74f2a05d9b319365b44acce3230cf8e34d6e080d;hp=c11fb7679d47bae6ce8d3deb41d3c6207ba49479;hpb=39598292cc9a788fdb53b2c97d6efd8254c7702f;p=gosa.git diff --git a/gosa-si/gosa-si-client b/gosa-si/gosa-si-client index c11fb7679..b4d3a2e9f 100755 --- a/gosa-si/gosa-si-client +++ b/gosa-si/gosa-si-client @@ -64,21 +64,21 @@ our $REGISTERED_FLAG = 1; "fai_logpath" => [\$fai_logpath, "/var/log/fai/fai.log"], }, "client" => - {"client_port" => [\$client_port, "20083"], - "client_ip" => [\$client_ip, "0.0.0.0"], - "client_mac_address" => [\$client_mac_address, "00:00:00:00:00:00"], + {"port" => [\$client_port, "20083"], + "ip" => [\$client_ip, "0.0.0.0"], + "mac_address" => [\$client_mac_address, "00:00:00:00:00:00"], + "server_domain" => [\$server_domain, ""], "ldap" => [\$ldap_enabled, 1], "ldap_config" => [\$ldap_config, "/etc/ldap/ldap.conf"], "pam_config" => [\$pam_config, "/etc/pam_ldap.conf"], "nss_config" => [\$nss_config, "/etc/libnss_ldap.conf"], }, -"server" => - {"server_ip" => [\$server_ip, "127.0.0.1"], - "server_port" => [\$server_port, "20081"], - "server_key" => [\$server_key, ""], - "server_timeout" => [\$server_timeout, 10], - "server_domain" => [\$server_domain, ""], - "server_key_lifetime" => [\$server_key_lifetime, 600], +"server" => { + "ip" => [\$server_ip, "127.0.0.1"], + "port" => [\$server_port, "20081"], + "key" => [\$server_key, ""], + "timeout" => [\$server_timeout, 10], + "key_lifetime" => [\$server_key_lifetime, 600], }, ); @@ -470,6 +470,7 @@ sub new_ldap_config { my $goto_secret; my $admin_base= ""; my $department= ""; + my $release= ""; my $unit_tag; # Transform input into array @@ -519,6 +520,10 @@ sub new_ldap_config { $unit_tag= $element; next; } + if ($key =~ /^release$/) { + $release= $element; + next; + } } } @@ -589,6 +594,7 @@ sub new_ldap_config { print file1 "LDAP_BASE=\"$ldap_base\"\n"; print file1 "ADMIN_BASE=\"$admin_base\"\n"; print file1 "DEPARTMENT=\"$department\"\n"; + print file1 "RELEASE=\"$release\"\n"; print file1 "UNIT_TAG=\"".(defined $unit_tag ? "$unit_tag" : "")."\"\n"; print file1 "UNIT_TAG_FILTER=\"".(defined $unit_tag ? "(gosaUnitTag=$unit_tag)" : "")."\"\n"; close(file1); @@ -736,40 +742,20 @@ sub get_server_addresses { #=== FUNCTION ================================================================ -# NAME: send_msg_hash2address +# NAME: send_msg_hash_to_target # PARAMETERS: msg_hash - hash - xml_hash created with function create_xml_hash # PeerAddr string - socket address to send msg # PeerPort string - socket port, if not included in socket address # RETURNS: nothing # DESCRIPTION: ???? #=============================================================================== -sub send_msg_hash2address { - my ($msg_hash, $address, $passwd) = @_ ; - - # fetch header for logging - my $header = @{$msg_hash->{header}}[0]; - - # generate xml string - my $msg_xml = &create_xml_string($msg_hash); - - # encrypt xml msg - my $crypted_msg = &encrypt_msg($msg_xml, $passwd); - - # opensocket - my $socket = &open_socket($address); - if(not defined $socket){ - daemon_log("cannot send '$header'-msg to $address , server not reachable", 5); - return 1; - } +sub send_msg_hash_to_target { + my ($msg_hash, $address, $encrypt_key) = @_ ; + my $msg = &create_xml_string($msg_hash); + my $header = @{$msg_hash->{'header'}}[0]; + my $error = &send_msg_to_target($msg, $address, $encrypt_key, $header); - # send xml msg - print $socket $crypted_msg."\n"; - - close $socket; - - daemon_log("send '$header'-msg to $address", 1); - daemon_log("message:\n$msg_xml", 8); - return 0; + return $error; } @@ -808,7 +794,7 @@ sub send_msg_to_target { close $socket; } - return; + return $error; } @@ -842,7 +828,6 @@ sub register_at_gosa_si_server { if( $REGISTERED_FLAG == 1 ) { - # create new passwd and ciphering object for client-server communication $server_key = &create_passwd(); @@ -852,7 +837,12 @@ sub register_at_gosa_si_server { # fetch first gosa-si-server from @servers my $server = shift(@servers); - + if( !$server ) { + daemon_log("no gosa-si-server left in list of servers", 1); + daemon_log("unable to register at a gosa-si-server, force shutdown", 1); + exit(1); + } + # Check if our ip is resolvable - if not: don't try to register my $ip= &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); my $resolver= Net::DNS::Resolver->new; @@ -862,21 +852,17 @@ sub register_at_gosa_si_server { exit(1); } - if( !$server ) { - daemon_log("no gosa-si-server left in list of servers", 1); - daemon_log("unable to register at a gosa-si-server, force shutdown", 1); - exit(1); - } - # create registration msg - my $register_hash = &create_xml_hash("here_i_am", &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)).":".$client_port, $server); + 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", &get_local_mac_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/))); + &add_content2xml_hash($register_hash, "mac_address", $local_mac); &add_content2xml_hash($register_hash, "events", $events); &add_content2xml_hash($register_hash, "gotoHardwareChecksum", $gotoHardwareChecksum); # send xml hash to server with general server passwd - my $res = &send_msg_hash2address($register_hash, $server, $default_server_key); + my $res = &send_msg_hash_to_target($register_hash, $server, $default_server_key); if($res == 0) { # Set fixed client address $client_ip= &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); @@ -887,7 +873,8 @@ sub register_at_gosa_si_server { } } daemon_log("waiting for msg 'register_at_gosa_si_server'",1); - $kernel->delay_set('register_at_gosa_si_server',180); +# $kernel->delay_set('register_at_gosa_si_server', 180); + $kernel->delay_set('register_at_gosa_si_server', 5); # clear old settings and set it again $kernel->delay_set('trigger_new_key', $server_key_lifetime); } @@ -1006,6 +993,7 @@ sub server_input { $error++; } + ###################### # process incoming msg if( $error == 0 ) { @@ -1095,12 +1083,8 @@ daemon_log("$0 started!", 1); # delete old DBsqlite lock files system('rm -f /tmp/gosa_si_lock*gosa-si-client*'); - -# complete client_address +# detect ip and mac address and complete host address $client_address = $client_ip.":".$client_port; - - -# detect own ip and mac address my $network_interface= &get_interface_for_ip($client_ip); $client_mac_address= &get_mac($network_interface); daemon_log("gosa-si-client ip address detected: $client_ip", 1); @@ -1133,19 +1117,26 @@ $xml = new XML::Simple(); $default_server_key = $server_key; -# find all possible gosa-si-servers in DNS -if (defined $server_domain) { +# add gosa-si-server address from config file at first position of server list +if (defined $server_address) { + unshift(@servers, $server_address); + my $servers_string = join(", ", @servers); + daemon_log("found servers in configuration file: $servers_string", 5); +} +else { + if ( !$server_domain) { + daemon_log("ERROR: please specify a gosa-si-server address or a domain in config file", 1); + exit( 1 ); + } my @tmp_servers = &get_server_addresses($server_domain); foreach my $server (@tmp_servers) { unshift(@servers, $server); } + my $servers_string = join(", ", @servers); + daemon_log("found servers in DNS: $servers_string", 5); } -# add gosa-si-server address from config file at first position of server list -if (defined $server_address) { - unshift(@servers, $server_address); -} -my $servers_string = join(", ", @servers); -daemon_log("found servers in configuration file and via DNS: $servers_string", 5); + + POE::Session->create(