Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

107 lines
4.1KB

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