[SCM] Samba Shared Repository - branch v3-2-test updated -
release-3-2-0pre2-939-g4868b4e
Günther Deschner
gd at samba.org
Wed Apr 16 00:45:33 GMT 2008
The branch, v3-2-test has been updated
via 4868b4ea1a18d4218330c49bf57818c4b5117d1d (commit)
via 0105770c1598e6fcbcaa29e17f3b7fd33114a333 (commit)
via 9bbb6cea0b21d98ae13f7a41226b437515bd5a2f (commit)
via 82803186febfe6a55c1a598073657c2c4a513000 (commit)
via dc165e1c80586664ddb4d3d68182598d02ba204a (commit)
from 020b1e6431601fadf44dbfe8393908c096ecfa4c (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit 4868b4ea1a18d4218330c49bf57818c4b5117d1d
Author: Günther Deschner <gd at samba.org>
Date: Wed Apr 16 02:41:52 2008 +0200
net: Use NetUserAdd for "net rpc user add".
Guenther
commit 0105770c1598e6fcbcaa29e17f3b7fd33114a333
Author: Günther Deschner <gd at samba.org>
Date: Wed Apr 16 02:39:41 2008 +0200
net: use NetUserDel for "net rpc user delete".
Guenther
commit 9bbb6cea0b21d98ae13f7a41226b437515bd5a2f
Author: Günther Deschner <gd at samba.org>
Date: Wed Apr 16 02:38:13 2008 +0200
libnetapi: Let NetUserAdd_l/NetUserDel_l talk to the local RPC server.
Guenther
commit 82803186febfe6a55c1a598073657c2c4a513000
Author: Günther Deschner <gd at samba.org>
Date: Wed Apr 16 02:37:27 2008 +0200
errors: Add WERR_NO_SUCH_USER.
Guenther
commit dc165e1c80586664ddb4d3d68182598d02ba204a
Author: Günther Deschner <gd at samba.org>
Date: Wed Apr 16 02:23:20 2008 +0200
errors: Add WERR_NONE_MAPPED.
Guenther
-----------------------------------------------------------------------
Summary of changes:
source/include/doserr.h | 2 +
source/lib/netapi/user.c | 30 ++++++++++++++-------
source/libsmb/doserr.c | 4 +++
source/utils/net_rpc.c | 64 ++++++++++++++++++++++++++++++++++++++++++---
4 files changed, 85 insertions(+), 15 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/include/doserr.h b/source/include/doserr.h
index 684f172..65892d3 100644
--- a/source/include/doserr.h
+++ b/source/include/doserr.h
@@ -207,9 +207,11 @@
#define WERR_NO_LOGON_SERVERS W_ERROR(1311)
#define WERR_NO_SUCH_LOGON_SESSION W_ERROR(1312)
#define WERR_USER_ALREADY_EXISTS W_ERROR(1316)
+#define WERR_NO_SUCH_USER W_ERROR(1317)
#define WERR_PASSWORD_RESTRICTION W_ERROR(1325)
#define WERR_LOGON_FAILURE W_ERROR(1326)
#define WERR_NO_SUCH_DOMAIN W_ERROR(1355)
+#define WERR_NONE_MAPPED W_ERROR(1332)
#define WERR_INVALID_SECURITY_DESCRIPTOR W_ERROR(1338)
#define WERR_INVALID_DOMAIN_STATE W_ERROR(1353)
#define WERR_INVALID_DOMAIN_ROLE W_ERROR(1354)
diff --git a/source/lib/netapi/user.c b/source/lib/netapi/user.c
index 55d9795..05a0510 100644
--- a/source/lib/netapi/user.c
+++ b/source/lib/netapi/user.c
@@ -27,15 +27,6 @@
/****************************************************************
****************************************************************/
-WERROR NetUserAdd_l(struct libnetapi_ctx *ctx,
- struct NetUserAdd *r)
-{
- return WERR_NOT_SUPPORTED;
-}
-
-/****************************************************************
-****************************************************************/
-
static void convert_USER_INFO_1_to_samr_user_info25(struct USER_INFO_1 *info1,
DATA_BLOB *user_session_key,
struct samr_UserInfo25 *info25)
@@ -344,6 +335,20 @@ WERROR NetUserAdd_r(struct libnetapi_ctx *ctx,
/****************************************************************
****************************************************************/
+WERROR NetUserAdd_l(struct libnetapi_ctx *ctx,
+ struct NetUserAdd *r)
+{
+ /* for now just talk to local RPC server */
+ if (!r->in.server_name) {
+ r->in.server_name = "localhost";
+ }
+
+ return NetUserAdd_r(ctx, r);
+}
+
+/****************************************************************
+****************************************************************/
+
WERROR NetUserDel_r(struct libnetapi_ctx *ctx,
struct NetUserDel *r)
{
@@ -515,7 +520,12 @@ WERROR NetUserDel_r(struct libnetapi_ctx *ctx,
WERROR NetUserDel_l(struct libnetapi_ctx *ctx,
struct NetUserDel *r)
{
- return WERR_NOT_SUPPORTED;
+ /* for now just talk to local RPC server */
+ if (!r->in.server_name) {
+ r->in.server_name = "localhost";
+ }
+
+ return NetUserDel_r(ctx, r);
}
/****************************************************************
diff --git a/source/libsmb/doserr.c b/source/libsmb/doserr.c
index fb5f2e1..8761106 100644
--- a/source/libsmb/doserr.c
+++ b/source/libsmb/doserr.c
@@ -67,6 +67,7 @@ werror_code_struct dos_errs[] =
{ "WERR_NO_LOGON_SERVERS", WERR_NO_LOGON_SERVERS },
{ "WERR_NO_SUCH_LOGON_SESSION", WERR_NO_SUCH_LOGON_SESSION },
{ "WERR_USER_ALREADY_EXISTS", WERR_USER_ALREADY_EXISTS },
+ { "WERR_NO_SUCH_USER", WERR_NO_SUCH_USER },
{ "WERR_PRINTER_DRIVER_IN_USE", WERR_PRINTER_DRIVER_IN_USE },
{ "WERR_STATUS_MORE_ENTRIES ", WERR_STATUS_MORE_ENTRIES },
{ "WERR_DFS_NO_SUCH_VOL", WERR_DFS_NO_SUCH_VOL },
@@ -85,6 +86,7 @@ werror_code_struct dos_errs[] =
{ "WERR_LOGON_FAILURE", WERR_LOGON_FAILURE },
{ "WERR_PASSWORD_RESTRICTION", WERR_PASSWORD_RESTRICTION },
{ "WERR_NO_SUCH_DOMAIN", WERR_NO_SUCH_DOMAIN },
+ { "WERR_NONE_MAPPED", WERR_NONE_MAPPED },
{ "WERR_INVALID_SECURITY_DESCRIPTOR", WERR_INVALID_SECURITY_DESCRIPTOR },
{ "WERR_INVALID_DOMAIN_STATE", WERR_INVALID_DOMAIN_STATE },
{ "WERR_INVALID_DOMAIN_ROLE", WERR_INVALID_DOMAIN_ROLE },
@@ -130,6 +132,8 @@ werror_str_struct dos_err_strs[] = {
{ WERR_TIME_SKEW, "Time difference between client and server" },
{ WERR_USER_ALREADY_EXISTS, "User already exists" },
{ WERR_PASSWORD_RESTRICTION, "Password does not meet restrictions" },
+ { WERR_NONE_MAPPED, "Could not map names to SIDs" },
+ { WERR_NO_SUCH_USER, "No such User" },
};
/*****************************************************************************
diff --git a/source/utils/net_rpc.c b/source/utils/net_rpc.c
index 5663680..d0e0487 100644
--- a/source/utils/net_rpc.c
+++ b/source/utils/net_rpc.c
@@ -730,8 +730,34 @@ static NTSTATUS rpc_user_add_internals(const DOM_SID *domain_sid,
static int rpc_user_add(int argc, const char **argv)
{
- return run_rpc_command(NULL, PI_SAMR, 0, rpc_user_add_internals,
- argc, argv);
+ NET_API_STATUS status;
+ struct USER_INFO_1 info1;
+ uint32_t parm_error = 0;
+
+ if (argc < 1) {
+ d_printf("User must be specified\n");
+ rpc_user_usage(argc, argv);
+ return 0;
+ }
+
+ ZERO_STRUCT(info1);
+
+ info1.usri1_name = argv[0];
+ if (argc == 2) {
+ info1.usri1_password = argv[1];
+ }
+
+ status = NetUserAdd(opt_host, 1, (uint8_t *)&info1, &parm_error);
+
+ if (status != 0) {
+ d_fprintf(stderr, "Failed to add user '%s' with: %s.\n",
+ argv[0], libnetapi_get_error_string(NULL, status));
+ return -1;
+ } else {
+ d_printf("Added user '%s'.\n", argv[0]);
+ }
+
+ return 0;
}
/**
@@ -987,8 +1013,26 @@ static int rpc_user_rename(int argc, const char **argv)
static int rpc_user_delete(int argc, const char **argv)
{
- return run_rpc_command(NULL, PI_SAMR, 0, rpc_user_del_internals,
- argc, argv);
+ NET_API_STATUS status;
+
+ if (argc < 1) {
+ d_printf("User must be specified\n");
+ rpc_user_usage(argc, argv);
+ return 0;
+ }
+
+ status = NetUserDel(opt_host, argv[0]);
+
+ if (status != 0) {
+ d_fprintf(stderr, "Failed to delete user '%s' with: %s.\n",
+ argv[0],
+ libnetapi_get_error_string(NULL, status));
+ return -1;
+ } else {
+ d_printf("Deleted user '%s'.\n", argv[0]);
+ }
+
+ return 0;
}
/**
@@ -1360,6 +1404,9 @@ static NTSTATUS rpc_user_list_internals(const DOM_SID *domain_sid,
int net_rpc_user(int argc, const char **argv)
{
+ struct libnetapi_ctx *ctx = NULL;
+ NET_API_STATUS status;
+
struct functable func[] = {
{"add", rpc_user_add},
{"info", rpc_user_info},
@@ -1368,7 +1415,14 @@ int net_rpc_user(int argc, const char **argv)
{"rename", rpc_user_rename},
{NULL, NULL}
};
-
+
+ status = libnetapi_init(&ctx);
+ if (status != 0) {
+ return -1;
+ }
+ libnetapi_set_username(ctx, opt_user_name);
+ libnetapi_set_password(ctx, opt_password);
+
if (argc == 0) {
return run_rpc_command(NULL,PI_SAMR, 0,
rpc_user_list_internals,
--
Samba Shared Repository
More information about the samba-cvs
mailing list