Code

* Fixed permission for config files
[gosa.git] / gosa-si / gosa-si-client
index 2ee9b4d0d87eb3fd83f3c992ac571238feae9a6e..86e2f2afef55a5e094e2971e7945934bbef91246 100755 (executable)
@@ -8,7 +8,7 @@
 #  DESCRIPTION:
 #
 #      OPTIONS:  ---
-# REQUIREMENTS:  ---
+# REQUIREMENTS:  libnetaddr-ip-perl
 #         BUGS:  ---
 #        NOTES:
 #       AUTHOR:   (Andreas Rettenberger), <rettenberger@gonicus.de>
@@ -35,7 +35,7 @@ use Data::Dumper;
 use Sys::Syslog qw( :DEFAULT setlogsock);
 use File::Spec;
 use Cwd;
-use NetAddr::IP::Lite;
+use NetAddr::IP;
 use GOSA::GosaSupportDaemon;
 
 
@@ -46,7 +46,7 @@ my ($input_socket, $rbits, $wbits, $ebits, $xml, $known_hosts, $ldap_enabled);
 my (@events);
 
 # default variables
-my $event_dir = "/etc/gosa-si/client/events";
+my $event_dir = "/usr/lib/gosa-si/client/events";
 $known_hosts = {};
 $foreground = 0 ;
 %cfg_defaults =
@@ -142,13 +142,12 @@ sub daemon_log {
 sub check_cmdline_param () {
     my $err_config;
     my $err_counter = 0;
-    if( not defined( $cfg_file)) {
-        #$err_config = "please specify a config file";
-        #$err_counter += 1;
-        my $cwd = getcwd;
-        my $name = "/etc/gosa-si/client.conf";
-        $cfg_file = File::Spec->catfile( $cwd, $name );
-        print STDERR "no conf file specified\n   try to use default: $cfg_file\n";        
+       if(not defined($cfg_file)) {
+               $cfg_file = "/etc/gosa-si/client.conf";
+               if(! -r $cfg_file) {
+                       $err_config = "please specify a config file";
+                       $err_counter += 1;
+               }
     }
     if( $err_counter > 0 ) {
         &usage( "", 1 );
@@ -285,7 +284,7 @@ sub get_mac {
 
                         # A configured MAC Address should always override a guessed value
                         if ($client_mac_address and length($client_mac_address) > 0) {
-                                return $client_mac_address;
+                                $result= $client_mac_address;
                         }
 
                         socket SOCKET, PF_INET, SOCK_DGRAM, getprotobyname('ip')
@@ -363,7 +362,7 @@ sub get_local_mac_for_remote_ip {
                $destination= sprintf("%d.%d.%d.%d", hex($a), hex($b), hex($c), hex($d));
                ($d,$c,$b,$a)=unpack('a2 a2 a2 a2', $Mask);
                $mask= sprintf("%d.%d.%d.%d", hex($a), hex($b), hex($c), hex($d));
-               if(new NetAddr::IP::Lite($server_ip)->within(new NetAddr::IP::Lite($destination, $mask))) {
+               if(new NetAddr::IP($server_ip)->within(new NetAddr::IP($destination, $mask))) {
                        # destination matches route, save mac and exit
                        $result= &get_mac($Iface);
                        last;
@@ -454,14 +453,14 @@ sub register_at_server {
     opendir(DIR, $event_dir) 
         or daemon_log("cannot find directory $event_dir!\ngosa-si-client starts without any accepting events!", 1);
     my $file_name;
-    @events = ();
+    my @events_list = ();
     while(defined($file_name = readdir(DIR))){
         if ($file_name eq "." || $file_name eq "..") {
             next;
         }
-        push(@events, $file_name);
+        push(@events_list, $file_name);
     }
-    my $events = join(",", @events);
+    my $events = join(",", @events_list);
     daemon_log("found events: $events", 1);
 
     # fill in all possible servers
@@ -482,8 +481,6 @@ sub register_at_server {
     my ($rout, $wout, $reg_server);
     foreach my $server (@servers) {
 
-# TODO : server abhängige macadress und ipadresse eintragen
-
         # create msg hash
         my $register_hash = &create_xml_hash("here_i_am", $client_address, $server);
         &add_content2xml_hash($register_hash, "new_passwd", $new_server_passwd);
@@ -971,7 +968,7 @@ sub process_incoming_msg {
 
     my $header = @{$msg_hash->{header}}[0];
     
-    daemon_log("recieve '$header' from $host", 1);
+    daemon_log("receive '$header' from $host", 1);
 #    daemon_log("header from msg:", 1);
 #    daemon_log("\t$header", 1);
 #    daemon_log("msg to process:", 7);
@@ -1160,18 +1157,26 @@ sub new_ldap_config {
     close (file1);
     daemon_log("wrote $pam_config", 5);
 
-    # Create goto.secrets if told so
+    # Create goto.secrets if told so - for compatibility reasons
     if (defined $goto_admin){
            open(file1, "> /etc/goto/secret");
            close(file1);
            chown(0,0, "/etc/goto/secret");
            chmod(0600, "/etc/goto/secret");
            open(file1, "> /etc/goto/secret");
-           print file1 $goto_admin.":".$goto_secret."\n";
+           print file1 "GOTOADMIN=\"$goto_admin\"\nGOTOSECRET=\"$goto_secret\"\n";
            close(file1);
            daemon_log("wrote /etc/goto/secret", 5);
     }
 
+
+    # TODO: write these values to /etc/ldap/ldap-shell.conf
+    # LDAP_BASE=
+    # ADMIN_BASE=
+    # DEPARTMENT=
+    # UNIT_TAG=
+    # UNIT_TAG_FILTER=
+
     return;
 
 }
@@ -1254,10 +1259,11 @@ GetOptions("h|help" => \&usage,
 &read_configfile;
 &check_pid;
 
-
-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: $!”;
+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: $!";
+}
 
 
 # restart daemon log file