-
Notifications
You must be signed in to change notification settings - Fork 8
/
Lua.h
137 lines (123 loc) · 3.9 KB
/
Lua.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
/*
*
* (C) 2013-14 - 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 Lua Lua
* Main ntopng lua group.
*/
/* ******************************* */
/** @class Lua
* @brief Main class of lua.
*
* @ingroup Lua
*
*/
class Lua {
private:
lua_State *L; /**< The Lua 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.
*/
Lua();
/**
* @brief A Destructor.
*
*/
~Lua();
/**
* @brief Run a Lua script.
* @details Run a script from within ntopng. No HTTP GUI.
*
* @param script_path Full path of lua script.
* @param ifname Name of the interface for which we are running this script.
* @return 0 if the script has been executed successfully.
*/
int run_script(char *script_path, char *ifname);
/**
* @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);
};
/**
* @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 *key, char *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_int_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);
#endif /* _LUA_H_ */