shikashi 0.5.3 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +2 -0
- data/Rakefile +2 -2
- data/lib/shikashi/sandbox.rb +19 -5
- metadata +7 -7
data/CHANGELOG
CHANGED
data/Rakefile
CHANGED
@@ -6,13 +6,13 @@ require 'rake/testtask'
|
|
6
6
|
|
7
7
|
spec = Gem::Specification.new do |s|
|
8
8
|
s.name = 'shikashi'
|
9
|
-
s.version = '0.
|
9
|
+
s.version = '0.6.0'
|
10
10
|
s.author = 'Dario Seminara'
|
11
11
|
s.email = 'robertodarioseminara@gmail.com'
|
12
12
|
s.platform = Gem::Platform::RUBY
|
13
13
|
s.summary = 'shikashi is a ruby sandbox that permits the execution of "unprivileged" scripts by defining the permitted methods and constants the scripts can invoke with a white list logic'
|
14
14
|
s.homepage = "http://github.com/tario/shikashi"
|
15
|
-
s.add_dependency "evalhook", ">= 0.
|
15
|
+
s.add_dependency "evalhook", ">= 0.6.0"
|
16
16
|
s.add_dependency "getsource", ">= 0.1.0"
|
17
17
|
s.has_rdoc = true
|
18
18
|
s.extra_rdoc_files = [ 'README' ]
|
data/lib/shikashi/sandbox.rb
CHANGED
@@ -87,7 +87,8 @@ module Shikashi
|
|
87
87
|
def initialize
|
88
88
|
@privileges = Hash.new
|
89
89
|
@chain = Hash.new
|
90
|
-
@
|
90
|
+
@hook_handler_list = Array.new
|
91
|
+
@hook_handler = instantiate_evalhook_handler
|
91
92
|
@hook_handler.sandbox = self
|
92
93
|
@base_namespace = create_adhoc_base_namespace
|
93
94
|
@hook_handler.base_namespace = @base_namespace
|
@@ -132,6 +133,11 @@ module Shikashi
|
|
132
133
|
raise Shikashi::Timeout::Error
|
133
134
|
end
|
134
135
|
end
|
136
|
+
|
137
|
+
# Dispose the objects associated with this code package
|
138
|
+
def dispose
|
139
|
+
@evalhook_packet.dispose
|
140
|
+
end
|
135
141
|
end
|
136
142
|
|
137
143
|
class EvalhookHandler < EvalHook::HookHandler
|
@@ -381,7 +387,7 @@ module Shikashi
|
|
381
387
|
hook_handler = nil
|
382
388
|
|
383
389
|
if base_namespace
|
384
|
-
hook_handler =
|
390
|
+
hook_handler = instantiate_evalhook_handler
|
385
391
|
hook_handler.base_namespace = base_namespace
|
386
392
|
hook_handler.sandbox = self
|
387
393
|
else
|
@@ -411,7 +417,7 @@ module Shikashi
|
|
411
417
|
end
|
412
418
|
|
413
419
|
def create_hook_handler(*args)
|
414
|
-
hook_handler =
|
420
|
+
hook_handler = instantiate_evalhook_handler
|
415
421
|
hook_handler.sandbox = self
|
416
422
|
@base_namespace = args.pick(:base_namespace) do create_adhoc_base_namespace end
|
417
423
|
hook_handler.base_namespace = @base_namespace
|
@@ -424,9 +430,17 @@ module Shikashi
|
|
424
430
|
hook_handler
|
425
431
|
end
|
426
432
|
|
427
|
-
|
433
|
+
def dispose
|
434
|
+
@hook_handler_list.each(&:dispose)
|
435
|
+
end
|
428
436
|
private
|
429
437
|
|
438
|
+
def instantiate_evalhook_handler
|
439
|
+
newhookhandler = EvalhookHandler.new
|
440
|
+
@hook_handler_list << newhookhandler
|
441
|
+
newhookhandler
|
442
|
+
end
|
443
|
+
|
430
444
|
def create_adhoc_base_namespace
|
431
445
|
rnd_module_name = "SandboxBasenamespace#{rand(100000000)}"
|
432
446
|
|
@@ -457,7 +471,7 @@ private
|
|
457
471
|
hook_handler = nil
|
458
472
|
|
459
473
|
if base_namespace
|
460
|
-
hook_handler =
|
474
|
+
hook_handler = instantiate_evalhook_handler
|
461
475
|
hook_handler.base_namespace = base_namespace
|
462
476
|
hook_handler.sandbox = self
|
463
477
|
else
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shikashi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-05-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: evalhook
|
16
|
-
requirement: &
|
16
|
+
requirement: &80996950 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.6.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *80996950
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: getsource
|
27
|
-
requirement: &
|
27
|
+
requirement: &80996420 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: 0.1.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *80996420
|
36
36
|
description:
|
37
37
|
email: robertodarioseminara@gmail.com
|
38
38
|
executables: []
|