svn commit: samba r7380 - in branches/SAMBA_4_0/source/libnet: .

mimir at samba.org mimir at samba.org
Tue Jun 7 23:24:10 GMT 2005


Author: mimir
Date: 2005-06-07 23:24:10 +0000 (Tue, 07 Jun 2005)
New Revision: 7380

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=7380

Log:
Mistakenly put one file twice in command line. Here's source of
CreateUser call. It serves one level of call by now. Once any
more is needed it can be placed, of course.


rafal


Modified:
   branches/SAMBA_4_0/source/libnet/libnet_user.c


Changeset:
Modified: branches/SAMBA_4_0/source/libnet/libnet_user.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_user.c	2005-06-07 23:21:38 UTC (rev 7379)
+++ branches/SAMBA_4_0/source/libnet/libnet_user.c	2005-06-07 23:24:10 UTC (rev 7380)
@@ -21,35 +21,22 @@
 
 #include "includes.h"
 #include "libnet/libnet.h"
+#include "libnet/composite.h"
 #include "librpc/gen_ndr/ndr_samr.h"
 
 
-static NTSTATUS libnet_CreateUser_generic(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, union libnet_CreateUser *r)
+NTSTATUS libnet_CreateUser(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, struct libnet_CreateUser *r)
 {
 	NTSTATUS status;
-	union libnet_CreateUser r2;
-	
-	r2.samr.level             = LIBNET_CREATE_USER_SAMR;
-	r2.samr.in.user_name      = r->generic.in.user_name;
-	r2.samr.in.domain_name    = r->generic.in.domain_name;
-	
-	status = libnet_CreateUser(ctx, mem_ctx, &r2);
-	
-	r->generic.out.error_string   = r2.samr.out.error_string;
-
-	return status;
-}
-
-
-static NTSTATUS libnet_CreateUser_samr(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, union libnet_CreateUser *r)
-{
-	NTSTATUS status;
 	union libnet_rpc_connect cn;
 	union libnet_find_pdc fp;
+	struct dcerpc_pipe *pipe;
+	struct rpc_composite_domain_open dom_io;
+	struct rpc_composite_useradd user_io;
 	
 	/* find domain pdc */
 	fp.generic.level             = LIBNET_FIND_PDC_GENERIC;
-	fp.generic.in.domain_name    = r->samr.in.domain_name;
+	fp.generic.in.domain_name    = r->in.domain_name;
 
 	status = libnet_find_pdc(ctx, mem_ctx, &fp);
 	if (!NT_STATUS_IS_OK(status)) return status;
@@ -63,25 +50,41 @@
 
 	status = libnet_rpc_connect(ctx, mem_ctx, &cn);
 	if (!NT_STATUS_IS_OK(status)) {
-		r->samr.out.error_string = talloc_asprintf(mem_ctx,
-							   "Connection to SAMR pipe domain '%s' PDC failed: %s\n",
-							   r->samr.in.domain_name, nt_errstr(status));
+		r->out.error_string = talloc_asprintf(mem_ctx,
+						      "Connection to SAMR pipe domain '%s' PDC failed: %s\n",
+						      r->in.domain_name, nt_errstr(status));
 		return status;
 	}
 
-	/* create user via samr call (to be continued) */
-	return status;
-}
+	ctx->samr = cn.pdc.out.dcerpc_pipe;
 
+	/* open connected domain */
+	dom_io.in.domain_name   = r->in.domain_name;
+	dom_io.in.access_mask   = SEC_FLAG_MAXIMUM_ALLOWED;
+	
+	status = rpc_composite_domain_open(ctx->samr, mem_ctx, &dom_io);
+	if (!NT_STATUS_IS_OK(status)) {
+		r->out.error_string = talloc_asprintf(mem_ctx,
+						      "Creating user account failed: %s\n",
+						      nt_errstr(status));
+		return status;
+	}
 
-NTSTATUS libnet_CreateUser(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, union libnet_CreateUser *r)
-{
-	switch (r->generic.level) {
-	case LIBNET_CREATE_USER_GENERIC:
-		return libnet_CreateUser_generic(ctx, mem_ctx, r);
-	case LIBNET_CREATE_USER_SAMR:
-		return libnet_CreateUser_samr(ctx, mem_ctx, r);
+	ctx->domain_handle = dom_io.out.domain_handle;
+
+	/* create user */
+	user_io.in.username       = r->in.user_name;
+	user_io.in.domain_handle  = dom_io.out.domain_handle;
+
+	status = rpc_composite_useradd(ctx->samr, mem_ctx, &user_io);
+	if (!NT_STATUS_IS_OK(status)) {
+		r->out.error_string = talloc_asprintf(mem_ctx,
+						      "Creating user account failed: %s\n",
+						      nt_errstr(status));
+		return status;
 	}
 
-	return NT_STATUS_INVALID_LEVEL;
+	ctx->user_handle = user_io.out.user_handle;
+
+	return status;
 }



More information about the samba-cvs mailing list