[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