diff options
Diffstat (limited to 'source4/scripting')
-rwxr-xr-x | source4/scripting/bin/smbstatus | 4 | ||||
-rw-r--r-- | source4/scripting/ejs/smbcalls_auth.c | 11 | ||||
-rw-r--r-- | source4/scripting/ejs/smbcalls_creds.c | 37 | ||||
-rw-r--r-- | source4/scripting/ejs/smbcalls_options.c | 20 |
4 files changed, 46 insertions, 26 deletions
diff --git a/source4/scripting/bin/smbstatus b/source4/scripting/bin/smbstatus index 38f2ab06a9..d5610023d6 100755 --- a/source4/scripting/bin/smbstatus +++ b/source4/scripting/bin/smbstatus @@ -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; } diff --git a/source4/scripting/ejs/smbcalls_auth.c b/source4/scripting/ejs/smbcalls_auth.c index 4b3534b4cc..37ac9543cc 100644 --- a/source4/scripting/ejs/smbcalls_auth.c +++ b/source4/scripting/ejs/smbcalls_auth.c @@ -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) { diff --git a/source4/scripting/ejs/smbcalls_creds.c b/source4/scripting/ejs/smbcalls_creds.c index 61a5139cda..45da5895e4 100644 --- a/source4/scripting/ejs/smbcalls_creds.c +++ b/source4/scripting/ejs/smbcalls_creds.c @@ -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); @@ -217,6 +208,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 */ void smb_setup_ejs_credentials(void) diff --git a/source4/scripting/ejs/smbcalls_options.c b/source4/scripting/ejs/smbcalls_options.c index 9fbfd312a9..8eca9ebcaa 100644 --- a/source4/scripting/ejs/smbcalls_options.c +++ b/source4/scripting/ejs/smbcalls_options.c @@ -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; } |