2 Copyright (C) 2010-2011 wpitchoune@gmail.com
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23 #include "server_lua.h"
25 #include "plib/plib_luatpl.h"
27 int init_lua(lua_State *L, void *data)
29 struct server_data *server_data = data;
30 struct psensor **s_cur;
31 struct psensor **sensors = server_data->sensors;
33 static float load_scale = 1 << SI_LOAD_SHIFT;
38 lua_pushstring(L, "load");
39 lua_pushnumber(L, server_data->psysinfo.cpu_rate);
43 lua_pushstring(L, "uptime");
44 lua_pushnumber(L, server_data->psysinfo.sysinfo.uptime);
47 lua_pushstring(L, "load_1mn");
48 lua_pushnumber(L, server_data->psysinfo.sysinfo.loads[0] / load_scale);
51 lua_pushstring(L, "load_5mn");
52 lua_pushnumber(L, server_data->psysinfo.sysinfo.loads[1] / load_scale);
55 lua_pushstring(L, "load_15mn");
56 lua_pushnumber(L, server_data->psysinfo.sysinfo.loads[2] / load_scale);
59 lua_pushstring(L, "freeram");
60 lua_pushnumber(L, server_data->psysinfo.sysinfo.freeram);
63 lua_pushstring(L, "sharedram");
64 lua_pushnumber(L, server_data->psysinfo.sysinfo.sharedram);
67 lua_pushstring(L, "bufferram");
68 lua_pushnumber(L, server_data->psysinfo.sysinfo.bufferram);
71 lua_pushstring(L, "totalswap");
72 lua_pushnumber(L, server_data->psysinfo.sysinfo.totalswap);
75 lua_pushstring(L, "freeswap");
76 lua_pushnumber(L, server_data->psysinfo.sysinfo.freeswap);
79 lua_pushstring(L, "procs");
80 lua_pushnumber(L, server_data->psysinfo.sysinfo.procs);
83 lua_pushstring(L, "totalhigh");
84 lua_pushnumber(L, server_data->psysinfo.sysinfo.totalhigh);
87 lua_pushstring(L, "freehigh");
88 lua_pushnumber(L, server_data->psysinfo.sysinfo.freehigh);
91 lua_pushstring(L, "totalram");
92 lua_pushnumber(L, server_data->psysinfo.sysinfo.totalram);
95 lua_pushstring(L, "mem_unit");
96 lua_pushnumber(L, server_data->psysinfo.sysinfo.mem_unit);
100 lua_setglobal(L, "sysinfo");
108 lua_pushnumber(L, i);
112 lua_pushstring(L, "name");
113 lua_pushstring(L, (*s_cur)->name);
116 lua_pushstring(L, "measure_last");
117 lua_pushnumber(L, psensor_get_current_value(*s_cur));
120 lua_pushstring(L, "measure_min");
121 lua_pushnumber(L, (*s_cur)->min);
124 lua_pushstring(L, "measure_max");
125 lua_pushnumber(L, (*s_cur)->max);
134 lua_setglobal(L, "sensors");
136 lua_pushstring(L, VERSION);
137 lua_setglobal(L, "psensor_version");
142 char *lua_to_html_page(struct server_data *server_data, const char *fpath)
145 struct luatpl_error err;
149 page = luatpl_generate(fpath,
155 luatpl_fprint_error(stderr,