X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fgosa-si-server;h=9860dcfc4b7275d1d344e5b5d724b420bc9d7647;hb=7e8dc5687f8e539ba172ca704d73e251b19b3bfb;hp=e5ae6ae283733a635b9b4398b4182f73866acd98;hpb=b382319f3d9e2fce951386ca25e577ada368084f;p=gosa.git diff --git a/gosa-si/gosa-si-server b/gosa-si/gosa-si-server index e5ae6ae28..9860dcfc4 100755 --- a/gosa-si/gosa-si-server +++ b/gosa-si/gosa-si-server @@ -51,8 +51,8 @@ use lib "/usr/lib/gosa-si/modules"; my (%cfg_defaults, $foreground, $verbose, $ping_timeout); my ($bus_activ, $bus, $msg_to_bus, $bus_cipher); my ($server, $server_mac_address); -my ($gosa_server, $job_queue_timeout, $job_queue_table_name, $job_queue_file_name,$job_queue_loop_delay); -my ($known_modules, $known_clients_file_name, $known_server_file_name); +my ($gosa_server, $job_queue_timeout, $job_queue_loop_delay); +my ($known_modules); my ($pid_file, $procid, $pid, $log_file); my ($arp_activ, $arp_fifo); my ($xml); @@ -88,16 +88,27 @@ $bus_activ = "true"; $no_arp = 0; +our $prg= basename($0); + # holds all gosa jobs +my $job_queue_file_name; our $job_db; -our $job_queue_table_name = 'jobs'; +our $job_queue_tn = 'jobs'; # holds all other gosa-sd as well as the gosa-sd-bus +my $known_server_file_name; our $known_server_db; +our $known_server_tn = "known_server"; # holds all registrated clients +my $known_clients_file_name; our $known_clients_db; -our $prg= basename($0); +our $known_clients_tn = "known_clients"; + +# holds all logged in user at each client +my $login_users_file_name; +our $login_users_db; +our $login_users_tn = "login_users"; %cfg_defaults = ( "general" => { @@ -112,6 +123,7 @@ our $prg= basename($0); "port" => [\$server_port, "20081"], "known-clients" => [\$known_clients_file_name, '/var/lib/gosa-si/clients.db' ], "known-servers" => [\$known_server_file_name, '/var/lib/gosa-si/servers.db'], + "login-users" => [\$login_users_file_name, '/var/lib/gosa-si/users.db'], "gosa-unit-tag" => [\$gosa_unit_tag, ""], }, "GOsaPackages" => { @@ -214,15 +226,6 @@ sub daemon_log { } close( LOG_HANDLE ); } -#log into syslog -# my ($msg, $level, $facility) = @_; -# if(not defined $msg) {return} -# if(not defined $level) {$level = "info"} -# if(not defined $facility) {$facility = "LOG_DAEMON"} -# openlog($0, "pid,cons,", $facility); -# syslog($level, $msg); -# closelog; -# return; } @@ -604,10 +607,12 @@ sub create_ciphering { sub encrypt_msg { my ($msg, $key) = @_; my $my_cipher = &create_ciphering($key); + my $len; { - use bytes; - $msg = "\0"x(16-length($msg)%16).$msg; + use bytes; + $len= 16-length($msg)%16; } + $msg = "\0"x($len).$msg; $msg = $my_cipher->encrypt($msg); chomp($msg = &encode_base64($msg)); # there are no newlines allowed inside msg @@ -1059,7 +1064,7 @@ sub watch_for_new_jobs { # check gosa job queue for jobs with executable timestamp my $timestamp = &get_time(); - my $sql_statement = "SELECT * FROM ".$job_queue_table_name. + my $sql_statement = "SELECT * FROM ".$job_queue_tn. " WHERE status='waiting' AND timestamp<'$timestamp'"; my $res = $job_db->select_dbentry( $sql_statement ); @@ -1076,7 +1081,7 @@ sub watch_for_new_jobs { if (not defined $target) { &daemon_log("ERROR: no host found for mac address: $macaddress", 1); &daemon_log("$hit->{xmlmessage}", 8); - my $sql_statement = "UPDATE $job_queue_table_name ". + my $sql_statement = "UPDATE $job_queue_tn ". "SET status='error', result='no host found for mac address' ". "WHERE id='$jobdb_id'"; my $res = $job_db->update_dbentry($sql_statement); @@ -1090,29 +1095,6 @@ sub watch_for_new_jobs { $job_msg =~ s/<\/xml>$/$jobdb_id<\/jobdb_id><\/xml>/; my $func_error = &send_msg_to_target($job_msg, $server_address, $GosaPackages_key, $header); - -# if ( $func_error ) { -#print STDERR "========================================\n"; -#print STDERR "func_error: $func_error\n"; -# -# my $sql_statement = "UPDATE $job_queue_table_name ". -# "SET status='error', targettag='$target' ". -# "WHERE id='$jobdb_id'"; -#print STDERR "sql: $sql_statement\n"; -# my $res = $job_db->update_dbentry($sql_statement); -#print STDERR "res: ".Dumper($res); -# -# } else { -#print STDERR "========================================\n"; -#print STDERR "func_error: $func_error\n"; -# -# my $sql_statement = "UPDATE $job_queue_table_name ". -# "SET status='done', targettag='$target' ". -# "WHERE id='$jobdb_id'"; -#print STDERR "sql: $sql_statement\n"; -# my $res = $job_db->update_dbentry($sql_statement); -#print STDERR "res: ".Dumper($res); -# } } $kernel->delay_set('watch_for_new_jobs',3); @@ -1176,7 +1158,7 @@ if ($no_bus > 0) { #unlink('/tmp/gosa_si_lock*'); # connect to gosa-si job queue -my @job_col_names = ("id INTEGER", "timestamp", "status", "result", "progress", "headertag", "targettag", "xmlmessage", "macaddress"); +my @job_col_names = ("id INTEGER", "timestamp", "status", "result", "progress INTEGER", "headertag", "targettag", "xmlmessage", "macaddress"); $job_db = GOSA::DBsqlite->new($job_queue_file_name); $job_db->create_table('jobs', \@job_col_names); @@ -1190,6 +1172,11 @@ my @server_col_names = ('hostname', 'status', 'hostkey', 'timestamp'); $known_server_db = GOSA::DBsqlite->new($known_server_file_name); $known_server_db->create_table('known_server', \@server_col_names); +# connect to login_usr_db +my @login_users_col_names = ('client', 'user', 'timestamp'); +$login_users_db = GOSA::DBsqlite->new($login_users_file_name); +$login_users_db->create_table("login_users", \@login_users_col_names); + # create xml object used for en/decrypting $xml = new XML::Simple();