#!/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 # # The generated LDIF is printed to stdout. # if [ -z "$1" ]; then echo 'usage: schema2ldif ' 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 "" } ' "$@"