r8561: as with the other ejs subsystems, make nss into a object
authorAndrew Tridgell <tridge@samba.org>
Tue, 19 Jul 2005 00:16:43 +0000 (00:16 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:29:38 +0000 (13:29 -0500)
(This used to be commit a3f3292e6698ce9be6a5036f47dd4fa81a1dfd4e)

source4/scripting/ejs/smbcalls_nss.c
source4/scripting/libjs/provision.js

index 212eb88eb49f78299c51fc80eeff224c7aa95e55..a804c14b7f4382785627ef35290bd363d32cebe0 100644 (file)
@@ -68,7 +68,7 @@ static struct MprVar mpr_group(struct group *grp)
 
 /*
   usage:
-      var pw = getpwnam("root");
+      var pw = nss.getpwnam("root");
 
   returns an object containing struct passwd entries
 */
@@ -86,7 +86,7 @@ static int ejs_getpwnam(MprVarHandle eid, int argc, struct MprVar **argv)
 
 /*
   usage:
-      var pw = getpwuid(0);
+      var pw = nss.getpwuid(0);
 
   returns an object containing struct passwd entries
 */
@@ -103,7 +103,7 @@ static int ejs_getpwuid(MprVarHandle eid, int argc, struct MprVar **argv)
 
 /*
   usage:
-      var pw = getgrnam("users");
+      var pw = nss.getgrnam("users");
 
   returns an object containing struct group entries
 */
@@ -120,7 +120,7 @@ static int ejs_getgrnam(MprVarHandle eid, int argc, struct MprVar **argv)
 
 /*
   usage:
-      var pw = getgrgid(0);
+      var pw = nss.getgrgid(0);
 
   returns an object containing struct group entries
 */
@@ -136,13 +136,28 @@ static int ejs_getgrgid(MprVarHandle eid, int argc, struct MprVar **argv)
 }
 
 
+/*
+  initialise nss ejs subsystem
+*/
+static int ejs_nss_init(MprVarHandle eid, int argc, struct MprVar **argv)
+{
+       struct MprVar *nss;
+       mpr_Return(eid, mprObject("nss"));
+
+       nss  = ejsGetReturnValue(eid);
+
+       mprSetCFunction(nss, "getpwnam", ejs_getpwnam);
+       mprSetCFunction(nss, "getpwuid", ejs_getpwuid);
+       mprSetCFunction(nss, "getgrnam", ejs_getgrnam);
+       mprSetCFunction(nss, "getgrgid", ejs_getgrgid);
+
+       return 0;
+}
+
 /*
   setup C functions that be called from ejs
 */
 void smb_setup_ejs_nss(void)
 {
-       ejsDefineCFunction(-1, "getpwnam", ejs_getpwnam, NULL, MPR_VAR_SCRIPT_HANDLE);
-       ejsDefineCFunction(-1, "getpwuid", ejs_getpwuid, NULL, MPR_VAR_SCRIPT_HANDLE);
-       ejsDefineCFunction(-1, "getgrnam", ejs_getgrnam, NULL, MPR_VAR_SCRIPT_HANDLE);
-       ejsDefineCFunction(-1, "getgrgid", ejs_getgrgid, NULL, MPR_VAR_SCRIPT_HANDLE);
+       ejsDefineCFunction(-1, "nss_init", ejs_nss_init, NULL, MPR_VAR_SCRIPT_HANDLE);
 }
index c7fb1b5fc5188be874988f10795e06fedf212bee..7133e50b4c24eaeed0a1e548b79767c2a378277b 100644 (file)
@@ -196,6 +196,8 @@ function provision(subobj, message)
 function provision_guess()
 {
        var subobj = new Object();
+       var nss = nss_init();
+
        subobj.REALM        = lpGet("realm");
        subobj.DOMAIN       = lpGet("workgroup");
        subobj.HOSTNAME     = hostname();
@@ -213,11 +215,11 @@ function provision_guess()
        subobj.LDAPTIME     = ldaptime;
        subobj.DATESTRING   = datestring;
        subobj.USN          = nextusn;
-       subobj.ROOT         = findnss(getpwnam, "root");
-       subobj.NOBODY       = findnss(getpwnam, "nobody");
-       subobj.NOGROUP      = findnss(getgrnam, "nogroup", "nobody");
-       subobj.WHEEL        = findnss(getgrnam, "wheel", "root");
-       subobj.USERS        = findnss(getgrnam, "users", "guest", "other");
+       subobj.ROOT         = findnss(nss.getpwnam, "root");
+       subobj.NOBODY       = findnss(nss.getpwnam, "nobody");
+       subobj.NOGROUP      = findnss(nss.getgrnam, "nogroup", "nobody");
+       subobj.WHEEL        = findnss(nss.getgrnam, "wheel", "root");
+       subobj.USERS        = findnss(nss.getgrnam, "users", "guest", "other");
        subobj.DNSDOMAIN    = strlower(subobj.REALM);
        subobj.DNSNAME      = sprintf("%s.%s", 
                                      strlower(subobj.HOSTNAME),