66 lines
1.9 KiB
Bash
Executable File
66 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# set -x (bash debug) if log level is trace
|
|
# https://github.com/osixia/docker-light-baseimage/blob/master/image/tool/log-helper
|
|
log-helper level eq trace && set -x
|
|
|
|
SCHEMAS=$1
|
|
|
|
tmpd=`mktemp -d`
|
|
pushd ${tmpd} >>/dev/null
|
|
|
|
echo "include /etc/ldap/schema/core.schema" >> convert.dat
|
|
echo "include /etc/ldap/schema/cosine.schema" >> convert.dat
|
|
echo "include /etc/ldap/schema/inetorgperson.schema" >> convert.dat
|
|
|
|
if [ -e "/etc/ldap/schema/rfc2307bis.schema" ]; then
|
|
echo "include /etc/ldap/schema/rfc2307bis.schema" >> convert.dat
|
|
else
|
|
echo "include /etc/ldap/schema/nis.schema" >> convert.dat
|
|
fi
|
|
|
|
|
|
for schema in ${SCHEMAS} ; do
|
|
echo "include ${schema}" >> convert.dat
|
|
done
|
|
|
|
slaptest -f convert.dat -F .
|
|
|
|
if [ $? -ne 0 ] ; then
|
|
log-helper error "slaptest conversion failed"
|
|
exit
|
|
fi
|
|
|
|
for schema in ${SCHEMAS} ; do
|
|
fullpath=${schema}
|
|
schema_name=`basename ${fullpath} .schema`
|
|
schema_dir=`dirname ${fullpath}`
|
|
ldif_file=${schema_name}.ldif
|
|
|
|
if [ -e "${schema_dir}/${ldif_file}" ]; then
|
|
log-helper warning "${schema} ldif file ${schema_dir}/${ldif_file} already exists skipping conversion"
|
|
continue
|
|
fi
|
|
|
|
find . -name *\}${schema_name}.ldif -exec mv '{}' ./${ldif_file} \;
|
|
|
|
# TODO: these sed invocations could all be combined
|
|
sed -i "/dn:/ c dn: cn=${schema_name},cn=schema,cn=config" ${ldif_file}
|
|
sed -i "/cn:/ c cn: ${schema_name}" ${ldif_file}
|
|
sed -i '/structuralObjectClass/ d' ${ldif_file}
|
|
sed -i '/entryUUID/ d' ${ldif_file}
|
|
sed -i '/creatorsName/ d' ${ldif_file}
|
|
sed -i '/createTimestamp/ d' ${ldif_file}
|
|
sed -i '/entryCSN/ d' ${ldif_file}
|
|
sed -i '/modifiersName/ d' ${ldif_file}
|
|
sed -i '/modifyTimestamp/ d' ${ldif_file}
|
|
|
|
# slapd seems to be very sensitive to how a file ends. There should be no blank lines.
|
|
sed -i '/^ *$/d' ${ldif_file}
|
|
|
|
mv ${ldif_file} ${schema_dir}
|
|
done
|
|
|
|
popd >>/dev/null
|
|
rm -rf $tmpd
|