static int net_idmap_secret(struct net_context *c, int argc, const char **argv) { TALLOC_CTX *ctx; const char *secret; const char *dn; char *domain; char *backend; char *opt = NULL; bool ret; if (argc != 2 || c->display_usage) { d_printf(_("Usage:\n" "net idmap secret {<DOMAIN>|alloc} <secret>\n" " Set the secret for the specified domain " "(or alloc module)\n" " DOMAIN\tDomain to set secret for.\n" " alloc\tSet secret for the alloc module\n" " secret\tNew secret to set.\n")); return c->display_usage?0:-1; } secret = argv[1]; ctx = talloc_new(NULL); ALLOC_CHECK(ctx); if (strcmp(argv[0], "alloc") == 0) { domain = NULL; backend = lp_idmap_alloc_backend(); } else { domain = talloc_strdup(ctx, argv[0]); ALLOC_CHECK(domain); opt = talloc_asprintf(ctx, "idmap config %s", domain); ALLOC_CHECK(opt); backend = talloc_strdup(ctx, lp_parm_const_string(-1, opt, "backend", "tdb")); ALLOC_CHECK(backend); } if ( ( ! backend) || ( ! strequal(backend, "ldap"))) { d_fprintf(stderr, _("The only currently supported backend is LDAP\n")); talloc_free(ctx); return -1; } if (domain) { dn = lp_parm_const_string(-1, opt, "ldap_user_dn", NULL); if ( ! dn) { d_fprintf(stderr, _("Missing ldap_user_dn option for domain " "%s\n"), domain); talloc_free(ctx); return -1; } ret = idmap_store_secret("ldap", false, domain, dn, secret); } else { dn = lp_parm_const_string(-1, "idmap alloc config", "ldap_user_dn", NULL); if ( ! dn) { d_fprintf(stderr, _("Missing ldap_user_dn option for alloc " "backend\n")); talloc_free(ctx); return -1; } ret = idmap_store_secret("ldap", true, NULL, dn, secret); } if ( ! ret) { d_fprintf(stderr, _("Failed to store secret\n")); talloc_free(ctx); return -1; } d_printf(_("Secret stored\n")); return 0; }
static int net_idmap_secret(int argc, const char **argv) { TALLOC_CTX *ctx; const char *secret; const char *dn; char *domain; char *backend; char *opt = NULL; bool ret; if (argc != 2) { return net_help_idmap(argc, argv); } secret = argv[1]; ctx = talloc_new(NULL); ALLOC_CHECK(ctx); if (strcmp(argv[0], "alloc") == 0) { domain = NULL; backend = lp_idmap_alloc_backend(); } else { domain = talloc_strdup(ctx, argv[0]); ALLOC_CHECK(domain); opt = talloc_asprintf(ctx, "idmap config %s", domain); ALLOC_CHECK(opt); backend = talloc_strdup(ctx, lp_parm_const_string(-1, opt, "backend", "tdb")); ALLOC_CHECK(backend); } if ( ( ! backend) || ( ! strequal(backend, "ldap"))) { d_fprintf(stderr, "The only currently supported backend is LDAP\n"); talloc_free(ctx); return -1; } if (domain) { dn = lp_parm_const_string(-1, opt, "ldap_user_dn", NULL); if ( ! dn) { d_fprintf(stderr, "Missing ldap_user_dn option for domain %s\n", domain); talloc_free(ctx); return -1; } ret = idmap_store_secret("ldap", false, domain, dn, secret); } else { dn = lp_parm_const_string(-1, "idmap alloc config", "ldap_user_dn", NULL); if ( ! dn) { d_fprintf(stderr, "Missing ldap_user_dn option for alloc backend\n"); talloc_free(ctx); return -1; } ret = idmap_store_secret("ldap", true, NULL, dn, secret); } if ( ! ret) { d_fprintf(stderr, "Failed to store secret\n"); talloc_free(ctx); return -1; } d_printf("Secret stored\n"); return 0; }