diff --git a/openldap2-client.spec b/openldap2-client.spec index aa8b893..faf49d8 100644 --- a/openldap2-client.spec +++ b/openldap2-client.spec @@ -50,7 +50,7 @@ Source2: addonschema.tar.gz Source3: DB_CONFIG Source4: sasl-slapd.conf Source5: README.update -Source6: schema2ldif.pl +Source6: schema2ldif Source100: openldap-2.3.37.tar.bz2 Patch: openldap2.dif Patch2: slapd_conf.dif diff --git a/openldap2.spec b/openldap2.spec index 67396a5..41fb40a 100644 --- a/openldap2.spec +++ b/openldap2.spec @@ -50,7 +50,7 @@ Source2: addonschema.tar.gz Source3: DB_CONFIG Source4: sasl-slapd.conf Source5: README.update -Source6: schema2ldif.pl +Source6: schema2ldif Source100: openldap-2.3.37.tar.bz2 Patch: openldap2.dif Patch2: slapd_conf.dif diff --git a/schema2ldif b/schema2ldif new file mode 100644 index 0000000..4ba0afd --- /dev/null +++ b/schema2ldif @@ -0,0 +1,52 @@ +#!/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("^objectidentifier$","olcObjectIdentifier:",$1) + buffer = $0; +} +END { wrap(buffer); print "" } +' "$@" + diff --git a/schema2ldif.pl b/schema2ldif.pl deleted file mode 100644 index c1c2126..0000000 --- a/schema2ldif.pl +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/perl -w -# -# 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.pl -# -# The generated LDIF is printed to stdout. -# - -use strict; -use File::Basename; -use Text::Wrap; - -my $infile = $ARGV[0] || print_usage(); - -sub print_usage -{ - print STDERR "usage: schema2ldif.pl \n"; - exit(1); -} - -open( SCHEMA, "< $infile"); - -my $schemaline = ""; -$Text::Wrap::columns=78; -$Text::Wrap::separator="\n "; - -my $cn = basename($infile, ".schema"); -print STDOUT "dn: cn=$cn,cn=schema,cn=config\n"; -print STDOUT "objectClass: olcSchemaConfig\n"; -print STDOUT "cn: $cn\n"; -while ( ) -{ - my $line = $_; - if ( $line =~ /^\s+(.+)$/ ) - { - $schemaline .= " $1"; - next; - } - elsif ( $schemaline ne "" ) - { - print STDOUT wrap(""," ", $schemaline); - print STDOUT "\n"; - $schemaline = ""; - } - if ( $line =~ /^#/ ) - { - print STDOUT $line; - } - elsif ( $line =~ /^\s*$/ ) - { - print STDOUT "#\n"; - } - elsif ( $line =~ /^(objectclass|attributetype|objectidentifier)\s+(.+)$/i ) - { - if ( lc($1) eq "objectidentifier" ) - { - $schemaline .= "olcObjectIdentifier: "; - } - elsif ( lc($1) eq "objectclass" ) - { - $schemaline .= "olcObjectClasses: "; - } - elsif ( lc($1) eq "attributetype" ) - { - $schemaline .= "olcAttributeTypes: "; - } - $schemaline .= $2; - } -} -