svn commit: samba r9808 - in branches/SAMBA_4_0/source/lib/samba3: .
jelmer at samba.org
jelmer at samba.org
Tue Aug 30 17:23:07 GMT 2005
Author: jelmer
Date: 2005-08-30 17:23:07 +0000 (Tue, 30 Aug 2005)
New Revision: 9808
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9808
Log:
Improve code that selects what "passdb backend" to import from.
Modified:
branches/SAMBA_4_0/source/lib/samba3/PLAN
branches/SAMBA_4_0/source/lib/samba3/samba3.c
branches/SAMBA_4_0/source/lib/samba3/smbpasswd.c
Changeset:
Modified: branches/SAMBA_4_0/source/lib/samba3/PLAN
===================================================================
--- branches/SAMBA_4_0/source/lib/samba3/PLAN 2005-08-30 17:21:41 UTC (rev 9807)
+++ branches/SAMBA_4_0/source/lib/samba3/PLAN 2005-08-30 17:23:07 UTC (rev 9808)
@@ -1,5 +1,3 @@
TODO (SoC project):
- - move ini parsing stuff to seperate file param/ini.c
- - parse "passdb backend" setting and parse tdbsam/passdb based on it
- test ldb_map backend (testsuite?)
- testsuite for the static upgrade
Modified: branches/SAMBA_4_0/source/lib/samba3/samba3.c
===================================================================
--- branches/SAMBA_4_0/source/lib/samba3/samba3.c 2005-08-30 17:21:41 UTC (rev 9807)
+++ branches/SAMBA_4_0/source/lib/samba3/samba3.c 2005-08-30 17:23:07 UTC (rev 9808)
@@ -32,6 +32,55 @@
return NULL;
}
+NTSTATUS samba3_read_passdb_backends(TALLOC_CTX *ctx, const char *libdir, struct samba3 *samba3)
+{
+ char *dbfile;
+ NTSTATUS status = NT_STATUS_OK;
+ int i;
+ const char **backends = param_get_string_list(samba3->configuration, NULL, "passdb backends", NULL);
+
+ /* Default to smbpasswd */
+ if (backends == NULL)
+ backends = str_list_make(ctx, "smbpasswd", LIST_SEP);
+ else
+ backends = str_list_copy(ctx, backends);
+
+ for (i = 0; backends[i]; i++) {
+ if (!strncmp(backends[i], "tdbsam", strlen("tdbsam"))) {
+ const char *p = strchr(backends[i], ':');
+ if (p && p[1]) {
+ dbfile = talloc_strdup(ctx, p+1);
+ } else {
+ dbfile = talloc_asprintf(ctx, "%s/passdb.tdb", libdir);
+ }
+ samba3_read_tdbsam(dbfile, ctx, &samba3->samaccounts, &samba3->samaccount_count);
+ talloc_free(dbfile);
+ } else if (!strncmp(backends[i], "smbpasswd", strlen("smbpasswd"))) {
+ const char *p = strchr(backends[i], ':');
+ if (p && p[1]) {
+ dbfile = talloc_strdup(ctx, p+1);
+ } else if ((p = param_get_string(samba3->configuration, NULL, "smb passwd file"))) {
+ dbfile = talloc_strdup(ctx, p);
+ } else {
+ dbfile = talloc_strdup(ctx, "/etc/samba/smbpasswd");
+ }
+
+ samba3_read_smbpasswd(dbfile, ctx, &samba3->samaccounts, &samba3->samaccount_count);
+ talloc_free(dbfile);
+ } else if (!strncmp(backends[i], "ldapsam", strlen("ldapsam"))) {
+ /* Will use samba3sam mapping module */
+ } else {
+ DEBUG(0, ("Upgrade from %s database not supported", backends[i]));
+ status = NT_STATUS_NOT_SUPPORTED;
+ continue;
+ }
+ }
+
+ talloc_free(backends);
+
+ return status;
+}
+
NTSTATUS samba3_read(const char *libdir, const char *smbconf, TALLOC_CTX *ctx, struct samba3 **samba3)
{
struct samba3 *ret;
@@ -68,9 +117,7 @@
samba3_read_winsdb(dbfile, ret, &ret->winsdb_entries, &ret->winsdb_count);
talloc_free(dbfile);
- dbfile = talloc_asprintf(ctx, "%s/passdb.tdb", libdir);
- samba3_read_tdbsam(dbfile, ctx, &ret->samaccounts, &ret->samaccount_count);
- talloc_free(dbfile);
+ samba3_read_passdb_backends(ctx, libdir, ret);
dbfile = talloc_asprintf(ctx, "%s/group_mapping.tdb", libdir);
samba3_read_grouptdb(dbfile, ctx, &ret->group);
Modified: branches/SAMBA_4_0/source/lib/samba3/smbpasswd.c
===================================================================
--- branches/SAMBA_4_0/source/lib/samba3/smbpasswd.c 2005-08-30 17:21:41 UTC (rev 9807)
+++ branches/SAMBA_4_0/source/lib/samba3/smbpasswd.c 2005-08-30 17:23:07 UTC (rev 9808)
@@ -219,6 +219,11 @@
lines = file_lines_load(filename, &numlines, ctx);
+ if (lines == NULL) {
+ DEBUG(0, ("Unable to load lines from %s\n", filename));
+ return NT_STATUS_UNSUCCESSFUL;
+ }
+
*accounts = talloc_array(ctx, struct samba3_samaccount, numlines);
for (i = 0; i < numlines; i++) {
More information about the samba-cvs
mailing list