2 Samba Unix/Linux SMB client library
3 Distributed SMB/CIFS Server Management Utility
5 Copyright (C) Rafal Szczesniak <mimir@samba.org> 2005
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #include "utils/net/net.h"
23 #include "libnet/libnet.h"
24 #include "auth/credentials/credentials.h"
26 static int net_user_add(struct net_context *ctx, int argc, const char **argv)
29 struct libnet_context *lnet_ctx;
30 struct libnet_CreateUser r;
33 /* command line argument preparation */
36 return net_user_usage(ctx, argc, argv);
39 user_name = talloc_strdup(ctx->mem_ctx, argv[0]);
42 return net_user_usage(ctx, argc, argv);
45 /* libnet context init and its params */
46 lnet_ctx = libnet_context_init(NULL);
47 if (!lnet_ctx) return -1;
49 lnet_ctx->cred = ctx->credentials;
51 /* calling CreateUser function */
52 r.in.user_name = user_name;
53 r.in.domain_name = cli_credentials_get_domain(lnet_ctx->cred);
55 status = libnet_CreateUser(lnet_ctx, ctx->mem_ctx, &r);
56 if (!NT_STATUS_IS_OK(status)) {
57 DEBUG(0, ("Failed to add user account: %s\n",
62 talloc_free(lnet_ctx);
66 static int net_user_delete(struct net_context *ctx, int argc, const char **argv)
69 struct libnet_context *lnet_ctx;
70 struct libnet_DeleteUser r;
73 /* command line argument preparation */
76 return net_user_usage(ctx, argc, argv);
79 user_name = talloc_strdup(ctx->mem_ctx, argv[0]);
82 return net_user_usage(ctx, argc, argv);
85 /* libnet context init and its params */
86 lnet_ctx = libnet_context_init(NULL);
87 if (!lnet_ctx) return -1;
89 lnet_ctx->cred = ctx->credentials;
91 /* calling DeleteUser function */
92 r.in.user_name = user_name;
93 r.in.domain_name = cli_credentials_get_domain(lnet_ctx->cred);
95 status = libnet_DeleteUser(lnet_ctx, ctx->mem_ctx, &r);
96 if (!NT_STATUS_IS_OK(status)) {
97 DEBUG(0, ("Failed to delete user account: %s\n",
102 talloc_free(lnet_ctx);
107 static const struct net_functable net_user_functable[] = {
108 { "add", "create new user account\n", net_user_add, net_user_usage },
109 { "delete", "delete an existing user account\n", net_user_delete, net_user_usage },
114 int net_user(struct net_context *ctx, int argc, const char **argv)
116 return net_run_function(ctx, argc, argv, net_user_functable, net_user_usage);
120 int net_user_usage(struct net_context *ctx, int argc, const char **argv)
122 d_printf("net user <command> [options]\n");