summaryrefslogtreecommitdiff
path: root/source4/web_server/ejs/ejs.h
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-05-26 01:06:32 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:17:01 -0500
commitd70912a26af49db468af7ec88e9689b8176e0576 (patch)
treea52d8b9930fe23eaea47c40b0af34f324e45f854 /source4/web_server/ejs/ejs.h
parente5613a3ce9932fb76aef9f721cadabe69bd23be8 (diff)
downloadsamba-d70912a26af49db468af7ec88e9689b8176e0576.tar.gz
samba-d70912a26af49db468af7ec88e9689b8176e0576.tar.bz2
samba-d70912a26af49db468af7ec88e9689b8176e0576.zip
r6981: first version of the builtin web server for Samba4
This includes an embedded server side scripting system called 'esp' (see http://www.appwebserver.org/products/esp/esp.html) and javascript based scripting language called 'esj' (see http://www.appwebserver.org/products/ejs/ejs.html) The justification for including this scripting language is that it should make it much easier to write a high quality web interface for Samba4. The scripting language can call into any Samba4 library code (so for example it will be able to make ldb and loadparm calls), plus it provides easy support for forms, cookies, sessions etc. There is still quite a bit more work to do on the web server, but there is enough here now for people to look at and comment. I will be committing some sample web pages that test esp functionality shortly. (This used to be commit 26f0ba92c0c565ac9e4cb5a079d795d4262497dd)
Diffstat (limited to 'source4/web_server/ejs/ejs.h')
-rw-r--r--source4/web_server/ejs/ejs.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/source4/web_server/ejs/ejs.h b/source4/web_server/ejs/ejs.h
new file mode 100644
index 0000000000..c1d087cf61
--- /dev/null
+++ b/source4/web_server/ejs/ejs.h
@@ -0,0 +1,131 @@
+/*
+ * @file ejs.h
+ * @brief Primary Embedded Javascript (ECMAScript) header.
+ * @overview This Embedded Javascript (EJS) header defines the
+ * public API. This API should only be used by those directly
+ * using EJS without using Embedded Server Pages (ESP). ESP
+ * wraps all relevant APIs to expose a single consistent API.
+ * \n\n
+ * This API requires the mpr/var.h facilities to create and
+ * manage objects and properties.
+ */
+/********************************* Copyright **********************************/
+/*
+ * @copy default.g
+ *
+ * Copyright (c) Mbedthis Software LLC, 2003-2005. All Rights Reserved.
+ * Portions Copyright (c) GoAhead Software, 1995-2000. All Rights Reserved.
+ *
+ * This software is distributed under commercial and open source licenses.
+ * You may use the GPL open source license described below or you may acquire
+ * a commercial license from Mbedthis Software. You agree to be fully bound
+ * by the terms of either license. Consult the LICENSE.TXT distributed with
+ * this software for full details.
+ *
+ * This software is open source; 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. See the GNU General Public License for more
+ * details at: http://www.mbedthis.com/downloads/gplLicense.html
+ *
+ * This program is distributed WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * This GPL license does NOT permit incorporating this software into
+ * proprietary programs. If you are unable to comply with the GPL, you must
+ * acquire a commercial license to use this software. Commercial licenses
+ * for this software and support services are available from Mbedthis
+ * Software at http://www.mbedthis.com
+ *
+ * @end
+ */
+/********************************** Includes **********************************/
+
+#ifndef _h_EJS
+#define _h_EJS 1
+
+#include "web_server/ejs/miniMpr.h"
+#include "web_server/ejs/var.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/********************************* Prototypes *********************************/
+
+typedef MprVarHandle EjsId;
+typedef MprVarHandle EjsHandle;
+
+/*
+ * Multithreaded lock routines
+ */
+typedef void (*EjsLock)(void *lockData);
+typedef void (*EjsUnlock)(void *lockData);
+
+/********************************* Prototypes *********************************/
+/*
+ * Module management
+ */
+extern int ejsOpen(EjsLock lock, EjsUnlock unlock, void *lockData);
+extern void ejsClose(void);
+extern EjsId ejsOpenEngine(EjsHandle primaryHandle, EjsHandle altHandle);
+extern void ejsCloseEngine(EjsId eid);
+
+/*
+ * Evaluation functions
+ */
+extern int ejsEvalFile(EjsId eid, char *path, MprVar *result, char **emsg);
+extern int ejsEvalScript(EjsId eid, char *script, MprVar *result,
+ char **emsg);
+extern int ejsRunFunction(int eid, MprVar *obj, const char *functionName,
+ MprArray *args);
+
+/*
+ * Composite variable get / set routines. Can also use the MPR property
+ * routines on an object variable.
+ */
+extern MprVar ejsCreateObj(const char *name, int hashSize);
+extern MprVar ejsCreateArray(const char *name, int hashSize);
+extern bool ejsDestroyVar(MprVar *obj);
+extern int ejsCopyVar(EjsId eid, const char *var, MprVar *value, bool copyRef);
+extern int ejsReadVar(EjsId eid, const char *var, MprVar *value);
+extern int ejsWriteVar(EjsId eid, const char *var, MprVar *value);
+extern int ejsWriteVarValue(EjsId eid, const char *var, MprVar value);
+extern int ejsDeleteVar(EjsId eid, const char *var);
+
+extern MprVar *ejsGetLocalObject(EjsId eid);
+extern MprVar *ejsGetGlobalObject(EjsId eid);
+
+/*
+ * Function routines
+ */
+extern void ejsDefineFunction(EjsId eid, char *functionName, char *args,
+ char *body);
+extern void ejsDefineCFunction(EjsId eid, char *functionName,
+ MprCFunction fn, void *thisPtr, int flags);
+extern void ejsDefineStringCFunction(EjsId eid, const char *functionName,
+ MprStringCFunction fn, void *thisPtr, int flags);
+extern void *ejsGetThisPtr(EjsId eid);
+extern MprVar *ejsGetReturnValue(EjsId eid);
+extern int ejsGetLineNumber(EjsId eid);
+extern int ejsParseArgs(int argc, char **argv, char *fmt, ...);
+extern void ejsSetErrorMsg(EjsId eid, const char* fmt, ...);
+extern void ejsSetReturnValue(EjsId eid, MprVar value);
+extern void ejsSetReturnString(EjsId eid, const char *str);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _h_EJS */
+
+/*****************************************************************************/
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim:tw=78
+ * vim600: sw=4 ts=4 fdm=marker
+ * vim<600: sw=4 ts=4
+ */