immunio 1.0.17 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fc7a5efbb9c263035f34f492e8fe583c0cf52934
4
- data.tar.gz: 20b47f8f7bfeb94639ac4a3a038375e4f57240f6
3
+ metadata.gz: fa6484d2fd07102fbdc20e1e0efb80e896fe7fd3
4
+ data.tar.gz: 1f3f3b0b1489dc425ac437f349b53b581719b4cc
5
5
  SHA512:
6
- metadata.gz: 7a30dc9806867c4bddec346cd8d9273ff13ea6303a100516b373a4ca0e40cc0e6717853404d3c9dd3977ac1d9ea034d9da09689936f1e3ea9abf75573ba5b141
7
- data.tar.gz: 4fefd4745286845e1c406c55228a9384c78dbe31d9f39a94d893ef922bb6d80d16fcd53a7f43d8b6732bd4f3eb9dcbc6cc5b623bed9c463f5418ede77c450030
6
+ metadata.gz: 12ec429dfc0384009851ae4cc9f27db31678e13a45b39974c0e72fdea2f6dbeb832aa8847bb277f5adbd2918ec385a6a4c5eef8d594d6de79e11dfbbc61ba3cc
7
+ data.tar.gz: 818548e67dfa6d9e954903aa2da1d2e54745541164eb3de70bbc32bac74dc58adca741fd109c346c86dc96513fa85f1877c5f07a480cd66189fb9d9eaa7b2997
data/LICENSE CHANGED
@@ -187,6 +187,30 @@ subject to the following conditions:
187
187
  out of or in connection with the Software or the use or other dealings in the
188
188
  Software.
189
189
 
190
+ This product includes content covered by the following license:
191
+
192
+ The MIT License (MIT)
193
+
194
+ Copyright (c) 2015 Boris Nagaev
195
+
196
+ Permission is hereby granted, free of charge, to any person obtaining a copy
197
+ of this software and associated documentation files (the "Software"), to deal
198
+ in the Software without restriction, including without limitation the rights
199
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
200
+ copies of the Software, and to permit persons to whom the Software is
201
+ furnished to do so, subject to the following conditions:
202
+
203
+ The above copyright notice and this permission notice shall be included in all
204
+ copies or substantial portions of the Software.
205
+
206
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
207
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
208
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
209
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
210
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
211
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
212
+ SOFTWARE.
213
+
190
214
 
191
215
  All other components of this product are
192
216
  Copyright (c) 2015 Immunio, Inc. All rights reserved.
data/README.md CHANGED
@@ -22,9 +22,9 @@ require 'immunio'
22
22
 
23
23
  ## Configuration
24
24
 
25
- The agent key and secret can be configured via the `IMMUNIO_KEY` and `IMMUNIO_SECRET` environment variables.
25
+ The agent key and secret can be configured in a configuration file at *config/immunio.yml*.
26
26
 
27
- Optionally, a configuration file can be provided in *config/immunio.yml* which will take precedence over the environment variables:
27
+ Optionally, the agent key and secret can be set using the `IMMUNIO_KEY` and `IMMUNIO_SECRET` environment variables, which will take precedence.
28
28
 
