56#include "AuthenticatedUser.h"
58#include "DoubleList.h"
59#include "HttpCmdThreadPoolIntf.h"
85#define BALUA_VERSION BASLIB_VER_NO
87#define BALUA_VERSION 1
89#define BA_ENV_IX lua_upvalueindex(1)
92#define balua_create(p) _balua_create(p, BALUA_VERSION)
94#define baluaENV_getmetatable(L,mtId) lua_rawgeti(L, BA_ENV_IX, mtId)
95#define baluaENV_checkudata(L,ud,mtid) _baluaENV_isudtype(L,ud,mtid,TRUE)
96#define baluaENV_isudtype(L,ud,mtid) _baluaENV_isudtype(L,ud,mtid,FALSE)
97#define balua_pushbatab(L) lua_getfield(L,LUA_REGISTRYINDEX,BA_TABLE)
99#define balua_newlib(L,l) \
100 (luaL_newlibtable(L,l), balua_pushbatab(L), luaL_setfuncs(L,l,1))
101#define baluaENV_getmutex(L) baluaENV_getparam(L)->mutex
103#define balua_getmutex(L) balua_getparam(L)->mutex
104#define GET_BAMUTEX ThreadMutex* m = baluaENV_getmutex(L)
106#define balua_releasemutex(m) if(m) ThreadMutex_release(m)
108#define balua_setmutex(m) if(m) ThreadMutex_set(m)
111#define balua_check(x,y) x
113#define balua_check(x,y) baAssert(y == x)
117#define dmpstk1(L,x) \
118 HttpTrace_printf(0,"%d: %s %p\n", __LINE__,lua_typename(L,lua_type(L,(x))), \
120#define dmpstk2(L,x) { \
121 int ix=lua_absindex(L,x); \
122 HttpTrace_printf(0,"%4d: %2d %s\n",__LINE__,ix,luaL_tolstring(L,x,0)); \
126 HttpTrace_printf(0,"%d: top %d\n",__LINE__,lua_gettop(L))
127#define dmpTab(L, ix) do { \
128 HttpTrace_printf(0,"%d: TAB %d %p\n", \
129 __LINE__, lua_absindex(L,ix), lua_topointer(L,ix)); \
131 while(lua_next(L, ix < 0 ? ix-1: ix) != 0) \
133 HttpTrace_printf(0,"\t%s = %s\n", \
134 luaL_tolstring(L,-3,0), \
135 luaL_tolstring(L,-1,0)); \
173BA_API
void* baLMallocL(lua_State* L,
size_t size,
const char* file,
int line);
174#define baLMalloc(L,size) baLMallocL(L,size,__FILE__,__LINE__)
186BA_API
void balua_close(lua_State* L);
200 lua_State* L, U32 noOfLoginTrackerNodes, U32 maxNumberOfLogins,
203BA_API lua_State* balua_getmainthread(lua_State* L);
204BA_API
int balua_typeerror(lua_State *L,
int narg,
const char *tname);
205#define balua_optboolean(L,narg,def) luaL_opt(L, balua_checkboolean, narg, def)
206BA_API
int balua_checkboolean(lua_State *L,
int narg);
207BA_API
int baluaENV_newmetatable(lua_State *L,
int mtid,
int inheritmtid);
208BA_API
void baluaENV_register(
209 lua_State *L,
int mtid,
int inheritmtid,
const luaL_Reg* lib);
210BA_API
void* baluaENV_newuserdata(lua_State *L,
int mtid,
size_t size);
211BA_API
void* _baluaENV_isudtype(lua_State* L,
int udIx,
int mtid,
int check);
212BA_API
HttpCommand* baluaENV_checkcmd(lua_State* L,
int ix);
214BA_API
BaLua_param* baluaENV_getparam(lua_State* L);
215BA_API
int balua_errorhandler(lua_State* L);
216BA_API
void balua_manageerr(
217 lua_State* L,
const char* ewhere,
const char* emsg,
HttpCommand* cmd);
218BA_API
void balua_resumeerr(lua_State* L,
const char* ewhere);
219BA_API
int balua_loadfile(
220 lua_State *L,
const char *filename,
struct IoIntf* io,
int envix);
249BA_API
int balua_wkRefIx(lua_State* L,
int index);
276 lua_State* L,
struct IoIntf* io,
const char* filename);
278#define balua_loadconfig(L, io, filename) \
279 balua_loadconfigExt(L, io, filename, 0)
293 lua_State* L,
struct IoIntf* io,
const char* filename,
int nresults);
296BA_API
IoIntf* baluaENV_checkIoIntf(lua_State *L,
int udIx);
309 lua_State* L,
const char* name,
struct IoIntf* newio);
310BA_API
struct IoIntf** balua_createiointf(lua_State* L);
311BA_API
HttpDir* baluaENV_toDir(lua_State* L,
int ix);
312BA_API
HttpDir* baluaENV_createDir(lua_State* L,
int mtId,
size_t dirSize);
313BA_API
const char* balua_getStringField(
314 lua_State *L,
int ix,
const char *k,
const char *def);
315BA_API lua_Integer balua_getIntField(
316 lua_State *L,
int ix,
const char *k, lua_Integer defVal);
317BA_API BaBool balua_getBoolField(
318 lua_State *L,
int ix,
const char *k, BaBool defVal);
319BA_API
int balua_getTabField(lua_State *L,
int ix,
const char *k);
320BA_API
const char* balua_checkStringField(lua_State *L,
int ix,
const char *k);
321BA_API lua_Integer balua_checkIntField(lua_State *L,
int ix,
const char *k);
328 int (*pushCertificate)(lua_State *L,
SoDispCon* con);
329 int (*pushCipher)(lua_State *L,
SoDispCon* con);
330 void (*unlockSharkSSL)(lua_State *L,
struct SharkSsl* super);
331 struct SharkSsl* (*lockSharkSSL)(
332 lua_State *L,
int tabIx,SharkSsl_Role role,SharkSsl* lockedShark);
335extern const LSharkSSLFuncs* lSharkSSLFuncs;
337extern const void* lSharkSSLFuncs;
340enum BaUserDataTypes {
362 BA_TAUTHENTICATORINTF,
393 int authenticatorRef;
399BA_API
int LHttpResRdr_loadLsp(
400 lua_State* L,
IoIntf* io,
const char* pathname,
IoStat* st);
404BA_API
void luaopen_ba_redirector(lua_State *L);
405BA_API
void ba_ldbgmon(
406 lua_State* L,
void (*exitCb)(
void*,BaBool),
void* exitCbData);
407BA_API
void balua_revcon(lua_State* L);
408BA_API
void balua_mallinfo(lua_State* L);
423 const U8* pubKey, U32 fileSize,
struct CspReader* reader);
void balua_luaio(lua_State *L)
Install the LuaIo Lua bindings.
BA_API int balua_usertracker_create(lua_State *L, U32 noOfLoginTrackerNodes, U32 maxNumberOfLogins, BaTime banTime)
Install Lua bindings for the default login tracker.
BA_API void balua_ubjson(lua_State *L)
Install the UBJSON lua api.
BA_API void balua_installZIO(lua_State *L, const char *name, struct ZipReader *reader)
Installs a Zip I/O interface into the Lua environment.
struct LHttpDir LHttpDir
LHttpDir is the HttpDir instance used by Lua bindings and can be used by advanced Lua bindings creati...
BA_API int baCheckZipSignature(const U8 *pubKey, U32 fileSize, struct CspReader *reader)
Verifies the signature of a ZIP file using a public key.
BA_API int balua_loadconfigExt(lua_State *L, struct IoIntf *io, const char *filename, int nresults)
Load a Lua script and run the script at startup.
BA_API lua_State * _balua_create(const BaLua_param *p, int version)
Creates the Barracuda Lua VM; Note: use macro balua_create(BaLua_param).
BA_API void balua_getuservalue(lua_State *L, int index)
Pushes onto the stack the first user value associated with the full userdata at the given index.
BA_API IoIntf * balua_iointf(lua_State *L, const char *name, struct IoIntf *newio)
Register an IoIntf instance with the Lua VM.
BA_API void * baLMalloc(lua_State *L, size_t size)
Same as baMalloc, but does an emergency GC if baMalloc returns NULL.
BA_API int balua_loadconfig(lua_State *L, struct IoIntf *io, const char *filename)
Load a Lua script and run the script at startup.
int(* HttpDir_Service)(struct HttpDir *o, const char *relPath, HttpCommand *cmd)
The HttpDir service callback function.
Definition: HttpServer.h:2334
S64 BaTime
An arithmetic type representing calendar time with epoch of 1970-01-01 00:00:10 GMT – i....
Definition: GenPrimT.h:93
BA_API void balua_wkUnref(lua_State *L, int reference)
Releases the reference ref from the weak table.
BA_API int balua_wkRef(lua_State *L)
Creates and returns a reference in the weak table, for the object on the top of the stack (and pops t...
BA_API void balua_wkPush(lua_State *L, int reference)
Pushes the value associated with the key 'index' on top of the stack.
The startup and runtime parameters for a Barracuda Server Lua VM.
Definition: balua.h:151
struct BaTimer * timer
Timer bindings activated if not NULL.
Definition: balua.h:154
struct LoginTracker * tracker
The optional tracker.
Definition: balua.h:157
const U8 * zipBinPwd
Set the binary password for all ZIP files.
Definition: balua.h:160
ThreadMutex * mutex
The mutex used by the server's SoDisp.
Definition: balua.h:156
const U8 * zipPubKey
Set when zip signature check enabled.
Definition: balua.h:159
BaBool pwdRequired
Set to true to enforce password on all files.
Definition: balua.h:162
lua_State * L
The lua universe.
Definition: balua.h:152
IoIntf * vmio
The required VM (Lua) IO.
Definition: balua.h:155
HttpServer * server
Pointer to server for this vm.
Definition: balua.h:153
U16 zipBinPwdLen
Binary password length.
Definition: balua.h:161
int errHndRef
Internal: The ba.seterrh(func) ref.
Definition: balua.h:158
The timer class makes it possible to create events that are activated at regular intervals or to crea...
Definition: BaTimer.h:59
Abstract interface class for reading the "dat" file generated byHttpLink.
Definition: CspRunTm.h:119
The HttpCommand class is a container class for the HttpRequest and HttpResponse command pair.
Definition: HttpServer.h:1818
An instance of the HttpDir class, which is a collection of zero or more resources,...
Definition: HttpServer.h:2368
The Web Server.
Definition: HttpServer.h:2864
The IoIntf class specifies an abstract file API, implementations include ZipIo, DiskIo,...
Definition: IoIntf.h:377
Resource information.
Definition: IoIntf.h:168
LHttpDir is the HttpDir instance used by Lua bindings and can be used by advanced Lua bindings creati...
Definition: balua.h:387
The LoginTracker class is an optional security enhancement that can be installed in an instance of on...
Definition: AuthenticatedUser.h:812
Contains information about the physical socket connection.
Definition: SoDispCon.h:112
A mutual exclusion class.
Definition: ThreadLib.h:186
Abstract interface class for reading a ZipFile.
Definition: ZipFileIterator.h:72