diff -Nur source/utils/net.c source/utils/net.c --- source/utils/net.c Fri Sep 27 09:42:34 2002 +++ source/utils/net.c Tue Oct 1 12:22:00 2002 @@ -68,6 +68,7 @@ int opt_port = 0; int opt_maxusers = -1; char *opt_comment = ""; +char *opt_container = "cn=Users"; int opt_flags = -1; int opt_jobid = 0; int opt_timeout = 0; @@ -459,6 +460,7 @@ {"myname", 'n', POPT_ARG_STRING, &opt_requester_name}, {"conf", 's', POPT_ARG_STRING, &servicesf}, {"server", 'S', POPT_ARG_STRING, &opt_host}, + {"container", 'c', POPT_ARG_STRING, &opt_container}, {"comment", 'C', POPT_ARG_STRING, &opt_comment}, {"maxusers", 'M', POPT_ARG_INT, &opt_maxusers}, {"flags", 'F', POPT_ARG_INT, &opt_flags}, diff -Nur source/utils/net.h source/utils/net.h --- source/utils/net.h Tue Jun 25 04:29:09 2002 +++ source/utils/net.h Tue Oct 1 12:19:51 2002 @@ -38,10 +38,8 @@ extern int opt_maxusers; extern char *opt_comment; +extern char *opt_container; extern int opt_flags; - -extern char *opt_comment; - extern char *opt_target_workgroup; extern int opt_long_list_entries; extern int opt_reboot; diff -Nur source/utils/net_ads.c source/utils/net_ads.c --- source/utils/net_ads.c Tue Sep 17 14:15:52 2002 +++ source/utils/net_ads.c Tue Oct 1 12:33:44 2002 @@ -255,7 +255,7 @@ goto done; } - status = ads_add_user_acct(ads, argv[0], opt_comment); + status = ads_add_user_acct(ads, argv[0], opt_container, opt_comment); if (!ADS_ERR_OK(status)) { d_printf("Could not add user %s: %s\n", argv[0], @@ -431,7 +431,7 @@ goto done; } - status = ads_add_group_acct(ads, argv[0], opt_comment); + status = ads_add_group_acct(ads, argv[0], opt_container, opt_comment); if (ADS_ERR_OK(status)) { d_printf("Group %s added\n", argv[0]); diff -Nur source/utils/net_help.c source/utils/net_help.c --- source/utils/net_help.c Tue Sep 24 20:10:30 2002 +++ source/utils/net_help.c Tue Oct 1 13:01:50 2002 @@ -69,14 +69,14 @@ "\n\tDelete specified user\n"); d_printf("\nnet [<method>] user INFO <name> [misc. options] [targets]"\ "\n\tList the domain groups of the specified user\n"); - d_printf("\nnet [<method>] user ADD <name> [password] "\ + d_printf("\nnet [<method>] user ADD <name> [password] [-c container] "\ "[-F user flags] [misc. options]"\ " [targets]\n\tAdd specified user\n"); net_common_methods_usage(argc, argv); net_common_flags_usage(argc, argv); - d_printf( - "\t-C or --comment=<comment>\tdescriptive comment (for add only)\n"); + d_printf("\t-C or --comment=<comment>\tdescriptive comment (for add only)\n"); + d_printf("\t-c or --container=<container>\tLDAP container, defaults to cn=Users (for add in ADS only)\n"); return -1; } @@ -85,12 +85,12 @@ "\n\tList user groups\n\n"); d_printf("net [<method>] group DELETE <name> [misc. options] [targets]"\ "\n\tDelete specified group\n"); - d_printf("\nnet [<method>] group ADD <name> [-C comment]"\ + d_printf("\nnet [<method>] group ADD <name> [-C comment] [-c container]"\ " [misc. options] [targets]\n\tCreate specified group\n"); net_common_methods_usage(argc, argv); net_common_flags_usage(argc, argv); - d_printf( - "\t-C or --comment=<comment>\tdescriptive comment (for add only)\n"); + d_printf("\t-C or --comment=<comment>\tdescriptive comment (for add only)\n"); + d_printf("\t-c or --container=<container>\tLDAP container, defaults to cn=Users (for add in ADS only)\n"); return -1; } diff -Nur source/libads/ldap_user.c source/libads/ldap_user.c --- source/libads/ldap_user.c Wed Aug 7 12:33:22 2002 +++ source/libads/ldap_user.c Tue Oct 1 12:46:08 2002 @@ -38,7 +38,7 @@ } ADS_STATUS ads_add_user_acct(ADS_STRUCT *ads, const char *user, - const char *fullname) + const char *container, const char *fullname) { TALLOC_CTX *ctx; ADS_MODLIST mods; @@ -57,7 +60,7 @@ if (!(upn = talloc_asprintf(ctx, "%s@%s", user, ads->config.realm))) goto done; - if (!(new_dn = talloc_asprintf(ctx, "cn=%s,cn=Users,%s", name, + if (!(new_dn = talloc_asprintf(ctx, "cn=%s,%s,%s", name, container, ads->config.bind_path))) goto done; if (!(controlstr = talloc_asprintf(ctx, "%u", UF_NORMAL_ACCOUNT))) @@ -80,7 +83,7 @@ } ADS_STATUS ads_add_group_acct(ADS_STRUCT *ads, const char *group, - const char *comment) + const char *container, const char *comment) { TALLOC_CTX *ctx; ADS_MODLIST mods; @@ -93,7 +96,7 @@ status = ADS_ERROR(LDAP_NO_MEMORY); - if (!(new_dn = talloc_asprintf(ctx, "cn=%s,cn=Users,%s", group, + if (!(new_dn = talloc_asprintf(ctx, "cn=%s,%s,%s", group, container, ads->config.bind_path))) goto done; if (!(mods = ads_init_mods(ctx))) @@ -102,7 +105,7 @@ ads_mod_str(ctx, &mods, "cn", group); ads_mod_strlist(ctx, &mods, "objectClass",objectClass); ads_mod_str(ctx, &mods, "name", group); - if (comment) + if (comment && *comment) ads_mod_str(ctx, &mods, "description", comment); ads_mod_str(ctx, &mods, "sAMAccountName", group); status = ads_gen_add(ads, new_dn, mods);