r20783: Ejsnet files are now moved into a separate directory. I need to commit
authorRafal Szczesniak <mimir@samba.org>
Sun, 14 Jan 2007 20:47:46 +0000 (20:47 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:40:54 +0000 (14:40 -0500)
this as the change is getting bigger and bigger.

Jelmer, Metze, I don't know enough of our build system so please check
if .mk files are ok.

rafal
(This used to be commit 77ede0656c0b17a84ee8550776ab158007f0e71f)

source4/main.mk
source4/scripting/ejs/config.mk
source4/scripting/ejs/ejsnet.c [deleted file]
source4/scripting/ejs/ejsnet.h [deleted file]
source4/scripting/ejs/ejsnet/config.mk [new file with mode: 0644]

index 838b13012d410e3fc7473894e1bb77a7b4811639..ba2872e5562f8dce71d7806de60b1e2e3394f757 100644 (file)
@@ -30,6 +30,7 @@ include torture/config.mk
 include librpc/config.mk
 include client/config.mk
 include libcli/config.mk
+include scripting/ejs/ejsnet/config.mk
 include scripting/ejs/config.mk
 include scripting/swig/config.mk
 include kdc/config.mk
index 0326bca8578d07b078515aa2d1f51d3e3ab8df51..38ed6778f79af13dc2af5faa2064d231130d7e36 100644 (file)
@@ -71,11 +71,10 @@ OBJ_FILES = \
                smbcalls_options.o \
                smbcalls_creds.o \
                smbcalls_param.o \
-               ejsnet.o \
                mprutil.o \
                literal.o
 PUBLIC_DEPENDENCIES = \
-               EJS LIBSAMBA-UTIL \
+               EJS EJSNET LIBSAMBA-UTIL \
                EJSRPC MESSAGING \
                LIBSAMBA-NET LIBCLI_SMB LIBPOPT \
                CREDENTIALS POPT_CREDENTIALS POPT_SAMBA \
@@ -90,6 +89,6 @@ PUBLIC_DEPENDENCIES = \
 INSTALLDIR = BINDIR
 OBJ_FILES = \
                smbscript.o
-PRIVATE_DEPENDENCIES = EJS LIBSAMBA-UTIL smbcalls LIBSAMBA-CONFIG 
+PRIVATE_DEPENDENCIES = EJS EJSNET LIBSAMBA-UTIL smbcalls LIBSAMBA-CONFIG
 # End BINARY SMBSCRIPT
 #######################
diff --git a/source4/scripting/ejs/ejsnet.c b/source4/scripting/ejs/ejsnet.c
deleted file mode 100644 (file)
index 41ea1e2..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-
-   provide interfaces to libnet calls from ejs scripts
-
-   Copyright (C) Rafal Szczesniak  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 "lib/appweb/ejs/ejs.h"
-#include "scripting/ejs/smbcalls.h"
-#include "scripting/ejs/ejsnet.h"
-#include "libnet/libnet.h"
-#include "events/events.h"
-#include "auth/credentials/credentials.h"
-
-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);
-*/
-
-static int ejs_net_context(MprVarHandle eid, int argc, struct MprVar **argv)
-{
-       TALLOC_CTX *event_mem_ctx = talloc_new(mprMemCtx());
-       struct cli_credentials *creds;
-       struct libnet_context *ctx;
-       struct MprVar obj;
-       struct event_context *ev;
-
-       if (!event_mem_ctx) {
-               ejsSetErrorMsg(eid, "talloc_new() failed");
-               return -1;
-       }
-       ev = event_context_find(event_mem_ctx);
-       ctx = libnet_context_init(ev);
-       /* IF we generated a new event context, it will be under here,
-        * and we need it to last as long as the libnet context, so
-        * make it a child */
-       talloc_steal(ctx, event_mem_ctx);
-
-       if (argc == 0 || (argc == 1 && argv[0]->type == MPR_TYPE_NULL)) {
-               creds = cli_credentials_init(ctx);
-               if (creds == NULL) {
-                       ejsSetErrorMsg(eid, "cli_credential_init() failed");
-                       talloc_free(ctx);
-                       return -1;
-               }
-               cli_credentials_set_conf(creds);
-               cli_credentials_set_anonymous(creds);
-       } else if (argc == 1 && argv[0]->type == MPR_TYPE_OBJECT) {
-               /* get credential values from credentials object */
-               creds = mprGetPtr(argv[0], "creds");
-               if (creds == NULL) {
-                       ejsSetErrorMsg(eid, "userAuth requires a 'creds' first parameter");
-                       talloc_free(ctx);
-                       return -1;
-               }
-       } else {
-               ejsSetErrorMsg(eid, "NetContext invalid arguments, this function requires an object.");
-               talloc_free(ctx);
-               return -1;
-       }
-       ctx->cred = creds;
-
-       obj = mprObject("NetCtx");
-       mprSetPtrChild(&obj, "ctx", ctx);
-       
-       mprSetCFunction(&obj, "UserMgr", ejs_net_userman);
-       mprSetCFunction(&obj, "JoinDomain", ejs_net_join_domain);
-       mprSetCFunction(&obj, "SamSyncLdb", ejs_net_samsync_ldb);
-       mpr_Return(eid, obj);
-
-       return 0;
-}
-
-
-static int ejs_net_join_domain(MprVarHandle eid, int argc, struct MprVar **argv)
-{
-       TALLOC_CTX *mem_ctx;
-       struct libnet_context *ctx;
-       struct libnet_Join *join;
-       NTSTATUS status;
-       ctx = mprGetThisPtr(eid, "ctx");
-       mem_ctx = talloc_new(mprMemCtx());
-
-       join = talloc(mem_ctx, struct libnet_Join);
-       if (!join) {
-               talloc_free(mem_ctx);
-               return -1;
-       }
-
-       /* prepare parameters for the join */
-       join->in.netbios_name  = NULL;
-       join->in.join_type     = SEC_CHAN_WKSTA;
-       join->in.domain_name   = cli_credentials_get_domain(ctx->cred);
-       join->in.level         = LIBNET_JOIN_AUTOMATIC;
-       join->out.error_string = NULL;
-
-       if (argc == 1 && argv[0]->type == MPR_TYPE_OBJECT) {
-               MprVar *netbios_name = mprGetProperty(argv[0], "netbios_name", NULL);
-               MprVar *domain_name = mprGetProperty(argv[0], "domain_name", NULL);
-               MprVar *join_type = mprGetProperty(argv[0], "join_type", NULL);
-               if (netbios_name) {
-                       join->in.netbios_name = mprToString(netbios_name);
-               }
-               if (domain_name) {
-                       join->in.domain_name = mprToString(domain_name);
-               }
-               if (join_type) {
-                       join->in.join_type = mprToInt(join_type);
-               }
-       }
-
-       if (!join->in.domain_name) {
-               ejsSetErrorMsg(eid, "a domain must be specified for to join");
-               talloc_free(mem_ctx);
-               return -1;
-       }
-
-       /* do the domain join */
-       status = libnet_Join(ctx, join, join);
-       
-       if (!NT_STATUS_IS_OK(status)) {
-               MprVar error_string = mprString(join->out.error_string);
-               
-               mprSetPropertyValue(argv[0], "error_string", error_string);
-               mpr_Return(eid, mprCreateBoolVar(False));
-       } else {
-               mpr_Return(eid, mprCreateBoolVar(True));
-       }
-       talloc_free(mem_ctx);
-       return 0;
-}
-
-
-static int ejs_net_samsync_ldb(MprVarHandle eid, int argc, struct MprVar **argv)
-{
-       TALLOC_CTX *mem_ctx;
-       struct libnet_context *ctx;
-       struct libnet_samsync_ldb *samsync;
-       NTSTATUS status;
-       ctx = mprGetThisPtr(eid, "ctx");
-       mem_ctx = talloc_new(mprMemCtx());
-
-       samsync = talloc(mem_ctx, struct libnet_samsync_ldb);
-       if (!samsync) {
-               talloc_free(mem_ctx);
-               return -1;
-       }
-
-       /* prepare parameters for the samsync */
-       samsync->in.machine_account = NULL;
-       samsync->in.session_info = NULL;
-       samsync->in.binding_string = NULL;
-       samsync->out.error_string = NULL;
-
-       if (argc == 1 && argv[0]->type == MPR_TYPE_OBJECT) {
-               MprVar *credentials = mprGetProperty(argv[0], "machine_account", NULL);
-               MprVar *session_info = mprGetProperty(argv[0], "session_info", NULL);
-               if (credentials) {
-                       samsync->in.machine_account = talloc_get_type(mprGetPtr(credentials, "creds"), struct cli_credentials);
-               }
-               if (session_info) {
-                       samsync->in.session_info = talloc_get_type(mprGetPtr(session_info, "session_info"), struct auth_session_info);
-               }
-       }
-
-       /* do the domain samsync */
-       status = libnet_samsync_ldb(ctx, samsync, samsync);
-       
-       if (!NT_STATUS_IS_OK(status)) {
-               MprVar error_string = mprString(samsync->out.error_string);
-               
-               mprSetPropertyValue(argv[0], "error_string", error_string);
-               mpr_Return(eid, mprCreateBoolVar(False));
-       } else {
-               mpr_Return(eid, mprCreateBoolVar(True));
-       }
-       talloc_free(mem_ctx);
-       return 0;
-}
-
-
-/*
-  Usage:
-  usrCtx = net.UserMgr(domain);
-*/
-static int ejs_net_userman(MprVarHandle eid, int argc, struct MprVar **argv)
-{
-       TALLOC_CTX *mem_ctx;
-       struct libnet_context *ctx;
-       const char *userman_domain = NULL;
-       struct MprVar *obj = NULL;
-
-       ctx = mprGetThisPtr(eid, "ctx");
-       mem_ctx = talloc_new(mprMemCtx());
-
-       if (argc == 0) {
-               userman_domain = cli_credentials_get_domain(ctx->cred);
-
-       } else if (argc == 1 && mprVarIsString(argv[0]->type)) {
-               userman_domain = talloc_strdup(ctx, mprToString(argv[0]));
-
-       } else {
-               ejsSetErrorMsg(eid, "too many arguments");
-               goto done;
-       }
-       
-       if (!userman_domain) {
-               ejsSetErrorMsg(eid, "a domain must be specified for user management");
-               goto done;
-       }
-
-       obj = mprInitObject(eid, "NetUsrCtx", argc, argv);
-       mprSetPtrChild(obj, "ctx", ctx);
-       mprSetPtrChild(obj, "domain", userman_domain);
-
-       mprSetStringCFunction(obj, "Create", ejs_net_createuser);
-       mprSetStringCFunction(obj, "Delete", ejs_net_deleteuser);
-       mprSetStringCFunction(obj, "Info", ejs_net_userinfo);
-
-       return 0;
-done:
-       talloc_free(mem_ctx);
-       return -1;
-}
-
-
-static int ejs_net_createuser(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_CreateUser 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_CreateUser(ctx, mem_ctx, &req);
-       if (!NT_STATUS_IS_OK(status)) {
-               ejsSetErrorMsg(eid, "%s", req.out.error_string);
-       }
-
-       talloc_free(mem_ctx);
-       mpr_Return(eid, mprNTSTATUS(status));
-       return 0;
-}
-
-
-static int ejs_net_deleteuser(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_DeleteUser 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_DeleteUser(ctx, mem_ctx, &req);
-       if (!NT_STATUS_IS_OK(status)) {
-               ejsSetErrorMsg(eid, "%s", req.out.error_string);
-       }
-
-       talloc_free(mem_ctx);
-       mpr_Return(eid, mprNTSTATUS(status));
-       return 0;
-}
-
-
-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;
-       struct MprVar mprUserInfo;
-       struct MprVar mprAccountName, mprFullName, mprDescription;
-       struct MprVar mprHomeDir, mprHomeDrive, mprComment;
-       struct MprVar mprLogonScript;
-       struct MprVar mprAcctExpiry, mprAllowPassChange, mprForcePassChange;
-
-       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);
-               
-               /* create null object to return */
-               mprUserInfo = mprCreateNullVar();
-               goto done;
-       }
-
-       /* create UserInfo object */
-       mprUserInfo = mprObject("UserInfo");
-
-       mprAccountName = mprString(req.out.account_name);
-       mprFullName = mprString(req.out.full_name);
-       mprDescription = mprString(req.out.description);
-       mprHomeDir = mprString(req.out.home_directory);
-       mprHomeDrive = mprString(req.out.home_drive);
-       mprComment = mprString(req.out.comment);
-       mprLogonScript = mprString(req.out.logon_script);
-       mprAcctExpiry = mprString(timestring(mem_ctx, req.out.acct_expiry->tv_sec));
-       mprAllowPassChange = mprString(timestring(ctx, req.out.allow_password_change->tv_sec));
-       mprForcePassChange = mprString(timestring(ctx, req.out.force_password_change->tv_sec));
-
-       status = mprSetVar(&mprUserInfo, "AccountName", mprAccountName);
-       if (!NT_STATUS_IS_OK(status)) goto done;
-       status = mprSetVar(&mprUserInfo, "FullName", mprFullName);
-       if (!NT_STATUS_IS_OK(status)) goto done;
-       status = mprSetVar(&mprUserInfo, "Description", mprDescription);
-       if (!NT_STATUS_IS_OK(status)) goto done;
-       status = mprSetVar(&mprUserInfo, "HomeDirectory", mprHomeDir);
-       if (!NT_STATUS_IS_OK(status)) goto done;
-       status = mprSetVar(&mprUserInfo, "HomeDrive", mprHomeDrive);
-       if (!NT_STATUS_IS_OK(status)) goto done;
-       status = mprSetVar(&mprUserInfo, "Comment", mprComment);
-       if (!NT_STATUS_IS_OK(status)) goto done;
-       status = mprSetVar(&mprUserInfo, "LogonScript", mprLogonScript);
-       if (!NT_STATUS_IS_OK(status)) goto done;
-       status = mprSetVar(&mprUserInfo, "AcctExpiry", mprAcctExpiry);
-       if (!NT_STATUS_IS_OK(status)) goto done;
-       status = mprSetVar(&mprUserInfo, "AllowPasswordChange", mprAllowPassChange);
-       if (!NT_STATUS_IS_OK(status)) goto done;
-       status = mprSetVar(&mprUserInfo, "ForcePasswordChange", mprForcePassChange);
-       if (!NT_STATUS_IS_OK(status)) goto done;
-done:
-       talloc_free(mem_ctx);
-       mpr_Return(eid, mprUserInfo);
-       return 0;
-}
-
-
-void ejsnet_setup(void)
-{
-       ejsDefineCFunction(-1, "NetContext", ejs_net_context, NULL, MPR_VAR_SCRIPT_HANDLE);
-}
diff --git a/source4/scripting/ejs/ejsnet.h b/source4/scripting/ejs/ejsnet.h
deleted file mode 100644 (file)
index 7d4bc32..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-
-   provide interfaces to libnet calls from ejs scripts
-
-   Copyright (C) Rafal Szczesniak  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 "lib/appweb/ejs/ejs.h"
-
-
-void ejsnet_setup(void);
diff --git a/source4/scripting/ejs/ejsnet/config.mk b/source4/scripting/ejs/ejsnet/config.mk
new file mode 100644 (file)
index 0000000..4a3a428
--- /dev/null
@@ -0,0 +1,13 @@
+#######################
+# Start LIBRARY EJSNET
+[LIBRARY::EJSNET]
+SO_VERSION = 0
+VERSION = 0.0.1
+PRIVATE_PROTO_HEADER = proto.h
+OBJ_FILES = \
+               net_ctx.o \
+               net_user.o \
+               mpr_user.o
+PUBLIC_DEPENDENCIES = LIBSAMBA-NET LIBCLI_SMB CREDENTIALS
+# End SUBSYSTEM ejsnet
+#######################