-
/*
* MySQL password backend for samba
* Copyright (C) Jelmer Vernooij 2002
CONFIG_UNKNOWN_6_DEFAULT),
config_value(data, "table", CONFIG_TABLE_DEFAULT)
);
+ DEBUG(5, ("Executing query %s\n", query));
ret = mysql_query(data->handle, query);
SAFE_FREE(query);
if (ret) {
DEBUG(0,
- ("Error executing query: %s\n", mysql_error(data->handle)));
+ ("Error executing MySQL query %s\n", mysql_error(data->handle)));
return NT_STATUS_UNSUCCESSFUL;
}
}
DEBUG(5,
- ("mysqlsam_setsampwent succeeded(%d results)!\n",
- mysql_num_fields(data->pwent)));
+ ("mysqlsam_setsampwent succeeded(%lu results)!\n",
+ mysql_num_rows(data->pwent)));
return NT_STATUS_OK;
}
esc_sname);
SAFE_FREE(esc_sname);
+
+ DEBUG(5, ("Executing query %s\n", query));
mysql_ret = mysql_query(data->handle, query);
if (mysql_ret) {
DEBUG(0,
- ("Error while executing MySQL query: %s\n",
+ ("Error while executing MySQL query %s\n",
mysql_error(data->handle)));
return NT_STATUS_UNSUCCESSFUL;
}
/* I know this is somewhat overkill but only the talloc
* functions have asprint_append and the 'normal' asprintf
* is a GNU extension */
- query.mem_ctx = talloc_init();
+ query.mem_ctx = talloc_init("mysqlsam_replace_sam_account");
query.part2 = talloc_asprintf(query.mem_ctx, "%s", "");
if (query.update) {
query.part1 =
if (pdb_get_pass_last_set_time(newpwd)) {
pdb_mysql_int_field(methods, &query,
config_value_write(data,
- "pass must change time column",
+ "pass last set time column",
CONFIG_PASS_LAST_SET_TIME_DEFAULT),
pdb_get_pass_last_set_time(newpwd));
}
return mysqlsam_replace_sam_account(methods, newpwd, 1);
}
+static NTSTATUS mysqlsam_getgrsid(struct pdb_methods *methods, GROUP_MAP *map,
+ DOM_SID sid, BOOL with_priv)
+{
+ return get_group_map_from_sid(sid, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS mysqlsam_getgrgid(struct pdb_methods *methods, GROUP_MAP *map,
+ gid_t gid, BOOL with_priv)
+{
+ return get_group_map_from_gid(gid, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS mysqlsam_getgrnam(struct pdb_methods *methods, GROUP_MAP *map,
+ char *name, BOOL with_priv)
+{
+ return get_group_map_from_ntname(name, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS mysqlsam_add_group_mapping_entry(struct pdb_methods *methods,
+ GROUP_MAP *map)
+{
+ return add_mapping_entry(map, TDB_INSERT) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS mysqlsam_update_group_mapping_entry(struct pdb_methods *methods,
+ GROUP_MAP *map)
+{
+ return add_mapping_entry(map, TDB_REPLACE) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS mysqlsam_delete_group_mapping_entry(struct pdb_methods *methods,
+ DOM_SID sid)
+{
+ return group_map_remove(sid) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS mysqlsam_enum_group_mapping(struct pdb_methods *methods,
+ enum SID_NAME_USE sid_name_use,
+ GROUP_MAP **rmap, int *num_entries,
+ BOOL unix_only, BOOL with_priv)
+{
+ return enum_group_mapping(sid_name_use, rmap, num_entries, unix_only,
+ with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+
NTSTATUS pdb_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
char *location)
{
(*pdb_method)->add_sam_account = mysqlsam_add_sam_account;
(*pdb_method)->update_sam_account = mysqlsam_update_sam_account;
(*pdb_method)->delete_sam_account = mysqlsam_delete_sam_account;
+ (*pdb_method)->getgrsid = mysqlsam_getgrsid;
+ (*pdb_method)->getgrgid = mysqlsam_getgrgid;
+ (*pdb_method)->getgrnam = mysqlsam_getgrnam;
+ (*pdb_method)->add_group_mapping_entry = mysqlsam_add_group_mapping_entry;
+ (*pdb_method)->update_group_mapping_entry = mysqlsam_update_group_mapping_entry;
+ (*pdb_method)->delete_group_mapping_entry = mysqlsam_delete_group_mapping_entry;
+ (*pdb_method)->enum_group_mapping = mysqlsam_enum_group_mapping;
data = talloc(pdb_context->mem_ctx, sizeof(struct pdb_mysql_data));
(*pdb_method)->private_data = data;