steffen: server/perl-kolab/Kolab-LDAP-Backend-slurpd slurpd.pm, 1.12, 1.13

cvs at intevation.de cvs at intevation.de
Thu Apr 21 00:13:53 CEST 2005


Author: steffen

Update of /kolabrepository/server/perl-kolab/Kolab-LDAP-Backend-slurpd
In directory doto:/tmp/cvs-serv18716/Kolab-LDAP-Backend-slurpd

Modified Files:
	slurpd.pm 
Log Message:
make interface kolabd is listening to configurable -- warning, use non-default values with caution

Index: slurpd.pm
===================================================================
RCS file: /kolabrepository/server/perl-kolab/Kolab-LDAP-Backend-slurpd/slurpd.pm,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- slurpd.pm	7 Nov 2004 23:07:27 -0000	1.12
+++ slurpd.pm	20 Apr 2005 22:13:51 -0000	1.13
@@ -3,7 +3,7 @@
 ##
 ##  Copyright (c) 2003  Code Fusion cc
 ##
-##    Writen by Stuart Bingë  <s.binge at codefusion.co.za>
+##    Writen by Stuart Bing?<s.binge at codefusion.co.za>
 ##    Portions based on work by the following people:
 ##
 ##      (c) 2003  Tassilo Erlewein  <tassilo.erlewein at erfrakon.de>
@@ -233,19 +233,20 @@
     my $pdu;
     my $changes = 0;
 
-    my $port = $Kolab::config{'slurpd_port'};
+    my $listenport = $Kolab::config{'slurpd_port'};
+    my $listenaddr = $Kolab::config{'slurpd_addr'} || "127.0.0.1";
   TRYCONNECT:
-    Kolab::log('SD', "Opening listen server on port $port");
+    Kolab::log('SD', "Opening listen server on $listenaddr:$listenport");
     $server = IO::Socket::INET->new(
-	LocalPort   => $port,
+	LocalPort   => $listenport,
 	Proto       => "tcp",
 	ReuseAddr   => 1,
 	Type        => SOCK_STREAM,
-	LocalAddr   => "127.0.0.1",
+	LocalAddr   => $listenaddr,
 	Listen      => 10
      );
     if (!$server) {
-        Kolab::log('SD', "Unable to open TCP listen server on port $port, Error = $@", KOLAB_ERROR);
+        Kolab::log('SD', "Unable to open TCP listen server on $listenaddr:$listenport, Error = $@", KOLAB_ERROR);
 	sleep 1;
 	goto TRYCONNECT;
     }
@@ -253,9 +254,17 @@
     Kolab::log('SD', 'Listen server opened, waiting for incoming connections');
 
     while ($conn = $server->accept()) {
-      # PENDING: Only accept connections from localhost and 
+      # PENDING: Only accept connections from localhost and
       # hosts listed in the kolabhost attribute
-        Kolab::log('SD', 'Incoming connection accepted');
+
+	my($peerport, $peeraddr) = sockaddr_in($conn->peername);
+	$peeraddr = inet_ntoa( $peeraddr );
+        Kolab::log('SD', "Incoming connection accepted, peer=$peeraddr");
+	if( $Kolab::config{'slurpd_accept_addr'} && $peeraddr ne $Kolab::config{'slurpd_accept_addr'} ) {
+	    Kolab::log('SD', "Unauthorized connection from $peeraddr, closing connection", KOLAB_WARN);
+	    $conn->close;
+	    undef $conn;
+	}
 
         my $select = IO::Select->new($conn);
 
@@ -290,7 +299,7 @@
                 $request = $LDAPRequest->decode($pdu);
                 if (!$request) {
                     Kolab::log('SD', "Unable to decode slurpd request, Error = `" . $LDAPRequest->error . "'", KOLAB_ERROR);
-		    $conn->close;
+		    $conn->close if $conn;
 		    undef $conn;
 		    undef $pdu;
                 } else {
@@ -347,7 +356,7 @@
 
 =head1 AUTHOR
 
-Stuart Bingë, E<lt>s.binge at codefusion.co.zaE<gt>
+Stuart Bing묠E<lt>s.binge at codefusion.co.zaE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 





More information about the commits mailing list