steffen: server/kolab/kolab kolab_bootstrap,1.26,1.27
cvs at intevation.de
cvs at intevation.de
Wed May 26 01:14:50 CEST 2004
Author: steffen
Update of /kolabrepository/server/kolab/kolab
In directory doto:/tmp/cvs-serv30781/kolab
Modified Files:
kolab_bootstrap
Log Message:
make the bootstrap script check for unwanted running servers by trying to connect. That will hopefully save us some headaches in the future
Index: kolab_bootstrap
===================================================================
RCS file: /kolabrepository/server/kolab/kolab/kolab_bootstrap,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- kolab_bootstrap 25 May 2004 11:56:03 -0000 1.26
+++ kolab_bootstrap 25 May 2004 23:14:47 -0000 1.27
@@ -16,6 +16,7 @@
use vars qw($opt_b);
use URI;
+use Socket;
use IO::File;
use IO::Select;
use Net::LDAP;
@@ -26,10 +27,27 @@
use Sys::Hostname;
use Term::ReadKey;
-my $kolab_prefix = "@l_prefix@";
-#my $kolab_prefix = "/kolab";
+#my $kolab_prefix = "@l_prefix@";
+my $kolab_prefix = "/kolab";
my $kolab_config = $kolab_prefix."/etc/kolab/kolab.conf";
+##### Utility Functions
+
+# Connect to host,port and return 1 on success
+sub tryConnect {
+ my $host = shift;
+ my $port = shift;
+ if ($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
+ die "No port" unless $port;
+ my $iaddr = inet_aton($host) || die "no host: $host";
+ my $paddr = sockaddr_in($port, $iaddr);
+ my $proto = getprotobyname('tcp');
+ socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
+ my $retval = connect(SOCK, $paddr);
+ close( SOCK );
+ return $retval;
+}
+
# Fetch entry from ldap server or create new entry of none exist
sub newOrExistingLDAPEntry {
my $ldap = shift;
@@ -43,6 +61,7 @@
}
}
+##### Read config file
print "\nKOLAB BOOTSTRAP\n\n";
my $fd = IO::File->new($kolab_config, "r")
@@ -100,7 +119,7 @@
}
if ( $is_master eq "true" ) {
- ### Master server setup
+ ##### Master server setup
(my $dummy, my $domain) = split(/\./, $fqdn, 2);
if (!$domain) {
$domain = $fqdn;
@@ -186,6 +205,13 @@
sleep 1;
system("$kolab_prefix/etc/rc openldap stop");
sleep 1;
+
+ # Make sure that no rouge demons are running
+ tryConnect( '127.0.0.1', 389 ) && die "A process is already listening to port 389 (ldap)\n"
+ ."Please stop any running ldap server and bootstrap again\n";
+ tryConnect( '127.0.0.1', 9999 ) && die "A process is already listening to port 9999 (kolabd)\n"
+ ."Please stop any running kolabd and bootstrap again\n";
+
my $tmpl = IO::File->new("$kolab_prefix/etc/kolab/slapd.conf.template", "r") || die "could not read $kolab_prefix/etc/kolab/slapd.conf.template";
my $slpd = IO::File->new("$kolab_prefix/etc/openldap/slapd.conf","w+") || die "could not write to $kolab_prefix/etc/openldap/slapd.conf";
chmod (0640,"$kolab_prefix/etc/openldap/slapd.conf");
@@ -356,8 +382,8 @@
}
}
} else {
- ## Slave server setup
- ## For now we just connect to the remote slapd
+ ##### Slave server setup
+ # For now we just connect to the remote slapd
SLAVESTART:
print "Now some information about the master LDAP server is required:\n\n";
print "URI of master LDAP server: ";
More information about the commits
mailing list