summaryrefslogtreecommitdiff
path: root/source4/scripting/ejs/smbcalls_rand.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-07-12 02:34:49 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:20:07 -0500
commitb1e93b296ea8f62ce0f15ccef5f6ae5339f4929f (patch)
tree2ba5c18f14d374a29a79061ee17b7dff28186355 /source4/scripting/ejs/smbcalls_rand.c
parent36bb0ffd4c59b17c7f942d874e18865707d3c696 (diff)
downloadsamba-b1e93b296ea8f62ce0f15ccef5f6ae5339f4929f.tar.gz
samba-b1e93b296ea8f62ce0f15ccef5f6ae5339f4929f.tar.bz2
samba-b1e93b296ea8f62ce0f15ccef5f6ae5339f4929f.zip
r8337: - use 64 bit access functions in ejs calls
- added access to smbd random functions - fixed ordering in join() - added sys_interfaces(), sys_hostname(), sys_nttime() and sys_ldaptime() (This used to be commit 28c1a1f3c0cd2f8228fd8c3c695ab6f45226fa3f)
Diffstat (limited to 'source4/scripting/ejs/smbcalls_rand.c')
-rw-r--r--source4/scripting/ejs/smbcalls_rand.c92
1 files changed, 92 insertions, 0 deletions
diff --git a/source4/scripting/ejs/smbcalls_rand.c b/source4/scripting/ejs/smbcalls_rand.c
new file mode 100644
index 0000000000..d07c6ce233
--- /dev/null
+++ b/source4/scripting/ejs/smbcalls_rand.c
@@ -0,0 +1,92 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ provide access to randomisation functions
+
+ Copyright (C) Andrew Tridgell 2005
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+#include "scripting/ejs/smbcalls.h"
+#include "lib/ejs/ejs.h"
+#include "system/passwd.h"
+
+/*
+ usage:
+ var i = random();
+*/
+static int ejs_random(MprVarHandle eid, int argc, struct MprVar **argv)
+{
+ mpr_Return(eid, mprCreateIntegerVar(generate_random()));
+ return 0;
+}
+
+/*
+ usage:
+ var s = randpass(len);
+*/
+static int ejs_randpass(MprVarHandle eid, int argc, struct MprVar **argv)
+{
+ char *s;
+ if (argc != 1 || !mprVarIsNumber(argv[0]->type)) {
+ ejsSetErrorMsg(eid, "randpass invalid arguments");
+ return -1;
+ }
+ s = generate_random_str(mprMemCtx(), mprToInt(argv[0]));
+ mpr_Return(eid, mprString(s));
+ talloc_free(s);
+ return 0;
+}
+
+/*
+ usage:
+ var guid = randguid();
+*/
+static int ejs_randguid(MprVarHandle eid, int argc, struct MprVar **argv)
+{
+ struct GUID guid = GUID_random();
+ char *s = GUID_string(mprMemCtx(), &guid);
+ mpr_Return(eid, mprString(s));
+ talloc_free(s);
+ return 0;
+}
+
+/*
+ usage:
+ var sid = randsid();
+*/
+static int ejs_randsid(MprVarHandle eid, int argc, struct MprVar **argv)
+{
+ char *s = talloc_asprintf(mprMemCtx(), "S-1-5-21-%8u-%8u-%8u",
+ (unsigned)generate_random(),
+ (unsigned)generate_random(),
+ (unsigned)generate_random());
+ mpr_Return(eid, mprString(s));
+ talloc_free(s);
+ return 0;
+}
+
+/*
+ setup C functions that be called from ejs
+*/
+void smb_setup_ejs_random(void)
+{
+ ejsDefineCFunction(-1, "random", ejs_random, NULL, MPR_VAR_SCRIPT_HANDLE);
+ ejsDefineCFunction(-1, "randpass", ejs_randpass, NULL, MPR_VAR_SCRIPT_HANDLE);
+ ejsDefineCFunction(-1, "randguid", ejs_randguid, NULL, MPR_VAR_SCRIPT_HANDLE);
+ ejsDefineCFunction(-1, "randsid", ejs_randsid, NULL, MPR_VAR_SCRIPT_HANDLE);
+}