Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

100 Zeilen
3.8KB

  1. #!bin/bash
  2. mkdir -p /var/run/slapd
  3. chown openldap:openldap /var/run/slapd
  4. chmod 755 /var/run/slapd
  5. # if [ -f "${BKP_FILE}" ]; then
  6. # rm -f /var/lib/ldap/*
  7. # /usr/sbin/slapadd -l "${BKP_FILE}"
  8. # chown -R openldap:openldap /var/lib/ldap/*
  9. # else
  10. # echo "Warning: No LDAP backup file found!"
  11. # fi
  12. # https://github.com/moby/moby/issues/8231#issuecomment-63871343
  13. ulimit -n 1024
  14. echo slapd slapd/internal/generated_adminpw password ${LDAP_ADMIN_PWD} | debconf-set-selections \
  15. && echo slapd slapd/internal/adminpw password ${LDAP_ADMIN_PWD} | debconf-set-selections \
  16. && echo slapd slapd/password2 password ${LDAP_ADMIN_PWD} | debconf-set-selections \
  17. && echo slapd slapd/password1 password ${LDAP_ADMIN_PWD} | debconf-set-selections \
  18. && echo slapd slapd/dump_database_destdir string /var/backups/slapd-VERSION | debconf-set-selections \
  19. && echo slapd slapd/domain string ${DOMAIN} | debconf-set-selections \
  20. && echo slapd shared/organization string ${LDAP_ORGANIZATION} | debconf-set-selections \
  21. && echo slapd slapd/purge_database boolean true | debconf-set-selections \
  22. && echo slapd slapd/move_old_database boolean true | debconf-set-selections \
  23. && echo slapd slapd/allow_ldap_v2 boolean false | debconf-set-selections \
  24. && echo slapd slapd/no_configuration boolean false | debconf-set-selections \
  25. && echo slapd slapd/dump_database select when needed | debconf-set-selections \
  26. && dpkg-reconfigure -f noninteractive slapd
  27. echo "Starting server"
  28. /usr/sbin/slapd -h 'ldap:/// ldapi:///' -g openldap -u openldap -F /etc/ldap/slapd.d & # -d 7 &
  29. #pid="$!"
  30. #echo $pid
  31. for i in {30..0}; do
  32. ldapsearch -x -w ${LDAP_ADMIN_PWD} -D cn=admin,dc=${DOMAIN},dc=${LDAP_EXTENSION} -b dc=${DOMAIN},dc=${LDAP_EXTENSION} -LLL # &> /dev/null
  33. r="$?"
  34. echo result $r
  35. # TODO: it returns 49, Bad Credentials,
  36. # but as long as it's not 255 (Can't contact), it's started
  37. #if [ "$r" -eq 0 ]; then
  38. if [ "$r" -ne 255 ]; then
  39. break
  40. fi
  41. echo 'LDAP init process in progress...'
  42. sleep 1
  43. done
  44. if [ "$i" = 0 ]; then
  45. echo >&2 'LDAP init process failed.'
  46. exit 1
  47. fi
  48. echo 'LDAP init process succeeded.'
  49. function replace {
  50. echo $1
  51. sed -i "s/\${LDAP_ORGANIZATION}/${LDAP_ORGANIZATION}/g" $1
  52. sed -i "s/\${LDAP_EXTENSION}/${LDAP_EXTENSION}/g" $1
  53. sed -i "s/\${DOMAIN}/${DOMAIN}/g" $1
  54. sed -i "s/\${VOLUMES_PATH}/${VOLUMES_PATH//\//\\/}/g" $1
  55. sed -i "s/\${LDAP_MAIL_UID}/${LDAP_MAIL_UID}/g" $1
  56. sed -i "s/\${LDAP_NEXTCLOUD_UID}/${LDAP_NEXTCLOUD_UID}/g" $1
  57. sed -i "s/\${LDAP_GITEA_UID}/${LDAP_GITEA_UID}/g" $1
  58. sed -i "s/\${LDAP_HAUK_UID}/${LDAP_HAUK_UID}/g" $1
  59. sed -i "s/\${LDAP_MAIL_PWD}/${LDAP_MAIL_PWD}/g" $1
  60. sed -i "s/\${LDAP_NEXTCLOUD_PWD}/${LDAP_NEXTCLOUD_PWD}/g" $1
  61. sed -i "s/\${LDAP_GITEA_PWD}/${LDAP_GITEA_PWD}/g" $1
  62. sed -i "s/\${LDAP_HAUK_PWD}/${LDAP_HAUK_PWD}/g" $1
  63. }
  64. ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/data/_postfix-book.ldif
  65. for i in `ls /tmp/data/[^_]*.ldif`; do
  66. replace $i
  67. #echo ldapadd -w ${LDAP_ADMIN_PWD} -D "cn=admin,dc=${LDAP_ORGANIZATION},dc=${LDAP_EXTENSION}" -f $i
  68. ldapadd -w ${LDAP_ADMIN_PWD} -D "cn=admin,dc=${LDAP_ORGANIZATION},dc=${LDAP_EXTENSION}" -f $i
  69. done;
  70. # Del 3 ACLs
  71. for i in 1 2 3; do
  72. ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/data/_acl_del.ldif;
  73. done
  74. # Add 2 ACLs
  75. replace /tmp/data/_acl_add_0.ldif;
  76. ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/data/_acl_add_0.ldif
  77. replace /tmp/data/_acl_add_1.ldif;
  78. ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/data/_acl_add_1.ldif
  79. echo "Stopping server"
  80. pid=$(ps -U openldap -o pid=)
  81. #echo $pid
  82. if [ ! -z "$pid" ] && ! kill -s TERM "$pid" ; then
  83. echo >&2 'LDAP stop process failed.'
  84. #exit 1
  85. fi
  86. #ps -e -o user,pid,command
  87. #rm -Rf /tmp/data
  88. echo "Restarting server"
  89. /usr/sbin/slapd -h 'ldap:/// ldapi:///' -g openldap -u openldap -F /etc/ldap/slapd.d -d${DEBUG_LEVEL}