29
29
  ```yaml
30
30
  key: "my-key"
@@ -19,7 +19,6 @@ module Immunio
19
19
  SEV_LABEL[severity] || 'ANY'
20
20
  end
21
21
 
22
- private
23
22
  SEV_LABEL = Array.new(::Logger::SEV_LABEL)
24
23
  SEV_LABEL[-1] = 'TRACE'
25
24
  end
@@ -57,11 +57,11 @@ if defined?(Warden::Manager)
57
57
 
58
58
  # Force lookup of user info for all requests.
59
59
  def call_with_immunio(env)
60
- call_without_immunio(env)
61
- ensure
62
- Immunio::Request.time "plugin", "#{Module.nesting[0]}::#{__method__}" do
63
- env['warden'].user
64
- end
60
+ call_without_immunio(env)
61
+ ensure
62
+ Immunio::Request.time "plugin", "#{Module.nesting[0]}::#{__method__}" do
63
+ env['warden'].user if env['warden']
64
+ end
65
65
  end
66
66
  alias :call_without_immunio :call
67
67
  alias :call :call_with_immunio
@@ -1,5 +1,5 @@
1
1
  module Immunio
2
2
  AGENT_TYPE = "agent-ruby"
3
- VERSION = "1.0.17"
3
+ VERSION = "1.0.19"
4
4
  VM_VERSION = "2.2.0"
5
5
  end
@@ -0,0 +1,44 @@
1
+ require_relative 'version_bumper'
2
+
3
+ namespace 'version' do
4
+ YES_TRUE_REGEX = /yes|y|true|t/
5
+
6
+ def test_mode?
7
+ !!(ENV.fetch('TEST', 'no').downcase =~ YES_TRUE_REGEX)
8
+ end
9
+
10
+ def quiet_mode?
11
+ !!(ENV.fetch('QUIET', 'yes').downcase =~ YES_TRUE_REGEX)
12
+ end
13
+
14
+ task :setup do
15
+ @bumper = VersionBumper.new(test_mode?, quiet_mode?)
16
+ @bumper.status
17
+ abort "You must be on a clean master branch!" unless VersionBumper.on_clean_master?
18
+ end
19
+
20
+ desc "Show status"
21
+ task :status => [ :setup ] do
22
+ end
23
+
24
+ namespace 'release' do
25
+ desc "Prepare a new release"
26
+ task :prepare => [ :setup ] do
27
+ @bumper.prepare
28
+ end
29
+ end
30
+
31
+ desc "Bump version"
32
+ task :bump => [ :setup ] do
33
+ new_version = @bumper.prompt_for_new_version
34
+ @bumper.ask_and_bump_version(new_version)
35
+ end
36
+
37
+ namespace :bump do
38
+ desc "Bump version to development"
39
+ task :development => [ :setup ] do
40
+ abort "Version already set for development" if VersionBumper.development?
41
+ @bumper.bump_development_version
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,128 @@
1
+ require_relative '../immunio/version'
2
+ require 'highline'
3
+
4
+ class VersionBumper
5
+ def self.current_version
6
+ Immunio::VERSION
7
+ end
8
+
9
+ def self.version_file
10
+ @version_file ||= File.join Dir.pwd, 'lib/', 'immunio', 'version.rb'
11
+ end
12
+
13
+ def self.current_branch
14
+ %x[git symbolic-ref HEAD 2>/dev/null | cut -d"/" -f 3].strip
15
+ end
16
+
17
+ def self.on_master?
18
+ current_branch == 'master'
19
+ end
20
+
21
+ def self.clean_branch?
22
+ %x[git status --porcelain --ignore-submodules].split.count == 0
23
+ end
24
+
25
+ def self.on_clean_master?
26
+ on_master? && clean_branch?
27
+ end
28
+
29
+ def self.development?
30
+ current_version =~ /master/
31
+ end
32
+
33
+
34
+ def initialize(test_mode, quiet_mode)
35
+ @test_mode = test_mode
36
+ @quiet_mode = quiet_mode
37
+ end
38
+
39
+ attr_reader :test_mode, :quiet_mode
40
+
41
+ def status
42
+ cli.say "<%= color('You are not on the master branch!', BOLD) %>" unless self.class.on_master?
43
+ cli.say "<%= color('There are uncommitted changes OR untracked files!', BOLD) %>" unless self.class.clean_branch?
44
+ cli.say "Current version is: #{self.class.current_version}"
45
+ end
46
+
47
+ def prepare
48
+ if cli.agree("Are you sure? (yes/no)")
49
+ exec 'git submodule init' # When we have a fresh clone
50
+ exec 'git fetch origin'
51
+ exec 'git clean -fxd'
52
+ exec 'git submodule foreach --recursive git clean -fxd'
53
+ exec 'git submodule update'
54
+ cli.say 'Now run `bundle exec rake version:bump`'
55
+ else
56
+ cli.say 'Nothing done.'
57
+ end
58
+ end
59
+
60
+ def prompt_for_new_version
61
+ @new_version ||= cli.ask('New version? ') do |v|
62
+ v.default = self.class.current_version.sub('.master', '')
63
+ end
64
+ end
65
+
66
+ def ask_and_bump_version(version)
67
+ unless version_valid?
68
+ cli.say 'Version is unchanged'
69
+ return
70
+ end
71
+
72
+ if cli.agree("Bump version to #{version}? (yes/no)")
73
+ bump_version(version)
74
+ else
75
+ cli.say 'Nothing done.'
76
+ end
77
+ end
78
+
79
+ def bump_development_version
80
+ return if self.class.development?
81
+
82
+ arr = self.class.current_version.split('.')
83
+ new_patch_level = (arr.last.to_i + 1).to_s
84
+ version = (arr[0...2] << new_patch_level).join('.') << '.master'
85
+
86
+ ask_and_bump_version(version)
87
+ end
88
+
89
+ private
90
+
91
+ def exec(cmd)
92
+ echo = test_mode ? 'echo' : ''
93
+ puts "=> #{echo} #{cmd}" unless quiet_mode
94
+ %x[#{echo} #{cmd}]
95
+ end
96
+
97
+ def cli
98
+ @cli ||= HighLine.new
99
+ end
100
+
101
+ def version_valid?
102
+ @new_version != self.class.current_version
103
+ end
104
+
105
+ def bump_version(new_version)
106
+ return unless self.class.on_clean_master?
107
+
108
+ cli.say "Bumping version to v#{new_version}"
109
+ update_version_file(new_version)
110
+ commit_changes(new_version)
111
+ end
112
+
113
+ def update_version_file(new_version)
114
+ cli.say "Updating #{self.class.version_file}"
115
+ cli.say exec(%Q[sed -i '' 's/#{self.class.current_version}/#{new_version}/' #{self.class.version_file}])
116
+ end
117
+
118
+ def commit_changes(new_version)
119
+ cli.say "Committing changes"
120
+ if new_version =~ /master/
121
+ cli.say exec(%Q[git commit -a -m \"Open v#{new_version} for development\"])
122
+ else
123
+ cli.say exec(%Q[git commit -a -m \"Bump agent version to v#{new_version}\"])
124
+ cli.say "Next, run `gem_push=no bundle exec rake release`"
125
+ cli.say "Then, run `bundle exec rake version:bump:development`"
126
+ end
127
+ end
128
+ end
@@ -25,6 +25,7 @@ LUA_SRC = \
25
25
  lib/hooks.lua \
26
26
  lib/idn.lua \
27
27
  lib/lexgraph.lua \
28
+ lib/lru.lua \
28
29
  lib/neturl.lua \
29
30
  lib/paths.lua \
30
31
  lib/perf.lua \
@@ -35,6 +36,7 @@ LUA_SRC = \
35
36
  lib/semver.lua \
36
37
  lib/sha1.lua \
37
38
  lib/snap.lua \
39
+ lib/term.lua \
38
40
  lib/utils.lua \
39
41
  lib/lexers/bash_dqstr.lua \
40
42
  lib/lexers/bash.lua \
@@ -42,6 +44,7 @@ LUA_SRC = \
42
44
  lib/lexers/css.lua \
43
45
  lib/lexers/html.lua \
44
46
  lib/lexers/javascript.lua \
47
+ lib/lexers/markers.lua \
45
48
  lib/lexer.lua \
46
49
  lib/hooks/authenticate.lua \
47
50
  lib/hooks/bad_cookie.lua \
@@ -53,9 +56,11 @@ LUA_SRC = \
53
56
  lib/hooks/framework_csrf_check.lua \
54
57
  lib/hooks/framework_login.lua \
55
58
  lib/hooks/framework_password_reset.lua \
59
+ lib/hooks/framework_account_created.lua \
56
60
  lib/hooks/framework_redirect.lua \
57
61
  lib/hooks/framework_session.lua \
58
62
  lib/hooks/framework_user.lua \
63
+ lib/hooks/framework_route.lua \
59
64
  lib/hooks/http_request_finish.lua \
60
65
  lib/hooks/http_request_start.lua \
61
66
  lib/hooks/http_response_start.lua \
@@ -160,12 +165,16 @@ clean: cleanhooks
160
165
  rm -rf build
161
166
  find . -name \*.o -delete
162
167
 
163
-
164
168
  test: ${CLI} ${INIT_HOOK} lint ${MIN_SRCS}
165
169
  @rm -f test_failed
166
170
  @for file in test/*_test.lua; do printf "\nRunning $$file\n"; TEST_BUILT_HOOKS=1 ./${CLI} $$file || touch test_failed; done
167
171
  @test ! -f test_failed
168
172
 
173
+ enable-console: cleanhooks
174
+ git update-index --assume-unchanged lib/term.lua
175
+ cp lib/term.lua.dev lib/term.lua
176
+ make
177
+
169
178
  lint: ${INIT_HOOK}
170
179
  @# Scan all lua files for lines with trailing spaces
171
180
  @# The leading `!` negates the logic, so this target fails if trailing
@@ -5,32 +5,32 @@
5
5
  #include "lua.h"
6
6
  #include "lauxlib.h"
7
7
 
8
- /* Show overall CPU utilization of the system
8
+ /* Show overall CPU utilization of the system
9
9
  * This is a part of the post http://phoxis.org/2013/09/05/finding-overall-and-per-core-cpu-utilization
10
10
  */
11
11
 
12
12
  #define BUF_MAX 1024
13
13
 
14
- int
14
+ int
15
15
  read_fields (FILE *fp, unsigned long long int *fields) {
16
16
  int retval;
17
17
  char buffer[BUF_MAX];
18
18
  if (!fgets (buffer, BUF_MAX, fp)) {
19
- perror ("Error");
19
+ return 0;
20
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]);
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
32
  if (retval < 4) {
33
- fprintf (stderr, "Error reading /proc/stat cpu field\n");
33
+ //fprintf (stderr, "Error reading /proc/stat cpu field\n");
34
34
  return 0;
35
35
  }
36
36
  return 1;
@@ -48,7 +48,7 @@ lua_cpuload(lua_State *L) {
48
48
 
49
49
  fp = fopen ("/proc/stat", "r");
50
50
  if (fp == NULL) {
51
- perror ("Error");
51
+ return 0;
52
52
  }
53
53
 
54
54
  if (!read_fields (fp, fields)) {
@@ -70,7 +70,7 @@ lua_cpuload(lua_State *L) {
70
70
 
71
71
  for (i=0, total_tick = 0; i<10; i++) {
72
72
  total_tick += fields[i];
73
- }
73
+ }
74
74
  idle = fields[3];
75
75
 
76
76
  del_total_tick = total_tick - total_tick_old;
@@ -88,7 +88,7 @@ lua_stat(lua_State *L) {
88
88
  FILE *fp;
89
89
  char buf[3000];
90
90
  if ((fp=fopen("/proc/stat","r"))==NULL) {
91
- printf("Error! opening file");
91
+ return 0;
92
92
  }
93
93
  else {
94
94
  fread(buf, 1, 3000, fp);
@@ -8,7 +8,7 @@
8
8
 
9
9
  /*https://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-proc-loadavg.html
10
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.
11
+ data used by uptime and other commands.
12
12
  */
13
13
 
14
14
  /* Immunio Lua bindings */
@@ -18,7 +18,7 @@ lua_loadavg(lua_State *L) {
18
18
  char c[100];
19
19
  FILE *fp;
20
20
  if ((fp=fopen("/proc/loadavg","r"))==NULL) {
21
- printf("Error! opening file");
21
+ return 0;
22
22
  }
23
23
  if (fgets(c, 100, fp) != NULL) {
24
24
  lua_pushstring(L, c);
@@ -13,7 +13,7 @@ lua_meminfo(lua_State *L) {
13
13
  FILE *fp;
14
14
  char buf[2000];
15
15
  if ((fp=fopen("/proc/meminfo","r"))==NULL) {
16
- printf("Error! opening file");
16
+ return 0;
17
17
  }
18
18
  else {
19
19
  fread(buf, 1, 2000, fp);
@@ -8,7 +8,8 @@
8
8
  #include "lj_err.h"
9
9
 
10
10
  static int os_clock(lua_State *L) {
11
- setnumV(L->top++, ((lua_Number)clock())*(1.0/(lua_Number)CLOCKS_PER_SEC));
11
+ lua_Number clk = ((lua_Number)clock())*(1.0/(lua_Number)CLOCKS_PER_SEC);
12
+ lua_pushnumber(L, clk);
12
13
  return 1;
13
14
  }
14
15
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: immunio
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.17
4
+ version: 1.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Immunio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-05 00:00:00.000000000 Z
11
+ date: 2016-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -164,6 +164,8 @@ files:
164
164
  - lib/immunio/utils.rb
165
165
  - lib/immunio/version.rb
166
166
  - lib/immunio/vm.rb
167
+ - lib/immunio_tasks/version_bump.rake
168
+ - lib/immunio_tasks/version_bumper.rb
167
169
  - lua-hooks/Makefile
168
170
  - lua-hooks/ext/all.c
169
171
  - lua-hooks/ext/libinjection/COPYING
@@ -445,9 +447,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
445
447
  version: '0'
446
448
  requirements: []
447
449
  rubyforge_project:
448
- rubygems_version: 2.4.5
450
+ rubygems_version: 2.4.5.1
449
451
  signing_key:
450
452
  specification_version: 4
451
453
  summary: Immunio Ruby agent
452
454
  test_files: []
453
- has_rdoc: