diff options
-rw-r--r-- | server/monitor/monitor.c | 4 | ||||
-rw-r--r-- | server/providers/data_provider.c | 19 | ||||
-rw-r--r-- | server/providers/data_provider_be.c | 48 | ||||
-rw-r--r-- | server/providers/dp_backend.h | 1 |
4 files changed, 41 insertions, 31 deletions
diff --git a/server/monitor/monitor.c b/server/monitor/monitor.c index 67e5b6e3..893de9b1 100644 --- a/server/monitor/monitor.c +++ b/server/monitor/monitor.c @@ -1040,10 +1040,10 @@ static int get_provider_config(struct mt_ctx *ctx, const char *name, /* if there are no custom commands, build a default one */ if (!svc->command) { svc->command = talloc_asprintf(svc, - "%s/sssd_be -d %d%s --provider %s --domain %s", + "%s/sssd_be -d %d%s --domain %s", SSSD_LIBEXEC_PATH, debug_level, (debug_timestamps?" --debug-timestamps":""), - svc->provider, svc->name); + svc->name); if (!svc->command) { talloc_free(svc); return ENOMEM; diff --git a/server/providers/data_provider.c b/server/providers/data_provider.c index 4cb39bfb..f8efcc8d 100644 --- a/server/providers/data_provider.c +++ b/server/providers/data_provider.c @@ -64,7 +64,6 @@ struct dp_client { struct dp_backend { struct dp_backend *prev; struct dp_backend *next; - char *name; char *domain; struct dp_client *dpcli; }; @@ -282,9 +281,8 @@ static int client_registration(DBusMessage *message, return ENOMEM; } - dpbe->name = talloc_strdup(dpbe, cli_name); dpbe->domain = talloc_strdup(dpbe, cli_domain); - if (!dpbe->name || !dpbe->domain) { + if (!dpbe->domain) { DEBUG(0, ("Out of memory!\n")); sbus_disconnect(conn); return ENOMEM; @@ -294,8 +292,7 @@ static int client_registration(DBusMessage *message, DLIST_ADD(dpcli->dpctx->be_list, dpbe); - DEBUG(4, ("Added Backend client [%s], for domain [%s]\n", - dpbe->name, dpbe->domain)); + DEBUG(4, ("Added Backend client for domain [%s]\n", dpbe->domain)); talloc_set_destructor((TALLOC_CTX *)dpbe, dp_backend_destructor); break; @@ -398,9 +395,9 @@ static void be_got_account_info(DBusPendingCall *pending, void *data) goto done; } - DEBUG(4, ("Got reply (%u, %u, %s) from %s(%s)\n", + DEBUG(4, ("Got reply (%u, %u, %s) from (%s)\n", (unsigned int)err_maj, (unsigned int)err_min, err_msg, - bereq->be->name, bereq->be->domain)); + bereq->be->domain)); break; @@ -712,8 +709,8 @@ static void be_got_pam_reply(DBusPendingCall *pending, void *data) goto done; } - DEBUG(4, ("Got reply (%d, %s) from %s(%s)\n", pd->pam_status, pd->domain, - bereq->be->name, bereq->be->domain)); + DEBUG(4, ("Got reply (%d, %s) from (%s)\n", pd->pam_status, pd->domain, + bereq->be->domain)); break; @@ -909,8 +906,8 @@ static int dp_backend_destructor(void *ctx) struct dp_backend *dpbe = talloc_get_type(ctx, struct dp_backend); if (dpbe->dpcli && dpbe->dpcli->dpctx && dpbe->dpcli->dpctx->be_list) { DLIST_REMOVE(dpbe->dpcli->dpctx->be_list, dpbe); - DEBUG(4, ("Removed Backend client [%s], for domain [%s]\n", - dpbe->name, dpbe->domain)); + DEBUG(4, ("Removed Backend client for domain [%s]\n", + dpbe->domain)); } return 0; } diff --git a/server/providers/data_provider_be.c b/server/providers/data_provider_be.c index 7df90020..8428954a 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); diff --git a/server/providers/dp_backend.h b/server/providers/dp_backend.h index 987e5365..cce854ef 100644 --- a/server/providers/dp_backend.h +++ b/server/providers/dp_backend.h @@ -66,7 +66,6 @@ struct be_ctx { struct confdb_ctx *cdb; struct sysdb_ctx *sysdb; struct sss_domain_info *domain; - const char *name; const char *identity; const char *conf_path; |