r7777: allow for overriding the location of the sam databasein the ldap server, using
authorAndrew Tridgell <tridge@samba.org>
Mon, 20 Jun 2005 04:59:10 +0000 (04:59 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:18:35 +0000 (13:18 -0500)
ldapsrv:samdb option. This allows the following:

          sam database=ldap://localhost
          ldapsrv:samdb=tdb:///home/tridge/samba/samba4/prefix/private/sam.ldb

which allows us to test putting the sam on an ldap server using our
own ldap server. This is a great stress test for the ldap code.
(This used to be commit 40948ba3848e2cfd69ee5ef77031170a652e389b)

source4/ldap_server/ldap_backend.c
source4/ldap_server/ldap_hacked_ldb.c
source4/ldap_server/ldap_simple_ldb.c

index 3da7277cc1f58581fada85235a9909bcbe54ef25..96c9b16f5dbf9b3d2baef6f82e2bafbfafff2d0a 100644 (file)
@@ -255,3 +255,17 @@ NTSTATUS ldapsrv_do_call(struct ldapsrv_call *call)
                return ldapsrv_unwilling(call, 2);
        }
 }
+
+
+/*
+  connect to the sam database
+*/
+struct ldb_context *ldapsrv_sam_connect(struct ldapsrv_call *call)
+{
+       const char *url;
+       url = lp_parm_string(-1, "ldapsrv", "samdb");
+       if (url) {
+               return ldb_wrap_connect(call, url, 0, NULL);
+       }
+       return samdb_connect(call);
+}
index e0056775b9169772d397bcf3b8423ffe55ff1e8f..c7a5f6d1a214dac6ff5afd4a6f101795415a9169 100644 (file)
@@ -461,7 +461,7 @@ queue_reply2:
 }
 
 static NTSTATUS hldb_Search(struct ldapsrv_partition *partition, struct ldapsrv_call *call,
-                                    struct ldap_SearchRequest *r)
+                           struct ldap_SearchRequest *r)
 {
        NTSTATUS status;
        void *local_ctx;
@@ -481,7 +481,7 @@ static NTSTATUS hldb_Search(struct ldapsrv_partition *partition, struct ldapsrv_
        local_ctx = talloc_named(call, 0, "hldb_Search local memory context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        status = hacked_Search(partition, call, r, samdb);
@@ -618,7 +618,7 @@ static NTSTATUS hldb_Add(struct ldapsrv_partition *partition, struct ldapsrv_cal
        local_ctx = talloc_named(call, 0, "hldb_Add local memory context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        dn = ldap_parse_dn(local_ctx, r->dn);
@@ -717,7 +717,7 @@ static NTSTATUS hldb_Del(struct ldapsrv_partition *partition, struct ldapsrv_cal
        local_ctx = talloc_named(call, 0, "hldb_Del local memory context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        dn = ldap_parse_dn(local_ctx, r->dn);
@@ -772,7 +772,7 @@ static NTSTATUS hldb_Modify(struct ldapsrv_partition *partition, struct ldapsrv_
        local_ctx = talloc_named(call, 0, "hldb_Modify local memory context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        dn = ldap_parse_dn(local_ctx, r->dn);
@@ -889,7 +889,7 @@ static NTSTATUS hldb_Compare(struct ldapsrv_partition *partition, struct ldapsrv
        local_ctx = talloc_named(call, 0, "hldb_Compare local_memory_context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        dn = ldap_parse_dn(local_ctx, r->dn);
@@ -957,7 +957,7 @@ static NTSTATUS hldb_ModifyDN(struct ldapsrv_partition *partition, struct ldapsr
        local_ctx = talloc_named(call, 0, "hldb_ModifyDN local memory context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        olddn = ldap_parse_dn(local_ctx, r->dn);
index 4b73026d42fa7fcb4e64a7ae5438713446cb82c2..e8c66e80a2c8a3a29dbe8f3b2755ee5dc059ad40 100644 (file)
@@ -54,7 +54,7 @@ static NTSTATUS sldb_Search(struct ldapsrv_partition *partition, struct ldapsrv_
        local_ctx = talloc_named(call, 0, "sldb_Search local memory context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        basedn = ldap_parse_dn(local_ctx, r->basedn);
@@ -179,7 +179,7 @@ static NTSTATUS sldb_Add(struct ldapsrv_partition *partition, struct ldapsrv_cal
        local_ctx = talloc_named(call, 0, "sldb_Add local memory context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        dn = ldap_parse_dn(local_ctx, r->dn);
@@ -277,7 +277,7 @@ static NTSTATUS sldb_Del(struct ldapsrv_partition *partition, struct ldapsrv_cal
        local_ctx = talloc_named(call, 0, "sldb_Del local memory context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        dn = ldap_parse_dn(local_ctx, r->dn);
@@ -332,7 +332,7 @@ static NTSTATUS sldb_Modify(struct ldapsrv_partition *partition, struct ldapsrv_
        local_ctx = talloc_named(call, 0, "sldb_Modify local memory context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        dn = ldap_parse_dn(local_ctx, r->dn);
@@ -444,7 +444,7 @@ static NTSTATUS sldb_Compare(struct ldapsrv_partition *partition, struct ldapsrv
        local_ctx = talloc_named(call, 0, "sldb_Compare local_memory_context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        dn = ldap_parse_dn(local_ctx, r->dn);
@@ -512,7 +512,7 @@ static NTSTATUS sldb_ModifyDN(struct ldapsrv_partition *partition, struct ldapsr
        local_ctx = talloc_named(call, 0, "sldb_ModifyDN local memory context");
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);
 
-       samdb = samdb_connect(local_ctx);
+       samdb = ldapsrv_sam_connect(call);
        NT_STATUS_HAVE_NO_MEMORY(samdb);
 
        olddn = ldap_parse_dn(local_ctx, r->dn);