|
Jan Vcelak |
a431c66 |
#!/bin/sh
|
|
Jan Vcelak |
a431c66 |
# Author: Jan Vcelak <jvcelak@redhat.com>
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
934ba14 |
. /usr/libexec/openldap/functions
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
a431c66 |
function help()
|
|
Jan Vcelak |
a431c66 |
{
|
|
Jan Vcelak |
a431c66 |
error "usage: %s [-f config-file] [-F config-dir]\n" "`basename $0`"
|
|
Jan Vcelak |
a431c66 |
exit 2
|
|
Jan Vcelak |
a431c66 |
}
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
a431c66 |
load_sysconfig
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
a431c66 |
while getopts :f:F: opt; do
|
|
Jan Vcelak |
a431c66 |
case "$opt" in
|
|
Jan Vcelak |
a431c66 |
f)
|
|
Jan Vcelak |
a431c66 |
SLAPD_CONFIG_FILE="$OPTARG"
|
|
Jan Vcelak |
a431c66 |
;;
|
|
Jan Vcelak |
a431c66 |
F)
|
|
Jan Vcelak |
a431c66 |
SLAPD_CONFIG_DIR="$OPTARG"
|
|
Jan Vcelak |
a431c66 |
;;
|
|
Jan Vcelak |
a431c66 |
*)
|
|
Jan Vcelak |
a431c66 |
help
|
|
Jan Vcelak |
a431c66 |
;;
|
|
Jan Vcelak |
a431c66 |
esac
|
|
Jan Vcelak |
a431c66 |
done
|
|
Jan Vcelak |
a431c66 |
shift $((OPTIND-1))
|
|
Jan Vcelak |
a431c66 |
[ -n "$1" ] && help
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
a431c66 |
# check source, target
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
a431c66 |
if [ ! -f "$SLAPD_CONFIG_FILE" ]; then
|
|
Jan Vcelak |
a431c66 |
error "Source configuration file '%s' not found." "$SLAPD_CONFIG_FILE"
|
|
Jan Vcelak |
a431c66 |
exit 1
|
|
Jan Vcelak |
a431c66 |
fi
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
8bd3712 |
if grep -iq '^dn: cn=config$' "$SLAPD_CONFIG_FILE"; then
|
|
Jan Vcelak |
8bd3712 |
SLAPD_CONFIG_FILE_FORMAT=ldif
|
|
Jan Vcelak |
8bd3712 |
else
|
|
Jan Vcelak |
8bd3712 |
SLAPD_CONFIG_FILE_FORMAT=conf
|
|
Jan Vcelak |
8bd3712 |
fi
|
|
Jan Vcelak |
8bd3712 |
|
|
Jan Vcelak |
a431c66 |
if [ -d "$SLAPD_CONFIG_DIR" ]; then
|
|
Jan Vcelak |
a431c66 |
if [ `find "$SLAPD_CONFIG_DIR" -maxdepth 0 -empty | wc -l` -eq 0 ]; then
|
|
Jan Vcelak |
a431c66 |
error "Target configuration directory '%s' is not empty." "$SLAPD_CONFIG_DIR"
|
|
Jan Vcelak |
a431c66 |
exit 1
|
|
Jan Vcelak |
a431c66 |
fi
|
|
Jan Vcelak |
a431c66 |
fi
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
a431c66 |
# perform the conversion
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
8dc41a3 |
tmp_convert=`mktemp --tmpdir=/var/run/openldap`
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
a431c66 |
if [ `id -u` -eq 0 ]; then
|
|
Jan Vcelak |
a431c66 |
install -d --owner $SLAPD_USER --group `id -g $SLAPD_USER` --mode 0700 "$SLAPD_CONFIG_DIR" &>>$tmp_convert
|
|
Jan Vcelak |
8bd3712 |
if [ $SLAPD_CONFIG_FILE_FORMAT = ldif ]; then
|
|
Jan Vcelak |
8bd3712 |
run_as_ldap "/usr/sbin/slapadd -F \"$SLAPD_CONFIG_DIR\" -n 0 -l \"$SLAPD_CONFIG_FILE\"" &>>$tmp_convert
|
|
Jan Vcelak |
8bd3712 |
else
|
|
Jan Vcelak |
8bd3712 |
run_as_ldap "/usr/sbin/slaptest -f \"$SLAPD_CONFIG_FILE\" -F \"$SLAPD_CONFIG_DIR\"" &>>$tmp_convert
|
|
Jan Vcelak |
8bd3712 |
fi
|
|
Jan Vcelak |
a431c66 |
retcode=$?
|
|
Jan Vcelak |
a431c66 |
else
|
|
Jan Vcelak |
a431c66 |
error "You are not root! Permission will not be set."
|
|
Jan Vcelak |
a431c66 |
install -d --mode 0700 "$SLAPD_CONFIG_DIR" &>>$tmp_convert
|
|
Jan Vcelak |
8bd3712 |
if [ $SLAPD_CONFIG_FILE_FORMAT = ldif ]; then
|
|
Jan Vcelak |
8bd3712 |
/usr/sbin/slapadd -F "$SLAPD_CONFIG_DIR" -n 0 -l "$SLAPD_CONFIG_FILE" &>>$tmp_convert
|
|
Jan Vcelak |
8bd3712 |
else
|
|
Jan Vcelak |
8bd3712 |
/usr/sbin/slaptest -f "$SLAPD_CONFIG_FILE" -F "$SLAPD_CONFIG_DIR" &>>$tmp_convert
|
|
Jan Vcelak |
8bd3712 |
fi
|
|
Jan Vcelak |
a431c66 |
retcode=$?
|
|
Jan Vcelak |
a431c66 |
fi
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
a431c66 |
if [ $retcode -ne 0 ]; then
|
|
Jan Vcelak |
a431c66 |
error "Configuration conversion failed:"
|
|
Jan Vcelak |
a431c66 |
cat $tmp_convert >&2
|
|
Jan Vcelak |
a431c66 |
fi
|
|
Jan Vcelak |
a431c66 |
|
|
Jan Vcelak |
a431c66 |
rm $tmp_convert
|
|
Jan Vcelak |
a431c66 |
exit $retcode
|