X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fgosa-si-server;h=c9cbfa3ad914dc5e27d0e074e5dce46e4846f66b;hb=80cffb3242742d45a7c9b79ecb6acda570c8f86f;hp=bfb1619a340ea0bd5c4fd49e21283e51a634a3dc;hpb=c5c97327cff7664c1648034538225ca7d5267d56;p=gosa.git diff --git a/gosa-si/gosa-si-server b/gosa-si/gosa-si-server index bfb1619a3..c9cbfa3ad 100755 --- a/gosa-si/gosa-si-server +++ b/gosa-si/gosa-si-server @@ -86,6 +86,7 @@ our (%cfg_defaults, $log_file, $pid_file, $arp_activ, $gosa_unit_tag, $GosaPackages_key, $gosa_ip, $gosa_port, $gosa_timeout, $foreign_server_string, $server_domain, $ServerPackages_key, $foreign_servers_register_delay, + $wake_on_lan_passwd, ); # additional variable which should be globaly accessable @@ -98,6 +99,11 @@ our $forground; our $cfg_file; our ($ldap_uri, $ldap_base, $ldap_admin_dn, $ldap_admin_password, $ldap_server_dn); +# dak variables +our $dak_base_directory; +our $dak_signing_keys_directory; +our $dak_queue_directory; +our $dak_user; # specifies the verbosity of the daemon_log $verbose = 0 ; @@ -225,6 +231,7 @@ my $max_children = 2; "ldap-admin-password" => [\$ldap_admin_password, ""], "gosa-unit-tag" => [\$gosa_unit_tag, ""], "max-clients" => [\$max_clients, 10], + "wol-password" => [\$wake_on_lan_passwd, ""], }, "GOsaPackages" => { "ip" => [\$gosa_ip, "0.0.0.0"], @@ -233,6 +240,10 @@ my $max_children = 2; "job-queue-loop-delay" => [\$job_queue_loop_delay, 3], "messaging-db-loop-delay" => [\$messaging_db_loop_delay, 3], "key" => [\$GosaPackages_key, "none"], + "dak-base" => [\$dak_base_directory, "/srv/archive"], + "dak-keyring" => [\$dak_signing_keys_directory, "/srv/archive/keyrings"], + "dak-queue" => [\$dak_queue_directory, "/srv/archive/queue"], + "dak-user" => [\$dak_user, "deb-dak"], }, "ClientPackages" => { "key" => [\$ClientPackages_key, "none"], @@ -528,7 +539,7 @@ sub check_key_and_xml_validity { sub check_outgoing_xml_validity { - my ($msg) = @_; + my ($msg, $session_id) = @_; my $msg_hash; eval{ @@ -581,8 +592,8 @@ sub check_outgoing_xml_validity { } }; if($@) { - daemon_log("WARNING: outgoing msg is not gosa-si envelope conform", 5); - daemon_log("$@ ".(defined($msg) && length($msg)>0)?$msg:"Empty Message", 8); + daemon_log("$session_id WARNING: outgoing msg is not gosa-si envelope conform: ", 5); + daemon_log("$@ ".(defined($msg) && length($msg)>0)?$msg:"Empty Message", 5); $msg_hash = undef; } @@ -1164,7 +1175,9 @@ sub msg_to_decrypt { $sql = "SELECT * FROM $foreign_clients_tn WHERE (hostname='$target' OR macaddress LIKE '$target')"; $res = $foreign_clients_db->select_dbentry($sql); if (keys(%$res) > 0) { - my $hostname = $res->{1}->{'hostname'}; + my $hostname = $res->{1}->{'hostname'}; + my ($host_ip, $host_port) = split(/:/, $hostname); + my $local_address = &get_local_ip_for_remote_ip($host_ip).":$server_port"; my $regserver = $res->{1}->{'regserver'}; my $sql = "SELECT * FROM $known_server_tn WHERE hostname='$regserver'"; my $res = $known_server_db->select_dbentry($sql); @@ -1337,7 +1350,7 @@ sub process_task { foreach my $answer ( @{$answer_l} ) { # check outgoing msg to xml validity - my $answer_hash = &check_outgoing_xml_validity($answer); + my $answer_hash = &check_outgoing_xml_validity($answer, $session_id); if( not defined $answer_hash ) { next; } $answer_header = @{$answer_hash->{'header'}}[0]; @@ -1450,7 +1463,7 @@ sub session_start { $kernel->yield('create_fai_release_db', $fai_release_tn ); $kernel->yield('watch_for_next_tasks'); $kernel->sig(USR1 => "sig_handler"); - $kernel->sig(USR2 => "create_packages_list_db"); + $kernel->sig(USR2 => "recreate_packages_db"); $kernel->delay_set('watch_for_new_jobs', $job_queue_loop_delay); $kernel->delay_set('watch_for_done_jobs', $job_queue_loop_delay); $kernel->delay_set('watch_for_new_messages', $messaging_db_loop_delay); @@ -1816,7 +1829,7 @@ sub get_ldap_handle { if ($session_id == 0) { daemon_log("$session_id DEBUG: get_ldap_handle invoked without a session_id, create a new ldap_handle", 7); $ldap_handle = Net::LDAP->new( $ldap_uri ); - $ldap_handle->bind($ldap_admin_dn, password => $ldap_admin_password); + $ldap_handle->bind($ldap_admin_dn, password => $ldap_admin_password) or daemon_log("$session_id ERROR: Bind to LDAP $ldap_uri as $ldap_admin_dn failed!"); } else { my $session_reference = $global_kernel->ID_id_to_session($session_id); @@ -1833,7 +1846,7 @@ sub get_ldap_handle { # used handle is still valid - or if we've to reconnect... #if (not exists $heap->{ldap_handle}) { $ldap_handle = Net::LDAP->new( $ldap_uri ); - $ldap_handle->bind($ldap_admin_dn, password => $ldap_admin_password); + $ldap_handle->bind($ldap_admin_dn, password => $ldap_admin_password) or daemon_log("$session_id ERROR: Bind to LDAP $ldap_uri as $ldap_admin_dn failed!"); $heap->{ldap_handle} = $ldap_handle; #} } @@ -1993,6 +2006,16 @@ sub change_goto_state { } +sub run_recreate_packages_db { + my ($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP]; + my $session_id = $session->ID; + &main::daemon_log("$session_id INFO: Recreating FAI Packages DB ('$fai_release_tn', '$fai_server_tn', '$packages_list_tn')", 4); + $kernel->yield('create_fai_release_db'); + $kernel->yield('create_fai_server_db'); + return; +} + + sub run_create_fai_server_db { my ($kernel, $session, $heap, $table_name) = @_[KERNEL, SESSION, HEAP, ARG0]; my $session_id = $session->ID; @@ -2719,7 +2742,6 @@ sub parse_package { close( $PACKAGES ); unlink( "$path.in" ); - &main::daemon_log("$session_id DEBUG: unlink '$path.in'", 1); } @@ -2963,6 +2985,11 @@ daemon_log("0 INFO: found foreign server in config file and DNS: $all_foreign_se # add all found foreign servers to known_server my $act_timestamp = &get_time(); foreach my $foreign_server (@foreign_server_list) { + + # do not add myself to known_server_db + if (&is_local($foreign_server)) { next; } + ###################################### + my $res = $known_server_db->add_dbentry( {table=>$known_server_tn, primkey=>['hostname'], hostname=>$foreign_server, @@ -3014,6 +3041,7 @@ POE::Session->create( create_packages_list_db => \&run_create_packages_list_db, create_fai_server_db => \&run_create_fai_server_db, create_fai_release_db => \&run_create_fai_release_db, + recreate_packages_db => \&run_recreate_packages_db, session_run_result => \&session_run_result, session_run_debug => \&session_run_debug, session_run_done => \&session_run_done,