18
18
# along with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
#
20
20
21
- set -e
21
+ # Exit hook on subcommand error or unset variable
22
+ set -Eeuo pipefail
22
23
23
24
tmp_backup_dir_file=" /root/slapd-backup-dir.txt"
24
25
@@ -101,13 +102,14 @@ do_pre_regen() {
101
102
rm -f " $tmp_backup_dir_file "
102
103
103
104
# Define if we need to migrate from hdb to mdb
104
- curr_backend=$( grep ' ^database' /etc/ldap/slapd.conf 2> /dev/null | awk ' {print $2}' )
105
- if [ -e /etc/ldap/slapd.conf ] && [ -n " $curr_backend " ] \
106
- && [ $curr_backend != ' mdb' ]; then
107
- backup_dir=" /var/backups/dc=yunohost,dc=org-${curr_backend} -$( date +%s) "
108
- mkdir -p " $backup_dir "
109
- slapcat -b dc=yunohost,dc=org -l " ${backup_dir} /dc=yunohost-dc=org.ldif"
110
- echo " $backup_dir " > " $tmp_backup_dir_file "
105
+ if [ -e /etc/ldap/slapd.conf ]; then
106
+ curr_backend=$( grep ' ^database' /etc/ldap/slapd.conf | awk ' {print $2}' )
107
+ if [ " $curr_backend " != ' mdb' ]; then
108
+ backup_dir=" /var/backups/dc=yunohost,dc=org-${curr_backend} -$( date +%s) "
109
+ mkdir -p " $backup_dir "
110
+ slapcat -b dc=yunohost,dc=org -l " ${backup_dir} /dc=yunohost-dc=org.ldif"
111
+ echo " $backup_dir " > " $tmp_backup_dir_file "
112
+ fi
111
113
fi
112
114
113
115
# create needed directories
@@ -121,8 +123,8 @@ do_pre_regen() {
121
123
cp -a ldap.conf " $ldap_dir "
122
124
cp -a sudo.ldif mailserver.ldif permission.ldif " $schema_dir "
123
125
124
- mkdir -p ${ pending_dir} /etc/systemd/system/slapd.service.d/
125
- cp systemd-override.conf ${ pending_dir} /etc/systemd/system/slapd.service.d/ynh-override.conf
126
+ mkdir -p " $ pending_dir /etc/systemd/system/slapd.service.d/"
127
+ cp systemd-override.conf " $ pending_dir /etc/systemd/system/slapd.service.d/ynh-override.conf"
126
128
127
129
install -D -m 644 slapd.default " ${pending_dir} /etc/default/slapd"
128
130
}
@@ -139,7 +141,9 @@ do_post_regen() {
139
141
140
142
# Fix weird scenarios where /etc/sudo-ldap.conf doesn't exists (yet is supposed to be
141
143
# created by the sudo-ldap package) : https://github.com/YunoHost/issues/issues/2091
142
- [ -e /etc/sudo-ldap.conf ] || ln -s /etc/ldap/ldap.conf /etc/sudo-ldap.conf
144
+ if [ ! -e /etc/sudo-ldap.conf ]; then
145
+ ln -s /etc/ldap/ldap.conf /etc/sudo-ldap.conf
146
+ fi
143
147
144
148
# If we changed the systemd ynh-override conf
145
149
if echo " $regen_conf_files " | sed ' s/,/\n/g' | grep -q " ^/etc/systemd/system/slapd.service.d/ynh-override.conf$" ; then
@@ -162,19 +166,23 @@ objectClass: top"
162
166
nscd -i group
163
167
fi
164
168
165
- [ -z "$regen_conf_files " ] && exit 0
169
+ if [ -z "$regen_conf_files " ]; then
170
+ exit 0
171
+ fi
166
172
167
173
# regenerate LDAP config directory from slapd.conf
168
174
echo "Regenerate LDAP config directory from config.ldif"
169
175
_regenerate_slapd_conf
170
176
171
177
# If there's a backup, re-import its data
172
- backup_dir=$( cat " $tmp_backup_dir_file " 2> /dev/null || true)
173
- if [[ -n "$backup_dir " && -f "${backup_dir} /dc=yunohost-dc=org.ldif" ]]; then
174
- # regenerate LDAP config directory and import database as root
175
- echo "Import the database using slapadd"
176
- slapadd -F /etc/ldap/slapd.d -b dc=yunohost,dc=org -l "${backup_dir} /dc=yunohost-dc=org.ldif"
177
- chown -R openldap:openldap /var/lib/ldap 2>&1
178
+ if [ -f "$tmp_backup_dir_file " ]; then
179
+ backup_dir=$( cat " $tmp_backup_dir_file " )
180
+ if [[ -n "$backup_dir " && -f "${backup_dir} /dc=yunohost-dc=org.ldif" ]]; then
181
+ # regenerate LDAP config directory and import database as root
182
+ echo "Import the database using slapadd"
183
+ slapadd -F /etc/ldap/slapd.d -b dc=yunohost,dc=org -l "${backup_dir} /dc=yunohost-dc=org.ldif"
184
+ chown -R openldap:openldap /var/lib/ldap 2>&1
185
+ fi
178
186
fi
179
187
180
188
echo "Running slapdindex"
@@ -184,4 +192,4 @@ objectClass: top"
184
192
systemctl force-reload slapd
185
193
}
186
194
187
- do_$1 _regen ${@: 2}
195
+ " do_$1 _regen" " ${@: 2} "
0 commit comments