r9616: Finish ldb_map module (still needs a lot of testing though...)
[sfrench/samba-autobuild/.git] / source / lib / samba3 / ldb_samba3.c
index 030b0519387b467ee6041fa12be96499b11387fd..53d8964d0db613bb2ec38897b131e5a7a72dd77b 100644 (file)
 #include "ldb/include/ldb_private.h"
 
 /* 
- * sambaGroupMapping -> group
  *     gidNumber -> ???
  *     sambaSID -> member
- *     sambaGroupType -> groupType
- *     displayName -> name
- *     description -> description
  *     sambaSIDList -> member (special!)
  */
 
-/*
- * sambaTrustPassword
- */
+/* sambaTrustPassword */
 
-/* sambaDomain
- *     sambaDomainName
- *     sambaSID
- *     sambaNextRid 
- *     sambaNextGroupRid 
- *     sambaNextUserRid
- *     sambaAlgorithmicRidBase
- */
+/*     sambaDomainName -> name */
 
-/* sambaUnixIdPool
- */
+/* sambaUnixIdPool */
 
 /* sambaIdmapEntry */
 
-/* sambaAccountPolicy */
+/* sambaAccountPolicy: FIXME */
 
 /* sambaSidEntry: FIXME */
 
-/* sambaSamAccount -> user:
- * uid -> unixName (magic!)
- * sambaSID -> objectSid
- * cn -> cn
- * sambaLMPassword -> lmPwdHash
- * sambaNTPassword -> ntPwdHash
- * sambaPwdLastSet -> pwdLastSet
- * sambaLogonTime -> lastLogon
- * sambaLogoffTime -> lastLogoff
- * sambaKickoffTime -> ???
- * sambaPwdCanChange  -> ???
- * sambaPwdMustChange  -> ???
- * sambaAcctFlags -> systemFlags ?
- * displayName  -> name
- * sambaHomePath  -> ???
- * sambaHomeDrive  -> ???
- * sambaLogonScript  -> ???
- * sambaProfilePath  -> ???
- * description -> description
- * sambaUserWorkstations  -> ???
- * sambaPrimaryGroupSID -> primaryGroupID
- * sambaDomainName  -> ???
- * sambaMungedDial -> ???
- * sambaBadPasswordCount -> badPwdcount
- * sambaBadPasswordTime -> badPasswordtime
- * sambaPasswordHistory  -> ntPwdHistory
- * sambaLogonHours -> ???
- */
-
 /* Not necessary:
  * sambaConfig
  * sambaShare
  * sambaConfigOption 
+ * sambaNextGroupRid
+ * sambaNextUserRid
+ * sambaAlgorithmicRidBase
  */
 
