From 082a5684738e7b9fce7466d7e7519816605b0958 Mon Sep 17 00:00:00 2001 From: Rafal Szczesniak Date: Mon, 14 Feb 2005 00:59:52 +0000 Subject: r5381: Added net_user.c with net tool interface for managing user accounts. rafal (This used to be commit 3005f0408c647fcab65c11de9bf680f7f5831492) --- source4/utils/net/config.mk | 3 +- source4/utils/net/net.c | 1 + source4/utils/net/net_user.c | 95 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 source4/utils/net/net_user.c (limited to 'source4') diff --git a/source4/utils/net/config.mk b/source4/utils/net/config.mk index e1bc813bec..14b4683b9f 100644 --- a/source4/utils/net/config.mk +++ b/source4/utils/net/config.mk @@ -7,7 +7,8 @@ OBJ_FILES = \ utils/net/net.o \ utils/net/net_password.o \ utils/net/net_time.o \ - utils/net/net_join.o + utils/net/net_join.o \ + utils/net/net_user.o REQUIRED_SUBSYSTEMS = \ CONFIG \ LIBCMDLINE \ diff --git a/source4/utils/net/net.c b/source4/utils/net/net.c index 7b716f0916..63f19624f0 100644 --- a/source4/utils/net/net.c +++ b/source4/utils/net/net.c @@ -140,6 +140,7 @@ static const struct net_functable net_functable[] = { {"password", net_password, net_password_usage, net_password_help}, {"time", net_time, net_time_usage, net_time_help}, {"join", net_join, net_join_usage, net_join_help}, + {"user", net_user, net_user_usage, net_user_help}, {"help", net_help, net_help_usage, net_help}, {NULL, NULL} }; diff --git a/source4/utils/net/net_user.c b/source4/utils/net/net_user.c new file mode 100644 index 0000000000..a28d774d36 --- /dev/null +++ b/source4/utils/net/net_user.c @@ -0,0 +1,95 @@ +/* + Samba Unix/Linux SMB client library + Distributed SMB/CIFS Server Management Utility + + Copyright (C) Rafal Szczesniak 2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "includes.h" +#include "utils/net/net.h" +#include "libnet/libnet.h" +#include "librpc/gen_ndr/ndr_samr.h" + +static int net_user_add(struct net_context *ctx, int argc, const char **argv) +{ + NTSTATUS status; + struct libnet_context *lnet_ctx; + union libnet_CreateUser r; + char *user_name; + + /* command line argument preparation */ + switch (argc) { + case 0: + return net_user_usage(ctx, argc, argv); + break; + case 1: + user_name = talloc_strdup(ctx->mem_ctx, argv[0]); + break; + default: + return net_user_usage(ctx, argc, argv); + } + + /* libnet context init and its params */ + lnet_ctx = libnet_context_init(); + if (!lnet_ctx) return -1; + + lnet_ctx->user.domain_name = ctx->user.domain_name; + lnet_ctx->user.account_name = ctx->user.account_name; + lnet_ctx->user.password = ctx->user.password; + + /* calling CreateUser function */ + r.generic.level = LIBNET_CREATE_USER_GENERIC; + r.generic.in.user_name = user_name; + r.generic.in.domain_name = lnet_ctx->user.domain_name; + + status = libnet_CreateUser(lnet_ctx, ctx->mem_ctx, &r); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(0, ("Failed to add user account: %s\n", + r.generic.out.error_string)); + return -1; + } + + libnet_context_destroy(&lnet_ctx); + return 0; +} + + +static const struct net_functable net_user_functable[] = { + { "add", net_user_add, net_user_usage, net_user_help }, + { NULL, NULL } +}; + + +int net_user(struct net_context *ctx, int argc, const char **argv) +{ + return net_run_function(ctx, argc, argv, net_user_functable, net_user_usage); +} + + +int net_user_help(struct net_context *ctx, int argc, const char **argv) +{ + d_printf("User accounts management:\n"); + d_printf("\t\tadd\t creates new account\n"); + return 0; +} + + +int net_user_usage(struct net_context *ctx, int argc, const char **argv) +{ + d_printf("net user [options]\n"); + return 0; +} -- cgit