shikashi 0.5.3 → 0.6.0
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.
- 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: []
|