-
Notifications
You must be signed in to change notification settings - Fork 635
/
LuaEngine.h
154 lines (134 loc) · 4.61 KB
/
LuaEngine.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
*
* (C) 2013-18 - ntop.org
*
*
* 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 3 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
#ifndef _LUA_H_
#define _LUA_H_
#include "ntop_includes.h"
/** @defgroup LuaEngine LuaEngine
* Main ntopng lua group.
*/
/* ******************************* */
/** @class LuaEngine
* @brief Main class of lua.
*
* @ingroup LuaEngine
*
*/
class LuaEngine {
private:
lua_State *L; /**< The LuaEngine state.*/
void lua_register_classes(lua_State *L, bool http_mode);
public:
/**
* @brief A Constructor
* @details Creating a new lua state.
*
* @return A new instance of lua.
*/
LuaEngine();
/**
* @brief A Destructor.
*
*/
~LuaEngine();
/**
* @brief Run a Lua script.
* @details Run a script from within ntopng. No HTTP GUI.
*
* @param script_path Full path of lua script.
* @param iface Select the specified interface (if not NULL)
* @return 0 if the script has been executed successfully.
*/
int run_script(char *script_path, NetworkInterface *iface);
/**
* @brief Handling of request info of script.
* @details Read from the request the parameters and put the GET parameters and the _SESSION parameters into the environment.
* Once all parameters have been load we running the script.
*
* @param conn This structure contains handle for the individual connection.
* @param request_info This structure contains information about the HTTP request.
* @param script_path Full path of lua script.
* @return The result of the execution of the script.
*/
int handle_script_request(struct mg_connection *conn,
const struct mg_request_info *request_info,
char *script_path, bool *attack_attempt, const char *user, const char *group, bool localuser);
bool setParamsTable(lua_State* vm,
const struct mg_request_info *request_info,
const char* table_name,
const char* query) const;
#ifdef NOT_USED /* Use Utils::purifyHTTPParam */
static void purifyHTTPParameter(char *param);
#endif
static void luaRegister(lua_State *L, const ntop_class_reg *reg);
static void luaRegisterInternalRegs(lua_State *L);
void setInterface(const char * user, char * const ifname, u_int16_t ifname_len, bool * const is_allowed) const;
};
/**
* @brief Push string value to table entry specify the key.
*
* @param L The lua state.
* @param key The key of hash table.
* @param value The value of hash table.
*/
extern void lua_push_str_table_entry(lua_State *L, const char * const key, const char * const value);
/**
* @brief Push null value to table entry specify the key.
*
* @param L The lua state.
* @param key The key of hash table.
*/
extern void lua_push_nil_table_entry(lua_State *L, const char *key);
/**
* @brief Push int value to table entry specify the key.
*
* @param L The lua state.
* @param key The key of hash table.
* @param value The value of hash table.
*/
extern void lua_push_uint64_table_entry(lua_State *L, const char *key, u_int64_t value);
/**
* @brief Push int32 value to table entry specify the key.
*
* @param L The lua state.
* @param key The key of hash table.
* @param value The value of hash table.
*/
void lua_push_int32_table_entry(lua_State *L, const char *key, int32_t value);
/**
* @brief Push bool value to table entry specify the key.
* @details Using LUA_NUMBER (double: 64 bit) in place of LUA_INTEGER (ptrdiff_t: 32 or 64 bit
* according to the platform) to handle big counters. (luaconf.h)
*
* @param L The lua state.
* @param key The key of hash table.
* @param value The value of hash table.
*/
extern void lua_push_bool_table_entry(lua_State *L, const char *key, bool value);
/**
* @brief Push float value to table entry specify the key.
*
* @param L The lua state.
* @param key The key of hash table.
* @param value The value of hash table.
*/
extern void lua_push_float_table_entry(lua_State *L, const char *key, float value);
int ntop_lua_check(lua_State* vm, const char* func, int pos, int expected_type);
#endif /* _LUA_H_ */