r9477: Convert popt options to an ejs object. Doesn't seem to break anything
authorRafal Szczesniak <mimir@samba.org>
Mon, 22 Aug 2005 14:32:58 +0000 (14:32 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:34:20 +0000 (13:34 -0500)
except of popt help (-h) option (unexpected ?).

rafal
(This used to be commit 1990793b23d6198a85ce1bdf6ad43e12015db203)

source4/scripting/bin/smbstatus
source4/scripting/ejs/smbcalls_auth.c
source4/scripting/ejs/smbcalls_creds.c
source4/scripting/ejs/smbcalls_options.c
source4/setup/newuser
source4/setup/provision

index 38f2ab06a9486d43f3d8a680abcd139a38ea65fe..d5610023d688e3b86e0924587cba30fde5315b5b 100755 (executable)
@@ -11,12 +11,12 @@ libinclude("management.js");
 
 var options = new Object();
 
-ok = GetOptions(ARGV, options,
+options = GetOptions(ARGV,
                "POPT_AUTOHELP",
                "POPT_COMMON_SAMBA",
                "POPT_COMMON_VERSION",
                "nbt");
-if (ok == false) {
+if (options == undefined) {
        println("Failed to parse options: " + options.ERROR);
        return -1;
 }
index 4b3534b4cc3d8f35621d0f8eedb7b26f795df86e..37ac9543ccee35622886c43dfd5aa2f08301a432 100644 (file)
@@ -105,16 +105,19 @@ static int ejs_userAuth(MprVarHandle eid, int argc, struct MprVar **argv)
        const char *password;
        const char *domain;
        const char *remote_host;
-       struct MprVar auth;
+       struct MprVar auth, *creds_obj;
+       struct cli_credentials *creds;
 
        if (argc != 1 || argv[0]->type != MPR_TYPE_OBJECT) {
                ejsSetErrorMsg(eid, "userAuth invalid arguments, this function requires an object.");
                return -1;
        }
 
-       username = mprToString(mprGetProperty(argv[0], "username", NULL));
-       password = mprToString(mprGetProperty(argv[0], "password", NULL));
-       domain = mprToString(mprGetProperty(argv[0], "domain", NULL));
+       /* get credential values from credentials object */
+       creds = mprGetPtr(argv[0], "creds");
+       username    = cli_credentials_get_username(creds);
+       password    = cli_credentials_get_password(creds);
+       domain      = cli_credentials_get_domain(creds);
        remote_host = mprToString(mprGetProperty(argv[0], "rhost", NULL));
 
        if (username == NULL || password == NULL || domain == NULL) {
index 61a5139cda184ff3b9b12353c966f36a8c0eec4f..45da5895e42fbd5e9e300c39e5dab182cf6295c0 100644 (file)
@@ -23,6 +23,7 @@
 #include "includes.h"
 #include "scripting/ejs/smbcalls.h"
 #include "lib/appweb/ejs/ejs.h"
+#include "lib/cmdline/popt_common.h"
 
 /*
   helper function to get the local objects credentials ptr
@@ -184,19 +185,9 @@ static int ejs_creds_get_workstation(MprVarHandle eid, int argc, struct MprVar *
 /*
   initialise credentials ejs object
 */
-static int ejs_credentials_init(MprVarHandle eid, int argc, struct MprVar **argv)
+static int ejs_credentials_obj(MprVarHandle eid, int argc, struct MprVar **argv, struct cli_credentials *creds)
 {
        struct MprVar *obj = mprInitObject(eid, "credentials", argc, argv);
-       struct cli_credentials *creds;
-
-       creds = cli_credentials_init(mprMemCtx());
-       if (creds == NULL) {
-               return -1;
-       }
-
-       cli_credentials_guess(creds);
-       cli_credentials_set_username(creds, "", CRED_GUESSED);
-       cli_credentials_set_password(creds, "", CRED_GUESSED);
 
        mprSetPtrChild(obj, "creds", creds);
 
@@ -216,6 +207,30 @@ static int ejs_credentials_init(MprVarHandle eid, int argc, struct MprVar **argv
 }
 
 
+/*
+  initialise credentials ejs object
+*/
+static int ejs_credentials_init(MprVarHandle eid, int argc, struct MprVar **argv)
+{
+       struct cli_credentials *creds;
+
+       creds = cli_credentials_init(mprMemCtx());
+       if (creds == NULL) {
+               return -1;
+       }
+
+       return ejs_credentials_obj(eid, argc, argv, creds);
+}
+
+/*
+  initialise cmdline credentials ejs object
+*/
+int ejs_credentials_cmdline(int eid, int argc, struct MprVar **argv)
+{
+       return ejs_credentials_obj(eid, argc, argv, cmdline_credentials);
+}
+
+
 /*
   setup C functions that be called from ejs
 */
index 9fbfd312a99168f1630ce7cff83bd2d7e47717ba..8eca9ebcaacd71d1302655a1d7059876ca37a015 100644 (file)
@@ -28,8 +28,7 @@
 
 /*
   usage:
-      var options = new Object();
-      result = GetOptions(argv, options, 
+      options = GetOptions(argv, 
                           "realm=s", 
                           "enablexx", 
                           "myint=i");
@@ -41,6 +40,7 @@
 
       additional command line arguments are placed in options.ARGV
 */
+
 static int ejs_GetOptions(MprVarHandle eid, int argc, struct MprVar **argv)
 {
        poptContext pc;
@@ -52,13 +52,15 @@ static int ejs_GetOptions(MprVarHandle eid, int argc, struct MprVar **argv)
        } tables[] = {
                { "POPT_AUTOHELP", poptHelpOptions, "Help options:" },
                { "POPT_COMMON_SAMBA", popt_common_samba, "Common Samba options:" },
-               { "POPT_COMMON_CONNECTION", popt_common_connection, "Connection options:" },
+               { "POPT_COMMON_CONNECTION", popt_common_connection, "Connection options:" },
                { "POPT_COMMON_CREDENTIALS", popt_common_credentials, "Authentication options:" },
                { "POPT_COMMON_VERSION", popt_common_version, "Common Samba options:" }
        };
+
+       struct MprVar *options = mprInitObject(eid, "options", 0, NULL);
+
        TALLOC_CTX *tmp_ctx = talloc_new(mprMemCtx());
        struct poptOption *long_options = NULL;
-       struct MprVar *options;
        int i, num_options = 0;
        int opt_argc;
        const char **opt_argv;
@@ -66,15 +68,12 @@ static int ejs_GetOptions(MprVarHandle eid, int argc, struct MprVar **argv)
        const int BASE_OPTNUM = 0x100000;
 
        /* validate arguments */
-       if (argc < 2 ||
-           argv[0]->type != MPR_TYPE_OBJECT ||
-           argv[1]->type != MPR_TYPE_OBJECT) {
+       if (argc < 1 || argv[0]->type != MPR_TYPE_OBJECT) {
                ejsSetErrorMsg(eid, "GetOptions invalid arguments");
                return -1;
        }
 
        opt_argv = mprToArray(tmp_ctx, argv[0]);
-       options  = argv[1];
        opt_argc = str_list_length(opt_argv);
 
        long_options = talloc_array(tmp_ctx, struct poptOption, 1);
@@ -178,7 +177,10 @@ static int ejs_GetOptions(MprVarHandle eid, int argc, struct MprVar **argv)
        poptFreeContext(pc);
 
        talloc_free(tmp_ctx);
-       mpr_Return(eid, mprCreateBoolVar(1));
+
+       /* setup methods */
+       mprSetCFunction(options, "get_credentials", ejs_credentials_cmdline);
+
        return 0;
 }
 
index f5015611b960e39b2e65eb79ccb42900ad8a950a..cf2c7b83820e38542b3529dada0b69aefc585767 100755 (executable)
@@ -6,8 +6,7 @@ exec smbscript "$0" ${1+"$@"}
        Released under the GNU GPL v2 or later
 */
 
-options = new Object();
-ok = GetOptions(ARGV, options, 
+options = GetOptions(ARGV,
                "POPT_AUTOHELP",
                "POPT_COMMON_SAMBA",
                "POPT_COMMON_VERSION",
@@ -15,7 +14,8 @@ ok = GetOptions(ARGV, options,
                'unixname=s',
                'password=s',
                'quiet');
-if (ok == false) {
+
+if (options == undefined) {
    println("Failed to parse options: " + options.ERROR);
    return -1;
 }
index a9bbfa6a265fed23718224af4114c2d3caab107f..35c9d64f80cf017bbc1a2ba511c3392d537d3ae2 100755 (executable)
@@ -6,8 +6,7 @@ exec smbscript "$0" ${1+"$@"}
        Released under the GNU GPL v2 or later
 */
 
-options = new Object();
-ok = GetOptions(ARGV, options, 
+options = GetOptions(ARGV,
                "POPT_AUTOHELP",
                "POPT_COMMON_SAMBA",
                "POPT_COMMON_VERSION",
@@ -29,8 +28,9 @@ ok = GetOptions(ARGV, options,
                'users=s',
                'quiet',
                 'blank');
-if (ok == false) {
-   println("Failed to parse options: " + options.ERROR);
+
+if (options == undefined) {
+   println("Failed to parse options: ", options.ERROR);
    return -1;
 }