mirror of
https://github.com/samba-team/samba.git
synced 2025-12-10 04:23:50 +03:00
r19972: put a placeholder of a new js function and use error strings
returned by each libnet call. rafal
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
2586958881
commit
bc88640bb5
@@ -28,14 +28,16 @@
|
||||
#include "events/events.h"
|
||||
#include "auth/credentials/credentials.h"
|
||||
|
||||
static int ejs_net_userman(MprVarHandle, int, struct MprVar**);
|
||||
static int ejs_net_createuser(MprVarHandle, int, char**);
|
||||
static int ejs_net_userman(MprVarHandle eid, int argc, struct MprVar** argv);
|
||||
static int ejs_net_createuser(MprVarHandle eid, int argc, char **argv);
|
||||
static int ejs_net_deleteuser(MprVarHandle eid, int argc, char **argv);
|
||||
static int ejs_net_userinfo(MprVarHandle eid, int argc, char **argv);
|
||||
static int ejs_net_join_domain(MprVarHandle eid, int argc, struct MprVar **argv);
|
||||
static int ejs_net_samsync_ldb(MprVarHandle eid, int argc, struct MprVar **argv);
|
||||
|
||||
/* Usage:
|
||||
net = NetContext(credentials);
|
||||
/*
|
||||
Usage:
|
||||
net = NetContext(credentials);
|
||||
*/
|
||||
|
||||
static int ejs_net_context(MprVarHandle eid, int argc, struct MprVar **argv)
|
||||
@@ -92,6 +94,7 @@ static int ejs_net_context(MprVarHandle eid, int argc, struct MprVar **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int ejs_net_join_domain(MprVarHandle eid, int argc, struct MprVar **argv)
|
||||
{
|
||||
TALLOC_CTX *mem_ctx;
|
||||
@@ -150,6 +153,7 @@ static int ejs_net_join_domain(MprVarHandle eid, int argc, struct MprVar **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int ejs_net_samsync_ldb(MprVarHandle eid, int argc, struct MprVar **argv)
|
||||
{
|
||||
TALLOC_CTX *mem_ctx;
|
||||
@@ -197,6 +201,11 @@ static int ejs_net_samsync_ldb(MprVarHandle eid, int argc, struct MprVar **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Usage:
|
||||
usrCtx = net.UserMgr(domain);
|
||||
*/
|
||||
static int ejs_net_userman(MprVarHandle eid, int argc, struct MprVar **argv)
|
||||
{
|
||||
TALLOC_CTX *mem_ctx;
|
||||
@@ -229,6 +238,7 @@ static int ejs_net_userman(MprVarHandle eid, int argc, struct MprVar **argv)
|
||||
|
||||
mprSetStringCFunction(obj, "Create", ejs_net_createuser);
|
||||
mprSetStringCFunction(obj, "Delete", ejs_net_deleteuser);
|
||||
mprSetStringCFunction(obj, "Info", ejs_net_userinfo);
|
||||
|
||||
return 0;
|
||||
done:
|
||||
@@ -269,7 +279,7 @@ static int ejs_net_createuser(MprVarHandle eid, int argc, char **argv)
|
||||
|
||||
status = libnet_CreateUser(ctx, mem_ctx, &req);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
ejsSetErrorMsg(eid, "error when creating user: %s", nt_errstr(status));
|
||||
ejsSetErrorMsg(eid, "%s", req.out.error_string);
|
||||
}
|
||||
|
||||
talloc_free(mem_ctx);
|
||||
@@ -277,6 +287,7 @@ static int ejs_net_createuser(MprVarHandle eid, int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int ejs_net_deleteuser(MprVarHandle eid, int argc, char **argv)
|
||||
{
|
||||
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
|
||||
@@ -309,7 +320,7 @@ static int ejs_net_deleteuser(MprVarHandle eid, int argc, char **argv)
|
||||
|
||||
status = libnet_DeleteUser(ctx, mem_ctx, &req);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
ejsSetErrorMsg(eid, "error when creating user: %s", nt_errstr(status));
|
||||
ejsSetErrorMsg(eid, "%s", req.out.error_string);
|
||||
}
|
||||
|
||||
talloc_free(mem_ctx);
|
||||
@@ -318,6 +329,48 @@ static int ejs_net_deleteuser(MprVarHandle eid, int argc, char **argv)
|
||||
}
|
||||
|
||||
|
||||
static int ejs_net_userinfo(MprVarHandle eid, int argc, char **argv)
|
||||
{
|
||||
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
|
||||
TALLOC_CTX *mem_ctx;
|
||||
struct libnet_context *ctx;
|
||||
const char *userman_domain = NULL;
|
||||
struct libnet_UserInfo req;
|
||||
|
||||
if (argc != 1) {
|
||||
ejsSetErrorMsg(eid, "argument 1 must be a string");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ctx = mprGetThisPtr(eid, "ctx");
|
||||
if (!ctx) {
|
||||
ejsSetErrorMsg(eid, "ctx property returns null pointer");
|
||||
return -1;
|
||||
}
|
||||
|
||||
userman_domain = mprGetThisPtr(eid, "domain");
|
||||
if (!userman_domain) {
|
||||
ejsSetErrorMsg(eid, "domain property returns null pointer");
|
||||
return -1;
|
||||
}
|
||||
|
||||
mem_ctx = talloc_new(mprMemCtx());
|
||||
|
||||
req.in.domain_name = userman_domain;
|
||||
req.in.user_name = argv[0];
|
||||
|
||||
status = libnet_UserInfo(ctx, mem_ctx, &req);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
ejsSetErrorMsg(eid, "%s", req.out.error_string);
|
||||
}
|
||||
|
||||
/* TODO: create user info object and pass received properties */
|
||||
|
||||
talloc_free(mem_ctx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void ejsnet_setup(void)
|
||||
{
|
||||
ejsDefineCFunction(-1, "NetContext", ejs_net_context, NULL, MPR_VAR_SCRIPT_HANDLE);
|
||||
|
||||
Reference in New Issue
Block a user