summaryrefslogtreecommitdiff
path: root/ldap/mkldapdb
blob: 833827a1d12bd5178297fb77b0da3e5b8b1e230c (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. if [ -r /etc/local-ORG/orgname ]; then
  9. orgname="$(head -n 1 /etc/local-ORG/orgname)"
  10. fi
  11. # config defaults as of slapd 2.4.10-3
  12. backend="hdb"
  13. # Ensure all required values are properly resolved
  14. for var in basedn dnsdomain orgname backend; do
  15. if [ -z "`eval echo '$'$var`" ]; then
  16. echo 1>&2 "ERROR: Required variable '$var' missing. Exiting...!"
  17. exit 1
  18. fi
  19. done
  20. confskel=/usr/share/slapd/slapd.conf
  21. masterdir=/etc/local-COMMON/ldap/db
  22. tempdir=`mktemp -dt slapd.XXXXXX`
  23. sed <"$confskel" >"$tempdir/slapd.conf" \
  24. -e "s/@BACKEND@/$backend/g" \
  25. -e "s/@SUFFIX@/$basedn/g" \
  26. -e "s/@ADMIN@/cn=admin,$basedn/g"
  27. for section in core base horde; do
  28. sed <"$masterdir/$section.ldif.in" >"$tempdir/$section.ldif" \
  29. -e "s/@SUFFIX@/$basedn/g" \
  30. -e "s/@DOMAIN@/$dnsdomain/g" \
  31. -e "s/@ORG@/$orgname/g"
  32. done
  33. for db in passwd group; do
  34. getent $db >"$tempdir/$db.dump"
  35. ( cd /usr/share/migrationtools && ./migrate_passwd.pl "$tempdir/$db.dump" >"$tempdir/$db.ldif" )
  36. done
  37. #invoke-rc.d slapd stop
  38. #slapadd -l "$tempdir/core.ldif"
  39. #invoke-rc.d slapd start
  40. #ldappasswd -x -h localhost -D "cn=admin,$basedn" -S -w supersecretpassword "cn=admin,$basedn"
  41. for section in base horde; do
  42. ldapadd -x -h localhost -D "cn=admin,$basedn" -f "$tempdir/$section.ldif" -W
  43. done
  44. ldappasswd -x -h localhost -D "cn=admin,$basedn" -S -W "cn=horde,ou=DSA,$basedn"