immunio 1.0.13 → 1.0.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/immunio/plugins/action_view.rb +42 -14
- data/lib/immunio/processor.rb +15 -12
- data/lib/immunio/version.rb +1 -1
- data/lua-hooks/Makefile +4 -2
- data/lua-hooks/ext/all.c +9 -0
- data/lua-hooks/ext/perf/luacpu.c +114 -0
- data/lua-hooks/ext/perf/lualoadavg.c +40 -0
- data/lua-hooks/ext/perf/luameminfo.c +38 -0
- data/lua-hooks/ext/perf/luaoslib.c +80 -0
- metadata +24 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f381a24b73b7115c320e46e538564da3d4001f2
|
4
|
+
data.tar.gz: 12b66439e36175bddd908eca2f94ec5269c6ccb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75b54a277712434f4cfc18dd8f1a7e2bbe0c061dd7f4053f9e98048a9608107c1dc22e2c4b92334191970b68560ac83632661aae561efc332a28eb8c0c0830a1
|
7
|
+
data.tar.gz: d37adcced6010eb26a12990217d59d93f8520122b583d0489d0a7df85c795f2fea3102d02767d12285eaed411149fce6903e0c4bdb999f4d27141aae5bb211c0
|
@@ -256,7 +256,35 @@ module Immunio
|
|
256
256
|
end
|
257
257
|
end
|
258
258
|
|
259
|
+
ENCODED_IMMUNIO_TOKENS_RE = Regexp.compile(/(?:{|%7b)immunio-(var|fragment)(?::|%3a)(\d+)(?::|%3a)([0-9a-f]{1,4})(?:}|%7d)(.*?)(?:{|%7b)(?:\/|%2f)immunio-\1(?::|%3a)\2(?::|%3a)\3(?:}|%7d)/i)
|
260
|
+
def self.decode_immunio_tokens(rendered)
|
261
|
+
# Look for URI or JS encoded immunio tokens in the rendering and decode them
|
262
|
+
if rendered.respond_to? :to_str
|
263
|
+
was_html_safe = rendered.html_safe?
|
264
|
+
was_frozen = rendered.frozen?
|
265
|
+
|
266
|
+
if was_frozen
|
267
|
+
# This is not an airtight solution. Object#dup does not copy methods
|
268
|
+
# defined on the instance, and may be overridden by subclasses to do
|
269
|
+
# things that would cause problems for us. But most likely there is no
|
270
|
+
# problem with using dup. We can't use Object#clone because the clone
|
271
|
+
# retains the frozen status of the original, preventing us from
|
272
|
+
# modifying the string contents.
|
273
|
+
rendered = rendered.dup
|
274
|
+
end
|
275
|
+
|
276
|
+
rendered.gsub! ENCODED_IMMUNIO_TOKENS_RE, "{immunio-\\1:\\2:\\3}\\4{/immunio-\\1:\\2:\\3}"
|
277
|
+
|
278
|
+
rendered.instance_variable_set(:@html_safe, true) if was_html_safe
|
279
|
+
rendered.freeze if was_frozen
|
280
|
+
end
|
281
|
+
|
282
|
+
rendered
|
283
|
+
end
|
284
|
+
|
259
285
|
def self.render_var(code, rendered, template_id, template_sha, file, line, escape, is_text, handler)
|
286
|
+
rendered = decode_immunio_tokens rendered
|
287
|
+
|
260
288
|
if rendered.instance_variable_get("@__immunio_processed") then
|
261
289
|
# Ignore buffers marked as __immunio_processed in render as these are full templates or partials
|
262
290
|
return rendered
|
@@ -289,23 +317,23 @@ module Immunio
|
|
289
317
|
rendering_stack.first.mark_and_defer_fragment_write(*args)
|
290
318
|
end
|
291
319
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
end
|
320
|
+
# Stack of the templates currently being rendered.
|
321
|
+
def self.rendering_stack
|
322
|
+
Thread.current["immunio.rendering_stack"] ||= []
|
323
|
+
end
|
297
324
|
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
end
|
325
|
+
def self.wrap_code(code, handler, options = {})
|
326
|
+
case
|
327
|
+
when handler == 'ActionView::Template::Handlers::ERB'
|
328
|
+
modifier = options[:escape] ? '=' : '=='
|
329
|
+
"<%#{modifier} #{code} %>"
|
330
|
+
when handler == 'Haml::Plugin'
|
331
|
+
modifier = options[:escape] ? '=' : '!='
|
332
|
+
"#{modifier} #{code}"
|
307
333
|
end
|
334
|
+
end
|
308
335
|
|
336
|
+
private
|
309
337
|
def rendering_stack
|
310
338
|
self.class.rendering_stack
|
311
339
|
end
|
data/lib/immunio/processor.rb
CHANGED
@@ -110,17 +110,20 @@ module Immunio
|
|
110
110
|
Request.current = nil
|
111
111
|
end
|
112
112
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
113
|
+
# Some versions of rails, like 4.2.0, fail to make JSONifiable model
|
114
|
+
# instances because they have bugs where superfluous sub-objects of
|
115
|
+
# unserializable classes, like IO, are added. Filter non-array, non-hash,
|
116
|
+
# non-primitive values from data to be JSONified.
|
117
|
+
def make_safe_data(data)
|
118
|
+
if data.is_a?(Hash)
|
119
|
+
data.each_with_object({}) { |(key, value), obj| obj[key] = make_safe_data(value) }
|
120
|
+
elsif data.is_a?(Array)
|
121
|
+
data.map(&method(:make_safe_data))
|
122
|
+
elsif [Numeric, String, TrueClass, FalseClass].any? { |c| data.is_a? c }
|
123
|
+
data
|
124
|
+
else
|
125
|
+
data.inspect
|
122
126
|
end
|
123
|
-
safe_meta
|
124
127
|
end
|
125
128
|
|
126
129
|
# Run the `hook` and return a hash eg.: `{ "allow": true }`.
|
@@ -193,7 +196,7 @@ module Immunio
|
|
193
196
|
timestamp: timestamp,
|
194
197
|
plugin: plugin,
|
195
198
|
hook: hook,
|
196
|
-
meta:
|
199
|
+
meta: make_safe_data(meta),
|
197
200
|
vmcode_version: request.vm.code_version,
|
198
201
|
vmdata_version: request.vm.data_version
|
199
202
|
}
|
@@ -211,7 +214,7 @@ module Immunio
|
|
211
214
|
timestamp: timestamp,
|
212
215
|
plugin: plugin,
|
213
216
|
hook: hook,
|
214
|
-
meta:
|
217
|
+
meta: make_safe_data(meta),
|
215
218
|
vmcode_version: request.vm.code_version,
|
216
219
|
vmdata_version: request.vm.data_version
|
217
220
|
|
data/lib/immunio/version.rb
CHANGED
data/lua-hooks/Makefile
CHANGED
@@ -27,7 +27,9 @@ LUA_SRC = \
|
|
27
27
|
lib/lexgraph.lua \
|
28
28
|
lib/neturl.lua \
|
29
29
|
lib/paths.lua \
|
30
|
+
lib/perf.lua \
|
30
31
|
lib/permit.lua \
|
32
|
+
lib/real_ip.lua \
|
31
33
|
lib/sanitize_sql.lua \
|
32
34
|
lib/sanitize_command.lua \
|
33
35
|
lib/semver.lua \
|
@@ -103,7 +105,7 @@ endif
|
|
103
105
|
all: ${CLI} ${INIT_HOOK} ${HOOKS_TARBALL} ${HOOKS_SRCS_TARBALL}
|
104
106
|
|
105
107
|
%.o: %.c
|
106
|
-
MACOSX_DEPLOYMENT_TARGET="10.
|
108
|
+
MACOSX_DEPLOYMENT_TARGET="10.8" ${CC} ${CFLAGS} -c ${INCS} -o $@ $<
|
107
109
|
|
108
110
|
# There is a huge performance advantage compiling sha1.o with just -O
|
109
111
|
# -O2 or -O3 *reduce* the speed of the algorithm 30%
|
@@ -123,7 +125,7 @@ ${LUAJIT_OUT}: ${LUAJIT_OBJ}
|
|
123
125
|
cp $^ $@
|
124
126
|
|
125
127
|
${LUAJIT_OBJ}:
|
126
|
-
cd ext/luajit && MACOSX_DEPLOYMENT_TARGET="10.
|
128
|
+
cd ext/luajit && MACOSX_DEPLOYMENT_TARGET="10.8" make CROSS="${CROSS}" CC=cc HOST_CC=cc TARGET_SYS=${SYS} XCFLAGS="${LUAJIT_XCFLAGS}"
|
127
129
|
|
128
130
|
# Build lua executable for testing and compilation
|
129
131
|
# Seperate compilation as we need the LUA_UNSAFE_MODE flag set...
|
data/lua-hooks/ext/all.c
CHANGED
@@ -17,6 +17,11 @@
|
|
17
17
|
#include "lua-snapshot/snapshot.c"
|
18
18
|
#include "sha1/luasha1.c"
|
19
19
|
#include "sha2/luasha256.c"
|
20
|
+
#include "perf/luacpu.c"
|
21
|
+
#include "perf/lualoadavg.c"
|
22
|
+
#include "perf/luameminfo.c"
|
23
|
+
#include "perf/luaoslib.c"
|
24
|
+
|
20
25
|
|
21
26
|
static const luaL_Reg lj_lib_load[] = {
|
22
27
|
// Default Lua modules
|
@@ -46,6 +51,10 @@ static const luaL_Reg lj_lib_load[] = {
|
|
46
51
|
{"snapshot", luaopen_snapshot},
|
47
52
|
{"sha1", luaopen_sha1},
|
48
53
|
{"sha2", luaopen_sha256},
|
54
|
+
{"perf", luaopen_cpuload},
|
55
|
+
{"perf", luaopen_loadavg},
|
56
|
+
{"perf", luaopen_meminfo},
|
57
|
+
{"perf", luaopen_luaos},
|
49
58
|
|
50
59
|
{ NULL, NULL }
|
51
60
|
};
|
@@ -0,0 +1,114 @@
|
|
1
|
+
#include <stdio.h>
|
2
|
+
#include <unistd.h>
|
3
|
+
|
4
|
+
#define LUA_LIB
|
5
|
+
#include "lua.h"
|
6
|
+
#include "lauxlib.h"
|
7
|
+
|
8
|
+
/* Show overall CPU utilization of the system
|
9
|
+
* This is a part of the post http://phoxis.org/2013/09/05/finding-overall-and-per-core-cpu-utilization
|
10
|
+
*/
|
11
|
+
|
12
|
+
#define BUF_MAX 1024
|
13
|
+
|
14
|
+
int
|
15
|
+
read_fields (FILE *fp, unsigned long long int *fields) {
|
16
|
+
int retval;
|
17
|
+
char buffer[BUF_MAX];
|
18
|
+
if (!fgets (buffer, BUF_MAX, fp)) {
|
19
|
+
perror ("Error");
|
20
|
+
}
|
21
|
+
retval = sscanf (buffer, "cpu %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu",
|
22
|
+
&fields[0],
|
23
|
+
&fields[1],
|
24
|
+
&fields[2],
|
25
|
+
&fields[3],
|
26
|
+
&fields[4],
|
27
|
+
&fields[5],
|
28
|
+
&fields[6],
|
29
|
+
&fields[7],
|
30
|
+
&fields[8],
|
31
|
+
&fields[9]);
|
32
|
+
if (retval < 4) {
|
33
|
+
fprintf (stderr, "Error reading /proc/stat cpu field\n");
|
34
|
+
return 0;
|
35
|
+
}
|
36
|
+
return 1;
|
37
|
+
}
|
38
|
+
|
39
|
+
/* Immunio Lua bindings */
|
40
|
+
|
41
|
+
static int
|
42
|
+
lua_cpuload(lua_State *L) {
|
43
|
+
FILE *fp;
|
44
|
+
unsigned long long int fields[10], total_tick, total_tick_old, idle, idle_old, del_total_tick, del_idle;
|
45
|
+
int i;
|
46
|
+
double percent_usage;
|
47
|
+
char str[100];
|
48
|
+
|
49
|
+
fp = fopen ("/proc/stat", "r");
|
50
|
+
if (fp == NULL) {
|
51
|
+
perror ("Error");
|
52
|
+
}
|
53
|
+
|
54
|
+
if (!read_fields (fp, fields)) {
|
55
|
+
return 0;
|
56
|
+
}
|
57
|
+
|
58
|
+
for (i=0, total_tick = 0; i<10; i++) {
|
59
|
+
total_tick += fields[i];
|
60
|
+
}
|
61
|
+
idle = fields[3]; /* idle ticks index */
|
62
|
+
sleep (1);
|
63
|
+
total_tick_old = total_tick;
|
64
|
+
idle_old = idle;
|
65
|
+
fseek (fp, 0, SEEK_SET);
|
66
|
+
fflush (fp);
|
67
|
+
if (!read_fields (fp, fields)) {
|
68
|
+
return 0;
|
69
|
+
}
|
70
|
+
|
71
|
+
for (i=0, total_tick = 0; i<10; i++) {
|
72
|
+
total_tick += fields[i];
|
73
|
+
}
|
74
|
+
idle = fields[3];
|
75
|
+
|
76
|
+
del_total_tick = total_tick - total_tick_old;
|
77
|
+
del_idle = idle - idle_old;
|
78
|
+
|
79
|
+
percent_usage = ((del_total_tick - del_idle) / (double) del_total_tick) * 100; /* 3 is index of idle time */
|
80
|
+
sprintf(str,"%f",percent_usage);
|
81
|
+
lua_pushstring(L, str);
|
82
|
+
fclose(fp);
|
83
|
+
return 1;
|
84
|
+
}
|
85
|
+
|
86
|
+
static int
|
87
|
+
lua_stat(lua_State *L) {
|
88
|
+
FILE *fp;
|
89
|
+
char buf[3000];
|
90
|
+
if ((fp=fopen("/proc/stat","r"))==NULL) {
|
91
|
+
printf("Error! opening file");
|
92
|
+
}
|
93
|
+
else {
|
94
|
+
fread(buf, 1, 3000, fp);
|
95
|
+
size_t fsize = ftell(fp);
|
96
|
+
buf[fsize] = '\0';
|
97
|
+
lua_pushstring(L, buf);
|
98
|
+
}
|
99
|
+
fclose(fp);
|
100
|
+
return 1;
|
101
|
+
}
|
102
|
+
|
103
|
+
static const luaL_Reg libcpuload[] = {
|
104
|
+
{"cpuload", lua_cpuload},
|
105
|
+
{"stat", lua_stat},
|
106
|
+
{NULL, NULL}
|
107
|
+
};
|
108
|
+
|
109
|
+
int
|
110
|
+
luaopen_cpuload(lua_State *L) {
|
111
|
+
luaL_checkversion(L);
|
112
|
+
luaL_register(L, "perf", libcpuload);
|
113
|
+
return 1;
|
114
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#include <stdio.h>
|
2
|
+
#include <stdlib.h>
|
3
|
+
|
4
|
+
#define LUA_LIB
|
5
|
+
#include "lua.h"
|
6
|
+
#include "lauxlib.h"
|
7
|
+
|
8
|
+
|
9
|
+
/*https://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-proc-loadavg.html
|
10
|
+
Gives load average in regard to both the CPU and IO over time, as well as additional
|
11
|
+
data used by uptime and other commands.
|
12
|
+
*/
|
13
|
+
|
14
|
+
/* Immunio Lua bindings */
|
15
|
+
|
16
|
+
static int
|
17
|
+
lua_loadavg(lua_State *L) {
|
18
|
+
char c[100];
|
19
|
+
FILE *fp;
|
20
|
+
if ((fp=fopen("/proc/loadavg","r"))==NULL) {
|
21
|
+
printf("Error! opening file");
|
22
|
+
}
|
23
|
+
if (fgets(c, 100, fp) != NULL) {
|
24
|
+
lua_pushstring(L, c);
|
25
|
+
}
|
26
|
+
fclose(fp);
|
27
|
+
return 1;
|
28
|
+
}
|
29
|
+
|
30
|
+
static const luaL_Reg libloadavg[] = {
|
31
|
+
{"loadavg", lua_loadavg},
|
32
|
+
{NULL, NULL}
|
33
|
+
};
|
34
|
+
|
35
|
+
int
|
36
|
+
luaopen_loadavg(lua_State *L) {
|
37
|
+
luaL_checkversion(L);
|
38
|
+
luaL_register(L, "perf", libloadavg);
|
39
|
+
return 1;
|
40
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#include <stdio.h>
|
2
|
+
|
3
|
+
#define LUA_LIB
|
4
|
+
#include "lua.h"
|
5
|
+
#include "lauxlib.h"
|
6
|
+
|
7
|
+
/*https://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-proc-meminfo.html
|
8
|
+
Gives information about RAM*/
|
9
|
+
/* Immunio Lua bindings */
|
10
|
+
|
11
|
+
static int
|
12
|
+
lua_meminfo(lua_State *L) {
|
13
|
+
FILE *fp;
|
14
|
+
char buf[2000];
|
15
|
+
if ((fp=fopen("/proc/meminfo","r"))==NULL) {
|
16
|
+
printf("Error! opening file");
|
17
|
+
}
|
18
|
+
else {
|
19
|
+
fread(buf, 1, 2000, fp);
|
20
|
+
size_t fsize = ftell(fp);
|
21
|
+
buf[fsize] = '\0';
|
22
|
+
lua_pushstring(L,buf);
|
23
|
+
}
|
24
|
+
fclose(fp);
|
25
|
+
return 1;
|
26
|
+
}
|
27
|
+
|
28
|
+
static const luaL_Reg libmeminfo[] = {
|
29
|
+
{"meminfo", lua_meminfo},
|
30
|
+
{NULL, NULL}
|
31
|
+
};
|
32
|
+
|
33
|
+
int
|
34
|
+
luaopen_meminfo(lua_State *L) {
|
35
|
+
luaL_checkversion(L);
|
36
|
+
luaL_register(L, "perf", libmeminfo);
|
37
|
+
return 1;
|
38
|
+
}
|
@@ -0,0 +1,80 @@
|
|
1
|
+
#include <time.h>
|
2
|
+
|
3
|
+
#define lib_os_c
|
4
|
+
#define LUA_LIB
|
5
|
+
|
6
|
+
#include "lua.h"
|
7
|
+
#include "lauxlib.h"
|
8
|
+
#include "lj_err.h"
|
9
|
+
|
10
|
+
static int os_clock(lua_State *L) {
|
11
|
+
setnumV(L->top++, ((lua_Number)clock())*(1.0/(lua_Number)CLOCKS_PER_SEC));
|
12
|
+
return 1;
|
13
|
+
}
|
14
|
+
|
15
|
+
static int getboolfield(lua_State *L, const char *key) {
|
16
|
+
int res;
|
17
|
+
lua_getfield(L, -1, key);
|
18
|
+
res = lua_isnil(L, -1) ? -1 : lua_toboolean(L, -1);
|
19
|
+
lua_pop(L, 1);
|
20
|
+
return res;
|
21
|
+
}
|
22
|
+
|
23
|
+
static int getfield(lua_State *L, const char *key, int d) {
|
24
|
+
int res;
|
25
|
+
lua_getfield(L, -1, key);
|
26
|
+
if (lua_isnumber(L, -1)) {
|
27
|
+
res = (int)lua_tointeger(L, -1);
|
28
|
+
} else {
|
29
|
+
if (d < 0)
|
30
|
+
lj_err_callerv(L, LJ_ERR_OSDATEF, key);
|
31
|
+
res = d;
|
32
|
+
}
|
33
|
+
lua_pop(L, 1);
|
34
|
+
return res;
|
35
|
+
}
|
36
|
+
|
37
|
+
static int os_time(lua_State *L) {
|
38
|
+
time_t t;
|
39
|
+
if (lua_isnoneornil(L, 1)) { /* called without args? */
|
40
|
+
t = time(NULL); /* get current time */
|
41
|
+
} else {
|
42
|
+
struct tm ts;
|
43
|
+
luaL_checktype(L, 1, LUA_TTABLE);
|
44
|
+
lua_settop(L, 1); /* make sure table is at the top */
|
45
|
+
ts.tm_sec = getfield(L, "sec", 0);
|
46
|
+
ts.tm_min = getfield(L, "min", 0);
|
47
|
+
ts.tm_hour = getfield(L, "hour", 12);
|
48
|
+
ts.tm_mday = getfield(L, "day", -1);
|
49
|
+
ts.tm_mon = getfield(L, "month", -1) - 1;
|
50
|
+
ts.tm_year = getfield(L, "year", -1) - 1900;
|
51
|
+
ts.tm_isdst = getboolfield(L, "isdst");
|
52
|
+
t = mktime(&ts);
|
53
|
+
}
|
54
|
+
if (t == (time_t)(-1))
|
55
|
+
lua_pushnil(L);
|
56
|
+
else
|
57
|
+
lua_pushnumber(L, (lua_Number)t);
|
58
|
+
return 1;
|
59
|
+
}
|
60
|
+
|
61
|
+
static int os_difftime(lua_State *L) {
|
62
|
+
lua_pushnumber(L, difftime((time_t)(luaL_checknumber(L, 1)),
|
63
|
+
(time_t)(luaL_optnumber(L, 2, (lua_Number)0))));
|
64
|
+
return 1;
|
65
|
+
}
|
66
|
+
|
67
|
+
static const luaL_Reg libluaos[] = {
|
68
|
+
{"clock", os_clock},
|
69
|
+
{"time", os_time},
|
70
|
+
{"difftime", os_difftime},
|
71
|
+
|
72
|
+
{NULL, NULL}
|
73
|
+
};
|
74
|
+
|
75
|
+
int
|
76
|
+
luaopen_luaos(lua_State *L) {
|
77
|
+
luaL_checkversion(L);
|
78
|
+
luaL_register(L, "perf", libluaos);
|
79
|
+
return 1;
|
80
|
+
}
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: immunio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Immunio
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: thor
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.14.6
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.14.6
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -56,56 +56,56 @@ dependencies:
|
|
56
56
|
name: msgpack
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0.5'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.5'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: faraday
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0.8'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0.8'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: faraday_middleware
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0.9'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.9'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: binding_of_caller
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ~>
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0.7'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0.7'
|
111
111
|
description: |
|
@@ -124,9 +124,6 @@ extensions:
|
|
124
124
|
- ext/immunio/Rakefile
|
125
125
|
extra_rdoc_files: []
|
126
126
|
files:
|
127
|
-
- LICENSE
|
128
|
-
- README.md
|
129
|
-
- bin/immunio
|
130
127
|
- ext/immunio/Rakefile
|
131
128
|
- lib/immunio.rb
|
132
129
|
- lib/immunio/agent.rb
|
@@ -415,11 +412,18 @@ files:
|
|
415
412
|
- lua-hooks/ext/luautf8/README.md
|
416
413
|
- lua-hooks/ext/luautf8/lutf8lib.c
|
417
414
|
- lua-hooks/ext/luautf8/unidata.h
|
415
|
+
- lua-hooks/ext/perf/luacpu.c
|
416
|
+
- lua-hooks/ext/perf/lualoadavg.c
|
417
|
+
- lua-hooks/ext/perf/luameminfo.c
|
418
|
+
- lua-hooks/ext/perf/luaoslib.c
|
418
419
|
- lua-hooks/ext/sha1/luasha1.c
|
419
420
|
- lua-hooks/ext/sha1/sha1.c
|
420
421
|
- lua-hooks/ext/sha2/luasha256.c
|
421
422
|
- lua-hooks/ext/sha2/sha256.c
|
423
|
+
- README.md
|
424
|
+
- LICENSE
|
422
425
|
- lua-hooks/lib/boot.lua
|
426
|
+
- bin/immunio
|
423
427
|
homepage: http://immun.io/
|
424
428
|
licenses:
|
425
429
|
- Immunio
|
@@ -431,19 +435,18 @@ require_paths:
|
|
431
435
|
- lib
|
432
436
|
required_ruby_version: !ruby/object:Gem::Requirement
|
433
437
|
requirements:
|
434
|
-
- -
|
438
|
+
- - '>='
|
435
439
|
- !ruby/object:Gem::Version
|
436
440
|
version: 1.9.3
|
437
441
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
438
442
|
requirements:
|
439
|
-
- -
|
443
|
+
- - '>='
|
440
444
|
- !ruby/object:Gem::Version
|
441
445
|
version: '0'
|
442
446
|
requirements: []
|
443
447
|
rubyforge_project:
|
444
|
-
rubygems_version: 2.
|
448
|
+
rubygems_version: 2.0.14
|
445
449
|
signing_key:
|
446
450
|
specification_version: 4
|
447
451
|
summary: Immunio Ruby agent
|
448
452
|
test_files: []
|
449
|
-
has_rdoc:
|