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/net_user.c | 95 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 source4/utils/net/net_user.c (limited to 'source4/utils/net/net_user.c') 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