summaryrefslogtreecommitdiff
path: root/ldap
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2007-06-12 12:04:22 +0000
committerJonas Smedegaard <dr@jones.dk>2007-06-12 12:04:22 +0000
commit62936636ee958a046acf2ee43e93c3014388db41 (patch)
tree508af54a025079db7829888540f0ce32c22d2556 /ldap
parent076d907629005e227320e6d734ab4632f4f11f33 (diff)
Add alternative ldap initialization script.
Diffstat (limited to 'ldap')
-rw-r--r--ldap/db/base.ldif.in16
-rwxr-xr-xldap/mkldapdb47
2 files changed, 63 insertions, 0 deletions
diff --git a/ldap/db/base.ldif.in b/ldap/db/base.ldif.in
new file mode 100644
index 0000000..8b9d263
--- /dev/null
+++ b/ldap/db/base.ldif.in
@@ -0,0 +1,16 @@
+dn: @SUFFIX@
+objectClass: top
+objectClass: dcObject
+objectClass: organization
+o: @DOMAIN@
+dc: @ORG@
+
+dn: ou=people, @SUFFIX@
+objectClass: organizationalUnit
+ou: people
+description: Users in @ORG@
+
+dn: ou=group, @SUFFIX@
+objectClass: organizationalUnit
+ou: group
+description: Groups at @ORG@
diff --git a/ldap/mkldapdb b/ldap/mkldapdb
new file mode 100755
index 0000000..374e4cd
--- /dev/null
+++ b/ldap/mkldapdb
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+set -e
+
+umask 066
+
+# Resolve some defaults from other system config
+basedn="`grep '^BASE\b' /etc/ldap/ldap.conf | sed -e 's/^BASE[[:space:]]\+//'`"
+dnsdomain="`dnsdomainname`"
+orgname=""
+# Grab some defaults from /var/lib/dpkg/info/slapd.postinst
+checkpoint="checkpoint 512 30"
+backend="bdb"
+backendoptions="# For the Debian package we use 2MB as default but be sure to update this\n# value if you have plenty of RAM\ndbconfig set_cachesize 0 2097152 0\n\n# Sven Hartge reported that he had to set this value incredibly high\n# to get slapd running at all. See http:\/\/bugs.debian.org\/303057\n# for more information.\n\n# Number of objects that can be locked at the same time.\ndbconfig set_lk_max_objects 1500\n# Number of locks (both requested and granted)\ndbconfig set_lk_max_locks 1500\n# Number of lockers\ndbconfig set_lk_max_lockers 1500"
+
+if [ -r /etc/local/org.conf ]; then
+ . /etc/local/org.conf
+fi
+
+for var in basedn dnsdomain orgname backend; do
+ if [ -z "`eval echo '$'$var`" ]; then
+ echo 2> "ERROR: Required variable '$var' missing. Exiting...!"
+ exit 1
+ fi
+done
+
+masterdir=/etc/local-COMMON/ldap/db
+tempdir=`mktemp -dt slapd.XXXXXX`
+cfgdir=/etc/ldap
+dbdir=/var/lib/ldap
+
+for section in base; do
+ sed <"$masterdir/$section.ldif.in" >"$tempdir/$section.ldif" \
+ -e "s/@SUFFIX@/$basedn/g" \
+ -e "s/@DOMAIN@/$dnsdomain/g" \
+ -e "s/@ORG@/$orgname/g" \
+ -e "s/@ADMIN@/cn=admin,$basedn/g" \
+ -e "s/@CHECKPOINT@/$checkpoint/g" \
+ -e "s/@BACKEND@/$backend/g" \
+ -e "s/@BACKENDOPTIONS@/$backendoptions/g"
+done
+
+for db in passwd group; do
+ getent $db >"$tempdir/$db.dump"
+ ( cd /usr/share/migrationtools && ./migrate_passwd.pl "$tempdir/$db.dump" >"$tempdir/$db.ldif" )
+done
+