-
-struct ldb_map_mappings samba3_mappings;
+/* sambaKickoffTime -> ???*/
+/* sambaPwdCanChange  -> ???*/
+/* sambaPwdMustChange  -> ???*/
+/* sambaAcctFlags -> systemFlags ?*/
+/* sambaHomePath  -> ???*/
+/* sambaHomeDrive  -> ???*/
+/* sambaLogonScript  -> ???*/
+/* sambaProfilePath  -> ???*/
+/* sambaUserWorkstations  -> ???*/
+/* sambaDomainName  -> ???*/
+/* sambaMungedDial -> ???*/
+/* sambaPasswordHistory  -> ntPwdHistory*/
+/* sambaLogonHours -> ???*/
+
+/* sambaNextRid -> nextRid */
+const struct ldb_map_attribute attr_nextRid = {
+       .local_name = "nextRid",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "sambaNextRid",
+};
+
+/* sambaBadPasswordTime -> badPasswordtime*/
+const struct ldb_map_attribute attr_badPasswordTime = {
+       .local_name = "badPasswordTime",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "sambaBadPasswordTime",
+};
+
+/* sambaLMPassword -> lmPwdHash*/
+const struct ldb_map_attribute attr_lmPwdHash = {
+       .local_name = "lmPwdHash",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "sambaLMPassword",
+};
+
+/* sambaGroupType -> groupType */
+const struct ldb_map_attribute attr_groupType = {
+       .local_name = "groupType",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "sambaGroupType",
+};
+
+/* sambaNTPassword -> ntPwdHash*/
+const struct ldb_map_attribute attr_ntPwdHash = {
+       .local_name = "badPwdCount",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "sambaNTPassword",
+};
+
+/* sambaPrimaryGroupSID -> primaryGroupID */
+const struct ldb_map_attribute attr_primaryGroupID = {
+       .local_name = "primaryGroupID",
+       .type = MAP_CONVERT,
+       .u.convert.remote_name = "sambaPrimaryGroupSID",
+       .u.convert.convert_local = NULL, /* FIXME: Add domain SID */
+       .u.convert.convert_remote = NULL, /* FIXME: Extract RID */
+};
+
+/* sambaBadPasswordCount -> badPwdCount */
+const struct ldb_map_attribute attr_badPwdCount = {
+       .local_name = "badPwdCount",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "sambaBadPasswordCount",
+};
+
+/* sambaLogonTime -> lastLogon*/
+const struct ldb_map_attribute attr_lastLogon = {
+       .local_name = "lastLogon",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "sambaLogonTime",
+};
+
+/* sambaLogoffTime -> lastLogoff*/
+const struct ldb_map_attribute attr_lastLogoff = {
+       .local_name = "lastLogoff",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "sambaLogoffTime",
+};
+
+/* gidNumber -> unixName */
+const struct ldb_map_attribute attr_unixName_gid = {
+       .local_name = "unixName",
+       .type = MAP_CONVERT,
+       .u.convert.remote_name = "gidNumber",
+       .u.convert.convert_local = NULL, /* FIXME: Lookup gid */
+       .u.convert.convert_remote = NULL, /* FIXME: Lookup groupname */
+};
+
+/* uid -> unixName */
+const struct ldb_map_attribute attr_unixName_uid = {
+       .local_name = "unixName",
+       .type = MAP_CONVERT,
+       .u.convert.remote_name = "uid",
+       .u.convert.convert_local = NULL, /* FIXME: Lookup uid */
+       .u.convert.convert_remote = NULL, /* FIXME: Lookup username */
+};
+
+/* displayName -> name */
+const struct ldb_map_attribute attr_name = {
+       .local_name = "name",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "displayName",
+};
+
+/* cn */
+const struct ldb_map_attribute attr_cn = {
+       .local_name = "cn",
+       .type = MAP_KEEP,
+};
+
+/* description */
+const struct ldb_map_attribute attr_description = {
+       .local_name = "description",
+       .type = MAP_KEEP,
+};
+
+/* sambaSID -> objectSid*/
+const struct ldb_map_attribute attr_objectSid = {
+       .local_name = "objectSid",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "sambaSID", 
+};
+
+/* sambaPwdLastSet -> pwdLastSet*/
+const struct ldb_map_attribute attr_pwdLastSet = {
+       .local_name = "pwdLastSet",
+       .type = MAP_RENAME,
+       .u.rename.remote_name = "sambaPwdLastSet",
+};
+
+const struct ldb_map_objectclass samba3_objectclasses[] = {
+       { "group", "sambaGroupMapping" },
+       { "user", "sambaSAMAccount" },
+       { "domain", "sambaDomain" },
+};
+
+const struct ldb_map_mappings samba3_mappings = 
+{
+       .name = "samba3",
+       {
+               &attr_objectSid,
+               &attr_pwdLastSet,
+               &attr_description,
+               &attr_cn,
+               &attr_unixName_uid,
+               &attr_unixName_gid,
+               &attr_name,
+               &attr_lastLogoff,
+               &attr_lastLogon,
+               &attr_primaryGroupID,
+               &attr_badPwdCount,
+               &attr_ntPwdHash,
+               &attr_lmPwdHash,
+               &attr_groupType,
+               &attr_badPasswordTime,
+               &attr_nextRid,
+       }
+};     
 
 /* the init function */
 #ifdef HAVE_DLOPEN_DISABLED