svn commit: samba r8256 - in branches/SAMBA_4_0/source: librpc/idl scripting/ejs

tridge at samba.org tridge at samba.org
Sat Jul 9 05:28:43 GMT 2005


Author: tridge
Date: 2005-07-09 05:28:42 +0000 (Sat, 09 Jul 2005)
New Revision: 8256

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

Log:
- allow rpc calls from non-command line ejs contexts by creating a set
  of null credentials to use if cmdline_credentials is not setup

- hide the length and size elements of a lsa_String from js scripts,
  so you can use a lsa_String just as an ordinary string without
  knowing its a structure. We won't do this with all structures, just
  a few core ones that are used often enough to warrant it.

- make sure returned ldb arrays have a length property


Modified:
   branches/SAMBA_4_0/source/librpc/idl/lsa.idl
   branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c
   branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.h
   branches/SAMBA_4_0/source/scripting/ejs/mprutil.c
   branches/SAMBA_4_0/source/scripting/ejs/smbcalls_rpc.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/lsa.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/lsa.idl	2005-07-09 05:25:08 UTC (rev 8255)
+++ branches/SAMBA_4_0/source/librpc/idl/lsa.idl	2005-07-09 05:28:42 UTC (rev 8256)
@@ -13,7 +13,7 @@
   depends(security)
 ] interface lsarpc
 {
-	typedef [public] struct {
+	typedef [public,noejs] struct {
 		[value(2*strlen_m(string))] uint16 length;
 		[value(2*strlen_m(string))] uint16 size;
 		unistr_noterm *string;

Modified: branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c	2005-07-09 05:25:08 UTC (rev 8255)
+++ branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c	2005-07-09 05:28:42 UTC (rev 8256)
@@ -22,8 +22,9 @@
 
 #include "includes.h"
 #include "lib/ejs/ejs.h"
+#include "librpc/gen_ndr/ndr_security.h"
+#include "librpc/gen_ndr/ndr_lsa.h"
 #include "scripting/ejs/ejsrpc.h"
-#include "librpc/gen_ndr/ndr_security.h"
 
 NTSTATUS ejs_pull_rpc(int eid, const char *callname, 
 		      struct MprVar *v, void *ptr, ejs_pull_function_t ejs_pull)
@@ -423,3 +424,21 @@
 	}
 	return False;
 }
+
+/*
+  pull a lsa_String
+*/
+NTSTATUS ejs_pull_lsa_String(struct ejs_rpc *ejs, 
+			     struct MprVar *v, const char *name, struct lsa_String *r)
+{
+	return ejs_pull_string(ejs, v, name, &r->string);
+}
+
+/*
+  push a lsa_String
+*/
+NTSTATUS ejs_push_lsa_String(struct ejs_rpc *ejs, 
+			     struct MprVar *v, const char *name, const struct lsa_String *r)
+{
+	return ejs_push_string(ejs, v, name, r->string);
+}

Modified: branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.h
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.h	2005-07-09 05:25:08 UTC (rev 8255)
+++ branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.h	2005-07-09 05:28:42 UTC (rev 8256)
@@ -90,6 +90,7 @@
 NTSTATUS ejs_push_null(struct ejs_rpc *ejs, struct MprVar *v, const char *name);
 BOOL ejs_pull_null(struct ejs_rpc *ejs, struct MprVar *v, const char *name);
 
+
 #define EJS_ALLOC_SIZE(ejs, s, size) do { \
   (s) = talloc_size(ejs, size); \
   if (!(s)) return ejs_panic(ejs, "out of memory"); \

Modified: branches/SAMBA_4_0/source/scripting/ejs/mprutil.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/mprutil.c	2005-07-09 05:25:08 UTC (rev 8255)
+++ branches/SAMBA_4_0/source/scripting/ejs/mprutil.c	2005-07-09 05:28:42 UTC (rev 8256)
@@ -119,6 +119,7 @@
 	for (i=0;i<count;i++) {
 		mprAddArray(&res, i, mprLdbMessage(msg[i]));
 	}
+	mprSetPropertyValue(&res, "length", mprCreateIntegerVar(i));
 	return res;	
 }
 

Modified: branches/SAMBA_4_0/source/scripting/ejs/smbcalls_rpc.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/smbcalls_rpc.c	2005-07-09 05:25:08 UTC (rev 8255)
+++ branches/SAMBA_4_0/source/scripting/ejs/smbcalls_rpc.c	2005-07-09 05:28:42 UTC (rev 8256)
@@ -39,6 +39,8 @@
 	NTSTATUS status;
 	struct dcerpc_pipe *p;
 	struct MprVar *conn;
+	struct cli_credentials *creds = cmdline_credentials;
+	struct event_context *ev;
 
 	/* validate arguments */
 	if (argc != 3 ||
@@ -59,9 +61,18 @@
 		goto done;
 	}
 
+	if (creds == NULL) {
+		creds = cli_credentials_init(mprMemCtx());
+		cli_credentials_guess(creds);
+		cli_credentials_set_username(creds, "", CRED_GUESSED);
+		cli_credentials_set_password(creds, "", CRED_GUESSED);
+	}
+
+	ev = talloc_find_parent_bytype(mprMemCtx(), struct event_context);
+
 	status = dcerpc_pipe_connect(mprMemCtx(), &p, binding, 
 				     iface->uuid, iface->if_version, 
-				     cmdline_credentials, NULL);
+				     creds, ev);
 	if (!NT_STATUS_IS_OK(status)) goto done;
 
 	/* callers don't allocate ref vars in the ejs interface */



More information about the samba-cvs mailing list