summaryrefslogtreecommitdiff
path: root/ldap/mkldapdb
blob: cade398143ba2c00a882472fbc51d60c9366fedc (plain)
  1. #!/bin/sh
  2. set -e
  3. umask 066
  4. # Resolve some defaults from other system config
  5. basedn="`grep '^BASE\b' /etc/ldap/ldap.conf | sed -e 's/^BASE[[:space:]]\+//'`"
  6. dnsdomain="`dnsdomainname`"
  7. orgname=""
  8. # Grab some defaults from /var/lib/dpkg/info/slapd.postinst
  9. checkpoint="checkpoint 512 30"
  10. backend="bdb"
  11. 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"
  12. if [ -r /etc/local/org.conf ]; then
  13. . /etc/local/org.conf
  14. fi
  15. for var in basedn dnsdomain orgname backend; do
  16. if [ -z "`eval echo '$'$var`" ]; then
  17. echo 1>&2 "ERROR: Required variable '$var' missing. Exiting...!"
  18. exit 1
  19. fi
  20. done
  21. masterdir=/etc/local-COMMON/ldap/db
  22. tempdir=`mktemp -dt slapd.XXXXXX`
  23. cfgdir=/etc/ldap
  24. dbdir=/var/lib/ldap
  25. for section in base; do
  26. sed <"$masterdir/$section.ldif.in" >"$tempdir/$section.ldif" \
  27. -e "s/@SUFFIX@/$basedn/g" \
  28. -e "s/@DOMAIN@/$dnsdomain/g" \
  29. -e "s/@ORG@/$orgname/g" \
  30. -e "s/@ADMIN@/cn=admin,$basedn/g" \
  31. -e "s/@CHECKPOINT@/$checkpoint/g" \
  32. -e "s/@BACKEND@/$backend/g" \
  33. -e "s/@BACKENDOPTIONS@/$backendoptions/g"
  34. done
  35. for db in passwd group; do
  36. getent $db >"$tempdir/$db.dump"
  37. ( cd /usr/share/migrationtools && ./migrate_passwd.pl "$tempdir/$db.dump" >"$tempdir/$db.ldif" )
  38. done