summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/tools/convert.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2006-08-17 08:31:19 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:15:39 -0500
commit7de75a991bda653497a0989de93608310b55894a (patch)
treea672da526817cded9f620511ca02d92f34f3a3ad /source4/lib/ldb/tools/convert.c
parent9f7da6fea0bc9a330f8620d100e27d4eabbae253 (diff)
downloadsamba-7de75a991bda653497a0989de93608310b55894a.tar.gz
samba-7de75a991bda653497a0989de93608310b55894a.tar.bz2
samba-7de75a991bda653497a0989de93608310b55894a.zip
r17580: Add a new tools to convert back from AD-like schema to OpenLDAP.
Add attribute syntax mapping to the existing OpenLDAP -> AD tool. Andrew Bartlett (This used to be commit ba1c652bae700a82acde166e70035d61c320e233)
Diffstat (limited to 'source4/lib/ldb/tools/convert.c')
-rw-r--r--source4/lib/ldb/tools/convert.c165
1 files changed, 165 insertions, 0 deletions
diff --git a/source4/lib/ldb/tools/convert.c b/source4/lib/ldb/tools/convert.c
new file mode 100644
index 0000000000..222bb3cfd0
--- /dev/null
+++ b/source4/lib/ldb/tools/convert.c
@@ -0,0 +1,165 @@
+/*
+ ldb database library
+
+ Copyright (C) Simo Sorce 2005
+
+ ** NOTE! The following LGPL license applies to the ldb
+ ** library. This does NOT imply that all of Samba is released
+ ** under the LGPL
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#include "convert.h"
+#include "includes.h"
+#include "ldb/include/includes.h"
+
+/* Shared map for converting syntax between formats */
+static const struct syntax_map syntax_map[] = {
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.12",
+ .AD_OID = "2.5.5.1",
+ .equality = "distinguishedNameMatch",
+ .comment = "Object(DS-DN) == a DN"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.38",
+ .AD_OID = "2.5.5.2",
+ .equality = "objectIdentifierMatch",
+ .comment = "OID String"
+ },
+ {
+ .Standard_OID = "1.2.840.113556.1.4.905",
+ .AD_OID = "2.5.5.4",
+ .equality = "caseIgnoreMatch",
+ .substring = "caseIgnoreSubstringsMatch",
+ .comment = "Case Insensitive String"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.44",
+ .AD_OID = "2.5.5.5",
+ .equality = "caseExactIA5Match",
+ .comment = "Printable String"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.36",
+ .AD_OID = "2.5.5.6",
+ .equality = "numericStringMatch",
+ .substring = "numericStringSubstringsMatch",
+ .comment = "Numeric String"
+ },
+ {
+ .Standard_OID = "1.2.840.113556.1.4.903",
+ .AD_OID = "2.5.5.7",
+ .equality = "distinguishedNameMatch",
+ .comment = "OctetString: Binary+DN"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.7",
+ .AD_OID = "2.5.5.8",
+ .equality = "booleanMatch",
+ .comment = "Boolean"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.27",
+ .AD_OID = "2.5.5.9",
+ .equality = "integerMatch",
+ .comment = "Integer"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.40",
+ .AD_OID = "2.5.5.10",
+ .equality = "octetStringMatch",
+ .comment = "Octet String"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.24",
+ .AD_OID = "2.5.5.11",
+ .equality = "generalizedTimeMatch",
+ .comment = "Generalized Time"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.53",
+ .AD_OID = "2.5.5.11",
+ .equality = "generalizedTimeMatch",
+ .comment = "UTC Time"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.15",
+ .AD_OID = "2.5.5.12",
+ .equality = "caseIgnoreMatch",
+ .substring = "caseIgnoreSubstringsMatch",
+ .comment = "Directory String"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.43",
+ .AD_OID = "2.5.5.13",
+ .comment = "Presentation Address"
+ },
+ {
+ .Standard_OID = "Not Found Yet",
+ .AD_OID = "2.5.5.14",
+ .equality = "distinguishedNameMatch",
+ .comment = "OctetString: String+DN"
+ },
+ {
+ .Standard_OID = "1.2.840.113556.1.4.907",
+ .AD_OID = "2.5.5.15",
+ .equality = "octetStringMatch",
+ .comment = "NT Security Descriptor"
+ },
+ {
+ .Standard_OID = "1.2.840.113556.1.4.906",
+ .AD_OID = "2.5.5.16",
+ .equality = "integerMatch",
+ .comment = "Large Integer"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.40",
+ .AD_OID = "2.5.5.17",
+ .equality = "octetStringMatch",
+ .comment = "Octet String - Security Identifier (SID)"
+ },
+ {
+ .Standard_OID = "1.3.6.1.4.1.1466.115.121.1.26",
+ .AD_OID = "2.5.5.5",
+ .equality = "caseExactIA5Match",
+ .comment = "IA5 String"
+ },
+ { }
+};
+
+
+const struct syntax_map *find_syntax_map_by_ad_oid(const char *ad_oid)
+{
+ int i;
+ for (i=0; syntax_map[i].Standard_OID; i++) {
+ if (strcasecmp(ad_oid, syntax_map[i].AD_OID) == 0) {
+ return &syntax_map[i];
+ }
+ }
+ return NULL;
+}
+
+const struct syntax_map *find_syntax_map_by_standard_oid(const char *standard_oid)
+{
+ int i;
+ for (i=0; syntax_map[i].Standard_OID; i++) {
+ if (strcasecmp(standard_oid, syntax_map[i].Standard_OID) == 0) {
+ return &syntax_map[i];
+ }
+ }
+ return NULL;
+}