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