summaryrefslogtreecommitdiff
path: root/source4/dsdb/samdb/samdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/dsdb/samdb/samdb.c')
-rw-r--r--source4/dsdb/samdb/samdb.c104
1 files changed, 0 insertions, 104 deletions
diff --git a/source4/dsdb/samdb/samdb.c b/source4/dsdb/samdb/samdb.c
index 08e6e0d985..e361cc78fb 100644
--- a/source4/dsdb/samdb/samdb.c
+++ b/source4/dsdb/samdb/samdb.c
@@ -113,110 +113,6 @@ struct ldb_context *samdb_connect(TALLOC_CTX *mem_ctx,
return ldb;
}
-/*
- copy from a template record to a message
-*/
-int samdb_copy_template(struct ldb_context *ldb,
- struct ldb_message *msg, const char *name,
- const char **errstring)
-{
- struct ldb_result *res;
- struct ldb_message *t;
- int ret, i, j;
- struct ldb_context *templates_ldb;
- char *templates_ldb_path;
- struct ldb_dn *basedn;
- struct tevent_context *event_ctx;
- struct loadparm_context *lp_ctx;
-
- templates_ldb = talloc_get_type(ldb_get_opaque(ldb, "templates_ldb"), struct ldb_context);
-
- if (!templates_ldb) {
- templates_ldb_path = samdb_relative_path(ldb,
- msg,
- "templates.ldb");
- if (!templates_ldb_path) {
- *errstring = talloc_asprintf(msg, "samdb_copy_template: ERROR: Failed to contruct path for template db");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- event_ctx = ldb_get_event_context(ldb);
- lp_ctx = (struct loadparm_context *)ldb_get_opaque(ldb, "loadparm");
-
- /* FIXME: need to remove this wehn we finally pass the event
- * context around in ldb */
- if (event_ctx == NULL) {
- event_ctx = s4_event_context_init(templates_ldb);
- }
-
- templates_ldb = ldb_wrap_connect(ldb, event_ctx, lp_ctx,
- templates_ldb_path, NULL,
- NULL, 0, NULL);
- talloc_free(templates_ldb_path);
- if (!templates_ldb) {
- *errstring = talloc_asprintf(msg, "samdb_copy_template: ERROR: Failed to connect to templates db at: %s",
- templates_ldb_path);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- ret = ldb_set_opaque(ldb, "templates_ldb", templates_ldb);
- if (ret != LDB_SUCCESS) {
- return ret;
- }
- }
- *errstring = NULL;
-
- basedn = ldb_dn_new(templates_ldb, ldb, "cn=Templates");
- if (!ldb_dn_add_child_fmt(basedn, "CN=Template%s", name)) {
- talloc_free(basedn);
- *errstring = talloc_asprintf(msg, "samdb_copy_template: ERROR: Failed to contruct DN for template '%s'",
- name);
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* pull the template record */
- ret = ldb_search(templates_ldb, msg, &res, basedn, LDB_SCOPE_BASE, NULL, "distinguishedName=*");
- talloc_free(basedn);
- if (ret != LDB_SUCCESS) {
- *errstring = talloc_steal(msg, ldb_errstring(templates_ldb));
- return ret;
- }
- if (res->count != 1) {
- *errstring = talloc_asprintf(msg, "samdb_copy_template: ERROR: template '%s' matched %d records, expected 1",
- name,
- res->count);
- talloc_free(res);
- return LDB_ERR_OPERATIONS_ERROR;
- }
- t = res->msgs[0];
-
- for (i = 0; i < t->num_elements; i++) {
- struct ldb_message_element *el = &t->elements[i];
- /* some elements should not be copied from the template */
- if (ldb_attr_cmp(el->name, "cn") == 0 ||
- ldb_attr_cmp(el->name, "name") == 0 ||
- ldb_attr_cmp(el->name, "objectClass") == 0 ||
- ldb_attr_cmp(el->name, "sAMAccountName") == 0 ||
- ldb_attr_cmp(el->name, "distinguishedName") == 0 ||
- ldb_attr_cmp(el->name, "objectGUID") == 0) {
- continue;
- }
- for (j = 0; j < el->num_values; j++) {
- ret = samdb_find_or_add_attribute(ldb, msg, el->name,
- (char *)el->values[j].data);
- if (ret) {
- *errstring = talloc_asprintf(msg, "Adding attribute %s failed.", el->name);
- talloc_free(res);
- return ret;
- }
- }
- }
-
- talloc_free(res);
-
- return LDB_SUCCESS;
-}
-
/****************************************************************************
Create the SID list for this user.