diff options
Diffstat (limited to 'source4/dsdb')
-rw-r--r-- | source4/dsdb/samdb/samdb.c | 104 |
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. |