X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fgosa-si-bus;h=37d54002cfa8899372b8036ca35b34742401e97e;hb=f503dcf64f4bb817e59f8481b91e00786a31e968;hp=f920f5a5be4a1a63f59d5981670900bc9ca725c2;hpb=d2d3cf519c7f06913f2f4b50f0c38e8ebfe891c5;p=gosa.git diff --git a/gosa-si/gosa-si-bus b/gosa-si/gosa-si-bus index f920f5a5b..37d54002c 100755 --- a/gosa-si/gosa-si-bus +++ b/gosa-si/gosa-si-bus @@ -28,33 +28,35 @@ use Time::HiRes qw( gettimeofday ); use POE qw(Component::Server::TCP); use Data::Dumper; use Crypt::Rijndael; -use GOSA::DBsqlite; -use GOSA::GosaSupportDaemon; use IO::Socket::INET; use NetAddr::IP; use XML::Simple; use MIME::Base64; +use File::Basename; use Digest::MD5 qw(md5 md5_hex md5_base64); +use GOSA::GosaSupportDaemon; +use GOSA::DBsqlite; my ($cfg_file, $default_cfg_file, %cfg_defaults, $foreground, $verbose, $pid_file, $procid, $pid, $log_file,); my ($bus_address, $bus_key, $bus_ip, $bus_port, $bus_mac_address); my ($bus_known_server_db, $bus_known_server_file_name, $bus_known_clients_db, $bus_known_clients_file_name); my $xml; +our $prg= basename($0); $foreground = 0 ; %cfg_defaults = ( "general" => { - "log_file" => [\$log_file, "/var/run/".$0.".log"], - "pid_file" => [\$pid_file, "/var/run/".$0.".pid"], - "bus_known_server_file_name" => [\$bus_known_server_file_name, "/var/lib/gosa-si/gosa-si-bus_known_server.db"], - "bus_known_clients_file_name" => [\$bus_known_clients_file_name, "/var/lib/gosa-si/gosa-si-bus_known_clients.db"], + "log_file" => [\$log_file, "/var/run/".$prg.".log"], + "pid_file" => [\$pid_file, "/var/run/".$prg.".pid"], }, -"GOsa-si-bus" => { +"bus" => { "key" => [\$bus_key, "secret-bus-password"], "ip" => [\$bus_ip, "0.0.0.0"], "port" => [\$bus_port, "20080"], - }, + "known-servers" => [\$bus_known_server_file_name, "/var/lib/gosa-si/bus-servers.db"], + "known-clients" => [\$bus_known_clients_file_name, "/var/lib/gosa-si/bus-clients.db"], + }, ); #=== FUNCTIONS = functions ===================================================== @@ -173,7 +175,7 @@ sub check_pid { #=============================================================================== sub usage { print STDERR << "EOF" ; -usage: $0 [-hvf] [-c config] +usage: $prg [-hvf] [-c config] -h : this (help) message -c : config file @@ -213,10 +215,8 @@ sub daemon_log { $month = $monthnames[$month]; $monthday = $monthday < 10 ? $monthday = "0".$monthday : $monthday; $year+=1900; - my $name = $0; - $name =~ s/\.\///; - my $log_msg = "$month $monthday $hours:$minutes:$seconds $name $msg\n"; + my $log_msg = "$month $monthday $hours:$minutes:$seconds $prg $msg\n"; print LOG_HANDLE $log_msg; if( $foreground ) { print STDERR $log_msg; @@ -468,6 +468,9 @@ sub create_passwd { sub create_ciphering { my ($passwd) = @_; + if((!defined($passwd)) || length($passwd)==0) { + $passwd = ""; + } $passwd = substr(md5_hex("$passwd") x 32, 0, 32); my $iv = substr(md5_hex('GONICUS GmbH'),0, 16); my $my_cipher = Crypt::Rijndael->new($passwd , Crypt::Rijndael::MODE_CBC()); @@ -479,10 +482,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 @@ -492,6 +497,7 @@ sub encrypt_msg { sub decrypt_msg { + my ($msg, $key) = @_ ; $msg = &decode_base64($msg); my $my_cipher = &create_ciphering($key); @@ -806,7 +812,7 @@ sub bus_input { } elsif( $target =~ /([0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2})/ ) { # target is a mac address - my $sql_statement = "SELECT * FROM bus_known_clients WHERE macaddress='$target'"; + my $sql_statement = "SELECT * FROM bus_known_clients WHERE macaddress LIKE '$target'"; my $query_res = $bus_known_clients_db->select_dbentry( $sql_statement ); if( 1 > keys(%{$query_res})) { daemon_log("ERROR: there are more than one hosts in bus_known_clients_db with mac address '$target'", 1); @@ -919,9 +925,9 @@ $SIG{CHLD} = 'IGNORE'; # forward error messages to logfile if ( ! $foreground ) { - open STDIN, '/dev/null' or die "Can’t read /dev/null: $!"; - open STDOUT, '>>/dev/null' or die "Can't write to /dev/null: $!"; - open STDERR, '>>/dev/null' or die "Can't write to /dev/null: $!"; + open( STDIN, '+>/dev/null' ); + open( STDOUT, '+>&STDIN' ); + open( STDERR, '+>&STDIN' ); } # Just fork, if we are not in foreground mode