ruby-zoom 4.3.1 → 4.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/z +9 -0
- data/bin/zc +9 -0
- data/bin/zf +9 -0
- data/bin/zg +9 -0
- data/bin/zl +9 -0
- data/bin/zr +9 -0
- data/lib/zoom/config.rb +8 -0
- data/lib/zoom/profile.rb +9 -9
- data/lib/zoom/profile/find.rb +1 -1
- data/lib/zoom/profile/grep.rb +1 -1
- data/lib/zoom/profile/passwords.rb +11 -21
- data/lib/zoom/profile/unsafe_c.rb +40 -0
- data/lib/zoom/profile/unsafe_java.rb +31 -0
- data/lib/zoom/profile/unsafe_js.rb +27 -0
- data/lib/zoom/profile/unsafe_php.rb +67 -0
- data/lib/zoom/profile/unsafe_python.rb +38 -0
- data/lib/zoom/profile_manager.rb +11 -4
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69f08853e0d57951199bd5457687518398ed65eb
|
4
|
+
data.tar.gz: 05bc33a3d915ee9a1d4bc819f0943c8de682febc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12dc726079299ef9971130305bfde110b7a96e4384f4718bcbb4a03a7f6bdafbcb13f5586197a77176e36d9778f5322b57f28ccde571f162df98756abfa288f9
|
7
|
+
data.tar.gz: 58515511ddba68d407730311e4330b500970fd3b47adcf0652cac6863db61f87a6a6d7e685a217cf91b147901c22bd59c397d99251e4ce93a4ee8ad387eba475
|
data/bin/z
CHANGED
@@ -112,6 +112,13 @@ def parse(args)
|
|
112
112
|
options["action"] = "rc"
|
113
113
|
end
|
114
114
|
|
115
|
+
opts.on(
|
116
|
+
"--secprofs",
|
117
|
+
"Create some security related profiles"
|
118
|
+
) do
|
119
|
+
options["action"] = "secprofs"
|
120
|
+
end
|
121
|
+
|
115
122
|
opts.on("", "MISC_OPTIONS")
|
116
123
|
|
117
124
|
opts.on(
|
@@ -279,6 +286,8 @@ begin
|
|
279
286
|
when "rc"
|
280
287
|
zoom.config.default_config
|
281
288
|
zoom.cache.clear
|
289
|
+
when "secprofs"
|
290
|
+
zoom.config.add_security_profiles
|
282
291
|
when "version"
|
283
292
|
__FILE__.match(/ruby-zoom-(\d+\.\d+\.\d+)/) do |m|
|
284
293
|
puts m[1]
|
data/bin/zc
CHANGED
@@ -112,6 +112,13 @@ def parse(args)
|
|
112
112
|
options["action"] = "rc"
|
113
113
|
end
|
114
114
|
|
115
|
+
opts.on(
|
116
|
+
"--secprofs",
|
117
|
+
"Create some security related profiles"
|
118
|
+
) do
|
119
|
+
options["action"] = "secprofs"
|
120
|
+
end
|
121
|
+
|
115
122
|
opts.on("", "MISC_OPTIONS")
|
116
123
|
|
117
124
|
opts.on(
|
@@ -279,6 +286,8 @@ begin
|
|
279
286
|
when "rc"
|
280
287
|
zoom.config.default_config
|
281
288
|
zoom.cache.clear
|
289
|
+
when "secprofs"
|
290
|
+
zoom.config.add_security_profiles
|
282
291
|
when "version"
|
283
292
|
__FILE__.match(/ruby-zoom-(\d+\.\d+\.\d+)/) do |m|
|
284
293
|
puts m[1]
|
data/bin/zf
CHANGED
@@ -112,6 +112,13 @@ def parse(args)
|
|
112
112
|
options["action"] = "rc"
|
113
113
|
end
|
114
114
|
|
115
|
+
opts.on(
|
116
|
+
"--secprofs",
|
117
|
+
"Create some security related profiles"
|
118
|
+
) do
|
119
|
+
options["action"] = "secprofs"
|
120
|
+
end
|
121
|
+
|
115
122
|
opts.on("", "MISC_OPTIONS")
|
116
123
|
|
117
124
|
opts.on(
|
@@ -279,6 +286,8 @@ begin
|
|
279
286
|
when "rc"
|
280
287
|
zoom.config.default_config
|
281
288
|
zoom.cache.clear
|
289
|
+
when "secprofs"
|
290
|
+
zoom.config.add_security_profiles
|
282
291
|
when "version"
|
283
292
|
__FILE__.match(/ruby-zoom-(\d+\.\d+\.\d+)/) do |m|
|
284
293
|
puts m[1]
|
data/bin/zg
CHANGED
@@ -112,6 +112,13 @@ def parse(args)
|
|
112
112
|
options["action"] = "rc"
|
113
113
|
end
|
114
114
|
|
115
|
+
opts.on(
|
116
|
+
"--secprofs",
|
117
|
+
"Create some security related profiles"
|
118
|
+
) do
|
119
|
+
options["action"] = "secprofs"
|
120
|
+
end
|
121
|
+
|
115
122
|
opts.on("", "MISC_OPTIONS")
|
116
123
|
|
117
124
|
opts.on(
|
@@ -279,6 +286,8 @@ begin
|
|
279
286
|
when "rc"
|
280
287
|
zoom.config.default_config
|
281
288
|
zoom.cache.clear
|
289
|
+
when "secprofs"
|
290
|
+
zoom.config.add_security_profiles
|
282
291
|
when "version"
|
283
292
|
__FILE__.match(/ruby-zoom-(\d+\.\d+\.\d+)/) do |m|
|
284
293
|
puts m[1]
|
data/bin/zl
CHANGED
@@ -112,6 +112,13 @@ def parse(args)
|
|
112
112
|
options["action"] = "rc"
|
113
113
|
end
|
114
114
|
|
115
|
+
opts.on(
|
116
|
+
"--secprofs",
|
117
|
+
"Create some security related profiles"
|
118
|
+
) do
|
119
|
+
options["action"] = "secprofs"
|
120
|
+
end
|
121
|
+
|
115
122
|
opts.on("", "MISC_OPTIONS")
|
116
123
|
|
117
124
|
opts.on(
|
@@ -279,6 +286,8 @@ begin
|
|
279
286
|
when "rc"
|
280
287
|
zoom.config.default_config
|
281
288
|
zoom.cache.clear
|
289
|
+
when "secprofs"
|
290
|
+
zoom.config.add_security_profiles
|
282
291
|
when "version"
|
283
292
|
__FILE__.match(/ruby-zoom-(\d+\.\d+\.\d+)/) do |m|
|
284
293
|
puts m[1]
|
data/bin/zr
CHANGED
@@ -112,6 +112,13 @@ def parse(args)
|
|
112
112
|
options["action"] = "rc"
|
113
113
|
end
|
114
114
|
|
115
|
+
opts.on(
|
116
|
+
"--secprofs",
|
117
|
+
"Create some security related profiles"
|
118
|
+
) do
|
119
|
+
options["action"] = "secprofs"
|
120
|
+
end
|
121
|
+
|
115
122
|
opts.on("", "MISC_OPTIONS")
|
116
123
|
|
117
124
|
opts.on(
|
@@ -279,6 +286,8 @@ begin
|
|
279
286
|
when "rc"
|
280
287
|
zoom.config.default_config
|
281
288
|
zoom.cache.clear
|
289
|
+
when "secprofs"
|
290
|
+
zoom.config.add_security_profiles
|
282
291
|
when "version"
|
283
292
|
__FILE__.match(/ruby-zoom-(\d+\.\d+\.\d+)/) do |m|
|
284
293
|
puts m[1]
|
data/lib/zoom/config.rb
CHANGED
@@ -3,6 +3,14 @@ require "json_config"
|
|
3
3
|
require "scoobydoo"
|
4
4
|
|
5
5
|
class Zoom::Config < JSONConfig
|
6
|
+
def add_security_profiles
|
7
|
+
profiles = get("profiles")
|
8
|
+
Zoom::ProfileManager::security_profiles.each do |profile|
|
9
|
+
profiles[profile.name] = profile
|
10
|
+
end
|
11
|
+
set("profiles", profiles)
|
12
|
+
end
|
13
|
+
|
6
14
|
def color(key, value)
|
7
15
|
if (value)
|
8
16
|
validate_color(value)
|
data/lib/zoom/profile.rb
CHANGED
@@ -22,20 +22,16 @@ class Zoom::Profile < Hash
|
|
22
22
|
|
23
23
|
def exe(args, pattern, paths)
|
24
24
|
# Use hard-coded pattern if defined
|
25
|
-
if (@pattern && !@pattern.empty?)
|
25
|
+
if (@pattern && !@pattern.empty? && (pattern != @pattern))
|
26
26
|
args += " #{pattern}"
|
27
27
|
pattern = @pattern
|
28
28
|
end
|
29
29
|
|
30
30
|
# If not pattern and no after, then return nothing
|
31
31
|
if (pattern.nil? || pattern.empty?)
|
32
|
-
return "" if (after.nil? || after.empty?
|
32
|
+
return "" if (after.nil? || after.empty?)
|
33
33
|
end
|
34
34
|
|
35
|
-
# If paths are specified then remove "." for profiles like
|
36
|
-
# grep
|
37
|
-
after.gsub!(/^\.\s+/, "") if (!paths.empty?)
|
38
|
-
|
39
35
|
# Emulate grep
|
40
36
|
case operator.split("/")[-1]
|
41
37
|
when "ack", "ack-grep"
|
@@ -61,7 +57,6 @@ class Zoom::Profile < Hash
|
|
61
57
|
after
|
62
58
|
].join(" ").strip
|
63
59
|
when "find"
|
64
|
-
flags.gsub!(/^\.\s+/, "") if (!paths.empty?)
|
65
60
|
cmd = [
|
66
61
|
before,
|
67
62
|
operator,
|
@@ -76,12 +71,12 @@ class Zoom::Profile < Hash
|
|
76
71
|
before,
|
77
72
|
operator,
|
78
73
|
"--color=never -EHInRs",
|
74
|
+
flags,
|
75
|
+
args,
|
79
76
|
"--exclude-dir=.bzr",
|
80
77
|
"--exclude-dir=.git",
|
81
78
|
"--exclude-dir=.git-crypt",
|
82
79
|
"--exclude-dir=.svn",
|
83
|
-
flags,
|
84
|
-
args,
|
85
80
|
pattern.shellescape,
|
86
81
|
paths,
|
87
82
|
after
|
@@ -249,3 +244,8 @@ require "zoom/profile/find"
|
|
249
244
|
require "zoom/profile/grep"
|
250
245
|
require "zoom/profile/passwords"
|
251
246
|
require "zoom/profile/pt"
|
247
|
+
require "zoom/profile/unsafe_c"
|
248
|
+
require "zoom/profile/unsafe_java"
|
249
|
+
require "zoom/profile/unsafe_js"
|
250
|
+
require "zoom/profile/unsafe_php"
|
251
|
+
require "zoom/profile/unsafe_python"
|
data/lib/zoom/profile/find.rb
CHANGED
data/lib/zoom/profile/grep.rb
CHANGED
@@ -1,36 +1,26 @@
|
|
1
1
|
require "zoom/profile_manager"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
when "ag"
|
7
|
-
class Zoom::Profile::Passwords < Zoom::Profile::Ag; end
|
8
|
-
when "pt"
|
9
|
-
class Zoom::Profile::Passwords < Zoom::Profile::Pt; end
|
10
|
-
when "grep"
|
11
|
-
class Zoom::Profile::Passwords < Zoom::Profile::Grep; end
|
12
|
-
else
|
13
|
-
# Shouldn't happen
|
14
|
-
end
|
15
|
-
|
16
|
-
class Zoom::Profile::Passwords
|
3
|
+
clas = Zoom::ProfileManager.default_profile.capitalize
|
4
|
+
superclass = Zoom::Profile.profile_by_name("Zoom::Profile::#{clas}")
|
5
|
+
class Zoom::Profile::Passwords < superclass
|
17
6
|
def initialize(n, o = nil, f = "", b = "", a = "")
|
18
|
-
|
7
|
+
# I don't care about test code
|
19
8
|
after = "| \\grep -v \"^[^:]*test[^:]*:[0-9]+:\""
|
9
|
+
flags = ""
|
20
10
|
|
11
|
+
op = Zoom::ProfileManager.default_profile
|
21
12
|
case op
|
22
13
|
when /^ack(-grep)?$/
|
23
|
-
|
14
|
+
flags = "--smart-case"
|
24
15
|
when "ag"
|
25
|
-
|
16
|
+
flags = "-Su"
|
26
17
|
when "pt"
|
27
|
-
|
18
|
+
flags = "-SU --hidden"
|
28
19
|
when "grep"
|
29
|
-
|
30
|
-
else
|
31
|
-
# Shouldn't happen
|
20
|
+
flags = "-ai"
|
32
21
|
end
|
33
22
|
|
23
|
+
super(n, op, flags, "", after)
|
34
24
|
@pattern = "(key|pass(word|wd)?)[^:=,>]? *[:=,>]"
|
35
25
|
@taggable = true
|
36
26
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require "zoom/profile_manager"
|
2
|
+
|
3
|
+
clas = Zoom::ProfileManager.default_profile.capitalize
|
4
|
+
superclass = Zoom::Profile.profile_by_name("Zoom::Profile::#{clas}")
|
5
|
+
class Zoom::Profile::UnsafeC < superclass
|
6
|
+
def initialize(n, o = nil, f = "", b = "", a = "")
|
7
|
+
# I don't care about test code
|
8
|
+
after = "| \\grep -v \"^[^:]*test[^:]*:[0-9]+:\""
|
9
|
+
flags = ""
|
10
|
+
|
11
|
+
op = Zoom::ProfileManager.default_profile
|
12
|
+
case op
|
13
|
+
when /^ack(-grep)?$/
|
14
|
+
flags = "--smart-case --cc --cpp"
|
15
|
+
when "ag"
|
16
|
+
flags = "-S -G \"\\.(c|h)(pp)?$\""
|
17
|
+
when "pt"
|
18
|
+
flags = "-S -G \"\\.(c|h)(pp)?$\""
|
19
|
+
when "grep"
|
20
|
+
flags = "-i --include=\"*.[ch]\" --include=\"*.[ch]pp\""
|
21
|
+
end
|
22
|
+
|
23
|
+
super(n, op, flags, "", after)
|
24
|
+
@pattern = [
|
25
|
+
"(",
|
26
|
+
[
|
27
|
+
"_splitpath",
|
28
|
+
"ato[fil]",
|
29
|
+
"gets",
|
30
|
+
"makepath",
|
31
|
+
"(sn?)?scanf",
|
32
|
+
"str(cat|cpy|len)",
|
33
|
+
"v?sprintf"
|
34
|
+
].join("|"),
|
35
|
+
")",
|
36
|
+
"\\("
|
37
|
+
].join
|
38
|
+
@taggable = true
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "zoom/profile_manager"
|
2
|
+
|
3
|
+
clas = Zoom::ProfileManager.default_profile.capitalize
|
4
|
+
superclass = Zoom::Profile.profile_by_name("Zoom::Profile::#{clas}")
|
5
|
+
class Zoom::Profile::UnsafeJava < superclass
|
6
|
+
def initialize(n, o = nil, f = "", b = "", a = "")
|
7
|
+
# I don't care about test code
|
8
|
+
after = "| \\grep -v \"^[^:]*test[^:]*:[0-9]+:\""
|
9
|
+
flags = ""
|
10
|
+
|
11
|
+
op = Zoom::ProfileManager.default_profile
|
12
|
+
case op
|
13
|
+
when /^ack(-grep)?$/
|
14
|
+
flags = "--smart-case --java"
|
15
|
+
when "ag"
|
16
|
+
flags = "-S -G \"\\.(java|properties)$\""
|
17
|
+
when "pt"
|
18
|
+
flags = "-S -G \"\\.(java|properties)$\""
|
19
|
+
when "grep"
|
20
|
+
flags = [
|
21
|
+
"-i",
|
22
|
+
"--include=\"*.java\"",
|
23
|
+
"--include=\"*.properties\""
|
24
|
+
].join(" ")
|
25
|
+
end
|
26
|
+
|
27
|
+
super(n, op, flags, "", after)
|
28
|
+
@pattern = "(sun\\.misc\\.)?Unsafe|readObject\\(\\)"
|
29
|
+
@taggable = true
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "zoom/profile_manager"
|
2
|
+
|
3
|
+
clas = Zoom::ProfileManager.default_profile.capitalize
|
4
|
+
superclass = Zoom::Profile.profile_by_name("Zoom::Profile::#{clas}")
|
5
|
+
class Zoom::Profile::UnsafeJs < superclass
|
6
|
+
def initialize(n, o = nil, f = "", b = "", a = "")
|
7
|
+
# I don't care about test code
|
8
|
+
after = "| \\grep -v \"^[^:]*test[^:]*:[0-9]+:\""
|
9
|
+
flags = ""
|
10
|
+
|
11
|
+
op = Zoom::ProfileManager.default_profile
|
12
|
+
case op
|
13
|
+
when /^ack(-grep)?$/
|
14
|
+
flags = "--smart-case --js"
|
15
|
+
when "ag"
|
16
|
+
flags = "-S -G \"\\.js$\""
|
17
|
+
when "pt"
|
18
|
+
flags = "-S -G \"\\.js$\""
|
19
|
+
when "grep"
|
20
|
+
flags = "-i --include=\"*.js\""
|
21
|
+
end
|
22
|
+
|
23
|
+
super(n, op, flags, "", after)
|
24
|
+
@pattern = "\\.((eval|html)\\(|innerHTML)"
|
25
|
+
@taggable = true
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "zoom/profile_manager"
|
2
|
+
|
3
|
+
clas = Zoom::ProfileManager.default_profile.capitalize
|
4
|
+
superclass = Zoom::Profile.profile_by_name("Zoom::Profile::#{clas}")
|
5
|
+
class Zoom::Profile::UnsafePhp < superclass
|
6
|
+
def initialize(n, o = nil, f = "", b = "", a = "")
|
7
|
+
# I don't care about test code
|
8
|
+
after = "| \\grep -v \"^[^:]*test[^:]*:[0-9]+:\""
|
9
|
+
flags = ""
|
10
|
+
|
11
|
+
op = Zoom::ProfileManager.default_profile
|
12
|
+
case op
|
13
|
+
when /^ack(-grep)?$/
|
14
|
+
flags = "--smart-case --php"
|
15
|
+
when "ag"
|
16
|
+
flags = "-S -G \"\\.ph(p[345t]?|tml)$\""
|
17
|
+
when "pt"
|
18
|
+
flags = "-S -G \"\\.ph(p[345t]?|tml)$\""
|
19
|
+
when "grep"
|
20
|
+
flags = [
|
21
|
+
"-i",
|
22
|
+
"--include=\"*.php\"",
|
23
|
+
"--include=\"*.php[345t]\"",
|
24
|
+
"--include=\"*.phtml\""
|
25
|
+
].join(" ")
|
26
|
+
end
|
27
|
+
|
28
|
+
super(n, op, flags, "", after)
|
29
|
+
# From here: https://www.eukhost.com/blog/webhosting/dangerous-php-functions-must-be-disabled/
|
30
|
+
# OMG is anything safe?!
|
31
|
+
@pattern = [
|
32
|
+
"\\`|",
|
33
|
+
"\\$_GET\\[|",
|
34
|
+
"(",
|
35
|
+
[
|
36
|
+
"apache_(child_terminate|setenv)",
|
37
|
+
"assert",
|
38
|
+
"create_function",
|
39
|
+
"define_syslog_variables",
|
40
|
+
"escapeshell(arg|cmd)",
|
41
|
+
"eval",
|
42
|
+
"fp(ut)?",
|
43
|
+
"ftp_(connect|exec|get|login|(nb_f)?put|raw(list)?)",
|
44
|
+
"highlight_file",
|
45
|
+
"include(_once)?",
|
46
|
+
"ini_(alter|get_all|restore)",
|
47
|
+
"inject_code",
|
48
|
+
"mysql_pconnect",
|
49
|
+
"openlog",
|
50
|
+
"passthru",
|
51
|
+
"pcntl_exec",
|
52
|
+
"php_uname",
|
53
|
+
"phpAds_(remoteInfo|XmlRpc|xmlrpc(De|En)code)",
|
54
|
+
"popen",
|
55
|
+
"posix_(getpwuid|kill|mkfifo|set(pg|s|u)id|_uname)",
|
56
|
+
"preg_replace",
|
57
|
+
"proc_(close|get_status|nice|open|terminate)",
|
58
|
+
"require(_once)?",
|
59
|
+
"(shell_)?exec",
|
60
|
+
"sys(log|tem)",
|
61
|
+
"xmlrpc_entity_decode"
|
62
|
+
].join("|"),
|
63
|
+
")\\("
|
64
|
+
].join
|
65
|
+
@taggable = true
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "zoom/profile_manager"
|
2
|
+
|
3
|
+
clas = Zoom::ProfileManager.default_profile.capitalize
|
4
|
+
superclass = Zoom::Profile.profile_by_name("Zoom::Profile::#{clas}")
|
5
|
+
class Zoom::Profile::UnsafePython < superclass
|
6
|
+
def initialize(n, o = nil, f = "", b = "", a = "")
|
7
|
+
# I don't care about test code
|
8
|
+
after = "| \\grep -v \"^[^:]*test[^:]*:[0-9]+:\""
|
9
|
+
flags = ""
|
10
|
+
|
11
|
+
op = Zoom::ProfileManager.default_profile
|
12
|
+
case op
|
13
|
+
when /^ack(-grep)?$/
|
14
|
+
flags = "--smart-case --python"
|
15
|
+
when "ag"
|
16
|
+
flags = "-S -G \"\\.py$\""
|
17
|
+
when "pt"
|
18
|
+
flags = "-S -G \"\\.py$\""
|
19
|
+
when "grep"
|
20
|
+
flags = "-i --include=\"*.py\""
|
21
|
+
end
|
22
|
+
|
23
|
+
super(n, op, flags, "", after)
|
24
|
+
@pattern = [
|
25
|
+
"(",
|
26
|
+
[
|
27
|
+
"c?[Pp]ickle\\.loads?",
|
28
|
+
"eval",
|
29
|
+
"exec",
|
30
|
+
"os\\.(popen|system)",
|
31
|
+
"subprocess\\.call",
|
32
|
+
"yaml\\.load"
|
33
|
+
].join("|"),
|
34
|
+
")\\("
|
35
|
+
].join
|
36
|
+
@taggable = true
|
37
|
+
end
|
38
|
+
end
|
data/lib/zoom/profile_manager.rb
CHANGED
@@ -40,10 +40,17 @@ class Zoom::ProfileManager
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
profiles["passwords"] = Zoom::Profile::Passwords.new(
|
44
|
-
"passwords"
|
45
|
-
)
|
46
|
-
|
47
43
|
return profiles
|
48
44
|
end
|
45
|
+
|
46
|
+
def self.security_profiles
|
47
|
+
return [
|
48
|
+
Zoom::Profile::Passwords.new("passwords"),
|
49
|
+
Zoom::Profile::UnsafeC.new("unsafe_c"),
|
50
|
+
Zoom::Profile::UnsafeJava.new("unsafe_java"),
|
51
|
+
Zoom::Profile::UnsafeJs.new("unsafe_js"),
|
52
|
+
Zoom::Profile::UnsafePhp.new("unsafe_php"),
|
53
|
+
Zoom::Profile::UnsafePython.new("unsafe_python")
|
54
|
+
]
|
55
|
+
end
|
49
56
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-zoom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.3.
|
4
|
+
version: 4.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miles Whittaker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -174,6 +174,11 @@ files:
|
|
174
174
|
- lib/zoom/profile/grep.rb
|
175
175
|
- lib/zoom/profile/passwords.rb
|
176
176
|
- lib/zoom/profile/pt.rb
|
177
|
+
- lib/zoom/profile/unsafe_c.rb
|
178
|
+
- lib/zoom/profile/unsafe_java.rb
|
179
|
+
- lib/zoom/profile/unsafe_js.rb
|
180
|
+
- lib/zoom/profile/unsafe_php.rb
|
181
|
+
- lib/zoom/profile/unsafe_python.rb
|
177
182
|
- lib/zoom/profile_manager.rb
|
178
183
|
- lib/zoom/wish/add_wish.rb
|
179
184
|
- lib/zoom/wish/color_wish.rb
|