Code

change progress column in jobdb from string to integer
[gosa.git] / gosa-si / gosa-si-server
index e5ae6ae283733a635b9b4398b4182f73866acd98..9860dcfc4b7275d1d344e5b5d724b420bc9d7647 100755 (executable)
@@ -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<\/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();