diff options
author | Sumit Bose <sbose@redhat.com> | 2009-09-02 12:21:55 +0200 |
---|---|---|
committer | Simo Sorce <ssorce@redhat.com> | 2009-09-02 09:13:02 -0400 |
commit | 74ecf832de5bb406ecea702e9aaeec3eb4484631 (patch) | |
tree | 9c90ba50975f1df325c64a9d1624ed899ea92b1f /server/providers/data_provider_be.c | |
parent | b641864b0250923e279dadd1866c7b8cea6c1372 (diff) | |
download | sssd-74ecf832de5bb406ecea702e9aaeec3eb4484631.tar.gz sssd-74ecf832de5bb406ecea702e9aaeec3eb4484631.tar.xz sssd-74ecf832de5bb406ecea702e9aaeec3eb4484631.zip |
remove the concept of a backend name
The data provider backends stored a name value besides the domain
name to identify themselves to the data provider. This was the name
of the id provider. Currently the backends can have different
providers for id, authentication etc. So the name may be missleading.
Also when there are more domains with the same id provider the name
is not enough to identify the backend but the domain name is. As a
consequence the backend name is removed completely and only the
domain name is used for identification.
Diffstat (limited to 'server/providers/data_provider_be.c')
-rw-r--r-- | server/providers/data_provider_be.c | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/server/providers/data_provider_be.c b/server/providers/data_provider_be.c index 7df900201..8428954a3 100644 --- a/server/providers/data_provider_be.c +++ b/server/providers/data_provider_be.c @@ -622,7 +622,7 @@ static int be_cli_init(struct be_ctx *ctx) /* Identify ourselves to the data provider */ ret = dp_common_send_id(ctx->dp_conn, DP_CLI_BACKEND, DATA_PROVIDER_VERSION, - ctx->name, ctx->domain->name); + "", ctx->domain->name); if (ret != EOK) { DEBUG(0, ("Failed to identify to the data provider!\n")); return ret; @@ -657,7 +657,7 @@ static void be_cli_reconnect_init(struct sbus_connection *conn, int status, void /* Identify ourselves to the data provider */ ret = dp_common_send_id(be_ctx->dp_conn, DP_CLI_BACKEND, DATA_PROVIDER_VERSION, - be_ctx->name, be_ctx->domain->name); + "", be_ctx->domain->name); if (ret != EOK) { DEBUG(0, ("Failed to send id to the data provider!\n")); } else { @@ -879,13 +879,26 @@ static int be_rewrite(struct be_ctx *ctx) int ret; const char *val[2]; val[1] = NULL; + char **get_values = NULL; /* "files" is a special case that means: * provider = proxy * libName = files */ - if (strcasecmp(ctx->name, "files") == 0) { - DEBUG(5, ("Rewriting provider %s\n", ctx->name)); + ret = confdb_get_param(ctx->cdb, ctx, ctx->conf_path, "provider", + &get_values); + if (ret != EOK) { + DEBUG(1, ("Failed to read provider from confdb.\n")); + return ret; + } + if (get_values[0] == NULL) { + DEBUG(1, ("Missing provider.\n")); + return EINVAL; + } + + if (strcasecmp(get_values[0], "files") == 0) { + DEBUG(5, ("Rewriting provider %s\n", get_values[0])); + talloc_zfree(get_values); val[0] = "proxy"; ret = confdb_add_param(ctx->cdb, true, @@ -910,7 +923,6 @@ static int be_rewrite(struct be_ctx *ctx) } int be_process_init(TALLOC_CTX *mem_ctx, - const char *be_name, const char *be_domain, struct tevent_context *ev, struct confdb_ctx *cdb) @@ -925,10 +937,9 @@ int be_process_init(TALLOC_CTX *mem_ctx, } ctx->ev = ev; ctx->cdb = cdb; - ctx->name = talloc_strdup(ctx, be_name); ctx->identity = talloc_asprintf(ctx, "%%BE_%s", be_domain); ctx->conf_path = talloc_asprintf(ctx, "config/domains/%s", be_domain); - if (!ctx->name || !ctx->identity || !ctx->conf_path) { + if (!ctx->identity || !ctx->conf_path) { DEBUG(0, ("Out of memory!?\n")); return ENOMEM; } @@ -1016,20 +1027,17 @@ int main(int argc, const char *argv[]) { int opt; poptContext pc; - char *be_name; - char *be_domain; - char *srv_name; - char *conf_entry; + char *be_domain = NULL; + char *srv_name = NULL; + char *conf_entry = NULL; struct main_context *main_ctx; int ret; struct poptOption long_options[] = { POPT_AUTOHELP SSSD_MAIN_OPTS - {"provider", 0, POPT_ARG_STRING, &be_name, 0, - "Information Provider", NULL }, {"domain", 0, POPT_ARG_STRING, &be_domain, 0, - "Domain of the information provider", NULL }, + "Domain of the information provider (mandatory)", NULL }, POPT_TABLEEND }; @@ -1044,10 +1052,16 @@ int main(int argc, const char *argv[]) } } + if (be_domain == NULL) { + fprintf(stderr, "\nMissing option, --domain is a mandatory option.\n\n"); + poptPrintUsage(pc, stderr, 0); + return 1; + } + poptFreeContext(pc); /* set up things like debug , signals, daemonization, etc... */ - srv_name = talloc_asprintf(NULL, "sssd[be[%s]]", be_name); + srv_name = talloc_asprintf(NULL, "sssd[be[%s]]", be_domain); if (!srv_name) return 2; conf_entry = talloc_asprintf(NULL, BE_CONF_ENTRY, be_domain); @@ -1066,7 +1080,7 @@ int main(int argc, const char *argv[]) } ret = be_process_init(main_ctx, - be_name, be_domain, + be_domain, main_ctx->event_ctx, main_ctx->confdb_ctx); if (ret != EOK) { @@ -1074,7 +1088,7 @@ int main(int argc, const char *argv[]) return 3; } - DEBUG(1, ("Backend provider %s(%s) started!\n", be_name, be_domain)); + DEBUG(1, ("Backend provider (%s) started!\n", be_domain)); /* loop on main */ server_loop(main_ctx); |