libads/ldap_user.c

ソースコードを見る。

関数

ADS_STATUS ads_find_user_acct (ADS_STRUCT *ads, LDAPMessage **res, const char *user)
ADS_STATUS ads_add_user_acct (ADS_STRUCT *ads, const char *user, const char *container, const char *fullname)
ADS_STATUS ads_add_group_acct (ADS_STRUCT *ads, const char *group, const char *container, const char *comment)


関数

ADS_STATUS ads_find_user_acct ( ADS_STRUCT ads,
LDAPMessage **  res,
const char *  user 
)

ldap_user.c28 行で定義されています。

参照先 ads_search()asprintf()escape_ldap_string_alloc()status.

参照元 ads_group_add()ads_group_delete()ads_user_add()ads_user_delete().

00030 {
00031         ADS_STATUS status;
00032         char *ldap_exp;
00033         const char *attrs[] = {"*", NULL};
00034         char *escaped_user = escape_ldap_string_alloc(user);
00035         if (!escaped_user) {
00036                 return ADS_ERROR(LDAP_NO_MEMORY);
00037         }
00038 
00039         asprintf(&ldap_exp, "(samAccountName=%s)", escaped_user);
00040         status = ads_search(ads, res, ldap_exp, attrs);
00041         SAFE_FREE(ldap_exp);
00042         SAFE_FREE(escaped_user);
00043         return status;
00044 }

ADS_STATUS ads_add_user_acct ( ADS_STRUCT ads,
const char *  user,
const char *  container,
const char *  fullname 
)

ldap_user.c46 行で定義されています。

参照先 ads_gen_add()ads_init_mods()ads_mod_str()ads_mod_strlist()ADS_STRUCT::bind_pathADS_STRUCT::configctxescape_rdn_val_string_alloc()nameADS_STRUCT::realmstatustalloc_asprintf()talloc_init().

参照元 ads_user_add().

00048 {
00049         TALLOC_CTX *ctx;
00050         ADS_MODLIST mods;
00051         ADS_STATUS status;
00052         const char *upn, *new_dn, *name, *controlstr;
00053         char *name_escaped = NULL;
00054         const char *objectClass[] = {"top", "person", "organizationalPerson",
00055                                      "user", NULL};
00056 
00057         if (fullname && *fullname) name = fullname;
00058         else name = user;
00059 
00060         if (!(ctx = talloc_init("ads_add_user_acct")))
00061                 return ADS_ERROR(LDAP_NO_MEMORY);
00062 
00063         status = ADS_ERROR(LDAP_NO_MEMORY);
00064 
00065         if (!(upn = talloc_asprintf(ctx, "%s@%s", user, ads->config.realm)))
00066                 goto done;
00067         if (!(name_escaped = escape_rdn_val_string_alloc(name)))
00068                 goto done;
00069         if (!(new_dn = talloc_asprintf(ctx, "cn=%s,%s,%s", name_escaped, container,
00070                                        ads->config.bind_path)))
00071                 goto done;
00072         if (!(controlstr = talloc_asprintf(ctx, "%u", (UF_NORMAL_ACCOUNT | UF_ACCOUNTDISABLE))))
00073                 goto done;
00074         if (!(mods = ads_init_mods(ctx)))
00075                 goto done;
00076 
00077         ads_mod_str(ctx, &mods, "cn", name);
00078         ads_mod_strlist(ctx, &mods, "objectClass", objectClass);
00079         ads_mod_str(ctx, &mods, "userPrincipalName", upn);
00080         ads_mod_str(ctx, &mods, "name", name);
00081         ads_mod_str(ctx, &mods, "displayName", name);
00082         ads_mod_str(ctx, &mods, "sAMAccountName", user);
00083         ads_mod_str(ctx, &mods, "userAccountControl", controlstr);
00084         status = ads_gen_add(ads, new_dn, mods);
00085 
00086  done:
00087         SAFE_FREE(name_escaped);
00088         talloc_destroy(ctx);
00089         return status;
00090 }

ADS_STATUS ads_add_group_acct ( ADS_STRUCT ads,
const char *  group,
const char *  container,
const char *  comment 
)

ldap_user.c92 行で定義されています。

参照先 ads_gen_add()ads_init_mods()ads_mod_str()ads_mod_strlist()ADS_STRUCT::bind_pathADS_STRUCT::configctxescape_rdn_val_string_alloc()statustalloc_asprintf()talloc_init().

参照元 ads_group_add().

00094 {
00095         TALLOC_CTX *ctx;
00096         ADS_MODLIST mods;
00097         ADS_STATUS status;
00098         char *new_dn;
00099         char *name_escaped = NULL;
00100         const char *objectClass[] = {"top", "group", NULL};
00101 
00102         if (!(ctx = talloc_init("ads_add_group_acct")))
00103                 return ADS_ERROR(LDAP_NO_MEMORY);
00104 
00105         status = ADS_ERROR(LDAP_NO_MEMORY);
00106 
00107         if (!(name_escaped = escape_rdn_val_string_alloc(group)))
00108                 goto done;
00109         if (!(new_dn = talloc_asprintf(ctx, "cn=%s,%s,%s", name_escaped, container,
00110                                        ads->config.bind_path)))
00111                 goto done;
00112         if (!(mods = ads_init_mods(ctx)))
00113                 goto done;
00114 
00115         ads_mod_str(ctx, &mods, "cn", group);
00116         ads_mod_strlist(ctx, &mods, "objectClass",objectClass);
00117         ads_mod_str(ctx, &mods, "name", group);
00118         if (comment && *comment) 
00119                 ads_mod_str(ctx, &mods, "description", comment);
00120         ads_mod_str(ctx, &mods, "sAMAccountName", group);
00121         status = ads_gen_add(ads, new_dn, mods);
00122 
00123  done:
00124         SAFE_FREE(name_escaped);
00125         talloc_destroy(ctx);
00126         return status;
00127 }


Sambaに対してSat Aug 29 21:23:42 2009に生成されました。  doxygen 1.4.7