2 ldb database library - Samba3 SAM compatibility backend
4 Copyright (C) Jelmer Vernooij 2005
8 #include "ldb/modules/ldb_map.h"
9 #include "ldb/include/ldb.h"
10 #include "ldb/include/ldb_private.h"
13 * sambaSID -> member (dn!)
14 * sambaSIDList -> member (dn!)
15 * sambaDomainName -> name
21 * sambaAcctFlags -> systemFlags ?
22 * sambaPasswordHistory -> ntPwdHistory*/
30 * sambaAlgorithmicRidBase
41 * sambaUserWorkstations
45 /* In Samba4 but not in Samba3:
48 static struct ldb_val convert_sid_rid(struct ldb_map_context *map, TALLOC_CTX *ctx, const struct ldb_val *val)
50 printf("Converting SID TO RID *\n");
54 return ldb_val_dup(ctx, val);
57 static struct ldb_val convert_rid_sid(struct ldb_map_context *map, TALLOC_CTX *ctx, const struct ldb_val *val)
59 printf("Converting RID TO SID *\n");
63 return ldb_val_dup(ctx, val);
66 static struct ldb_val convert_unix_id2name(struct ldb_map_context *map, TALLOC_CTX *ctx, const struct ldb_val *val)
68 printf("Converting UNIX ID to name\n");
72 return ldb_val_dup(ctx, val);
75 static struct ldb_val convert_unix_name2id(struct ldb_map_context *map, TALLOC_CTX *ctx, const struct ldb_val *val)
77 printf("Converting UNIX name to ID\n");
81 return ldb_val_dup(ctx, val);
84 const struct ldb_map_objectclass samba3_objectclasses[] = {
85 { "group", "sambaGroupMapping" },
86 { "user", "sambaSAMAccount" },
87 { "domain", "sambaDomain" },
91 const struct ldb_map_attribute samba3_attributes[] =
93 /* sambaNextRid -> nextRid */
95 .local_name = "nextRid",
97 .u.rename.remote_name = "sambaNextRid",
100 /* sambaBadPasswordTime -> badPasswordtime*/
102 .local_name = "badPasswordTime",
104 .u.rename.remote_name = "sambaBadPasswordTime",
107 /* sambaLMPassword -> lmPwdHash*/
109 .local_name = "lmPwdHash",
111 .u.rename.remote_name = "sambaLMPassword",
114 /* sambaGroupType -> groupType */
116 .local_name = "groupType",
118 .u.rename.remote_name = "sambaGroupType",
121 /* sambaNTPassword -> ntPwdHash*/
123 .local_name = "badPwdCount",
125 .u.rename.remote_name = "sambaNTPassword",
128 /* sambaPrimaryGroupSID -> primaryGroupID */
130 .local_name = "primaryGroupID",
132 .u.convert.remote_name = "sambaPrimaryGroupSID",
133 .u.convert.convert_local = convert_rid_sid,
134 .u.convert.convert_remote = convert_sid_rid,
137 /* sambaBadPasswordCount -> badPwdCount */
139 .local_name = "badPwdCount",
141 .u.rename.remote_name = "sambaBadPasswordCount",
144 /* sambaLogonTime -> lastLogon*/
146 .local_name = "lastLogon",
148 .u.rename.remote_name = "sambaLogonTime",
151 /* sambaLogoffTime -> lastLogoff*/
153 .local_name = "lastLogoff",
155 .u.rename.remote_name = "sambaLogoffTime",
158 /* gidNumber -> unixName */
160 .local_name = "unixName",
162 .u.convert.remote_name = "gidNumber",
163 .u.convert.convert_local = convert_unix_name2id,
164 .u.convert.convert_remote = convert_unix_id2name,
167 /* uid -> unixName */
169 .local_name = "unixName",
171 .u.convert.remote_name = "uid",
174 /* displayName -> name */
176 .local_name = "name",
178 .u.rename.remote_name = "displayName",
187 /* sAMAccountName -> cn */
189 .local_name = "sAMAccountName",
191 .u.rename.remote_name = "uid",
196 .local_name = "objectCategory",
202 .local_name = "objectGUID",
208 .local_name = "objectVersion",
214 .local_name = "codePage",
220 .local_name = "dNSHostName",
227 .local_name = "dnsDomain",
233 .local_name = "dnsRoot",
239 .local_name = "countryCode",
245 .local_name = "nTMixedDomain",
249 /* operatingSystem */
251 .local_name = "operatingSystem",
255 /* operatingSystemVersion */
257 .local_name = "operatingSystemVersion",
262 /* servicePrincipalName */
264 .local_name = "servicePrincipalName",
268 /* msDS-Behavior-Version */
270 .local_name = "msDS-Behavior-Version",
274 /* msDS-KeyVersionNumber */
276 .local_name = "msDS-KeyVersionNumber",
280 /* msDs-masteredBy */
282 .local_name = "msDs-masteredBy",
300 .local_name = "description",
304 /* sambaSID -> objectSid*/
306 .local_name = "objectSid",
308 .u.rename.remote_name = "sambaSID",
311 /* sambaPwdLastSet -> pwdLastSet */
313 .local_name = "pwdLastSet",
315 .u.rename.remote_name = "sambaPwdLastSet",
320 .local_name = "accountExpires",
326 .local_name = "adminCount",
332 .local_name = "canonicalName",
336 /* createTimestamp */
338 .local_name = "createTimestamp",
344 .local_name = "creationTime",
350 .local_name = "dMDLocation",
356 .local_name = "fSMORoleOwner",
362 .local_name = "forceLogoff",
368 .local_name = "instanceType",
374 .local_name = "invocationId",
378 /* isCriticalSystemObject */
380 .local_name = "isCriticalSystemObject",
384 /* localPolicyFlags */
386 .local_name = "localPolicyFlags",
390 /* lockOutObservationWindow */
392 .local_name = "lockOutObservationWindow",
396 /* lockoutDuration */
398 .local_name = "lockoutDuration",
402 /* lockoutThreshold */
404 .local_name = "lockoutThreshold",
410 .local_name = "logonCount",
416 .local_name = "masteredBy",
422 .local_name = "maxPwdAge",
428 .local_name = "member",
434 .local_name = "memberOf",
440 .local_name = "minPwdAge",
446 .local_name = "minPwdLength",
452 .local_name = "modifiedCount",
456 /* modifiedCountAtLastProm */
458 .local_name = "modifiedCountAtLastProm",
462 /* modifyTimestamp */
464 .local_name = "modifyTimestamp",
470 .local_name = "nCName",
476 .local_name = "nETBIOSName",
482 .local_name = "oEMInformation",
488 .local_name = "privilege",
492 /* pwdHistoryLength */
494 .local_name = "pwdHistoryLength",
500 .local_name = "pwdProperties",
504 /* rIDAvailablePool */
506 .local_name = "rIDAvailablePool",
512 .local_name = "revision",
516 /* ridManagerReference */
518 .local_name = "ridManagerReference",
524 .local_name = "sAMAccountType",
530 .local_name = "sPNMappings",
534 /* serverReference */
536 .local_name = "serverReference",
542 .local_name = "serverState",
546 /* showInAdvancedViewOnly */
548 .local_name = "showInAdvancedViewOnly",
554 .local_name = "subRefs",
560 .local_name = "systemFlags",
566 .local_name = "uASCompat",
572 .local_name = "uSNChanged",
578 .local_name = "uSNCreated",
584 .local_name = "unicodePwd",
588 /* userAccountControl */
590 .local_name = "userAccountControl",
596 .local_name = "whenChanged",
602 .local_name = "whenCreated",
611 /* the init function */
612 #ifdef HAVE_DLOPEN_DISABLED
613 struct ldb_module *init_module(struct ldb_context *ldb, const char *options[])
615 struct ldb_module *ldb_samba3sam_module_init(struct ldb_context *ldb, const char *options[])
618 return ldb_map_init(ldb, samba3_attributes, samba3_objectclasses, "samba3sam");