openldap2/schema2ldif
Howard Guo b455b63585 - Move schema files into tarball addonschema.tar.gz:
ldapns.ldif ldapns.schema rfc2307bis.ldif rfc2307bis.schema
  yast.ldif yast.schema
- Package previously missing schema files in LDIF format:
  amavisd-new.ldif dhcp.ldif dlz.ldif dnszone.ldif samba3.ldif
  sudo.ldif suse-mailserver.ldif (bsc#984691)
- Fix a minor issue in schema2ldif script that led to missing
  attribute in the generated LDIF.

OBS-URL: https://build.opensuse.org/package/show/network:ldap/openldap2?expand=0&rev=161
2016-06-16 11:24:20 +00:00

54 lines
1.2 KiB
Bash

#!/bin/bash
#
# This is a simple tool to convert OpenLDAP Schema files to
# LDIF suitable for usage with OpenLDAP's dynamic configuration
# backend (cn=config)
#
# usage:
# schema2ldif <input file>
#
# The generated LDIF is printed to stdout.
#
if [ -z "$1" ]; then
echo 'usage: schema2ldif <input file>'
exit;
fi
cn=`basename $1 .schema`
echo "dn: cn=$cn,cn=schema,cn=config";
echo "objectclass: olcSchemaConfig";
echo "cn: $cn";
/usr/bin/awk '
BEGIN {
buffer = "";
width=78 ;
}
function wrap(data)
{
if (length(data) > 0) {
do {
print substr(data,0,width);
data = " " substr(data, width+1);
}
while (length(data) > 1 )
};
}
/^[\t ]*$/ {wrap(buffer); buffer=""; print "#"; next; }
/^#.*$/ { wrap(buffer); buffer=""; print $0; next }
/^[\t ]+/ { gsub("^[\t ]+",""); buffer = buffer " " $0; next; }
{
wrap(buffer);
$1 = tolower($1) ;
gsub("^objectclass$","olcObjectclasses:",$1)
gsub("^attributetype$","olcAttributeTypes:",$1)
gsub("^attributetypes$","olcAttributeTypes:",$1)
gsub("^objectidentifier$","olcObjectIdentifier:",$1)
buffer = $0;
}
END { wrap(buffer); print "" }
' "$@"