mu 5.7.15 → 5.7.16
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/lib/mu/command/cmd_musl.rb +4 -4
- data/lib/mu/har.rb +15 -3
- data/version.rb +1 -1
- metadata +14 -14
data/lib/mu/command/cmd_musl.rb
CHANGED
@@ -62,10 +62,10 @@ class Mu
|
|
62
62
|
# Get har object and hosts
|
63
63
|
har_file = @options.har_files[0]
|
64
64
|
@har = Har.new har_file, @options, @ignores
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
65
|
+
File.open(@options.scenario,'w') do |file|
|
66
|
+
created_musl = @har.generate file
|
67
|
+
file.write created_musl
|
68
|
+
end
|
69
69
|
puts "You have successfully generated a scenario: #{@options.scenario}"
|
70
70
|
else
|
71
71
|
# Handle failure logic here
|
data/lib/mu/har.rb
CHANGED
@@ -109,11 +109,15 @@ class Har
|
|
109
109
|
m['url']['pathname'] = m['url_object'].path || '/'
|
110
110
|
m["url"]["search"] = m["url_object"].query || ''
|
111
111
|
m["url"]["hash"] = m["url_object"].fragment || ''
|
112
|
+
require 'pp'
|
113
|
+
#pp entry if entry['request']['headers'].length < 1
|
114
|
+
#raise "die" if entry['request']['headers'].length < 1
|
112
115
|
|
113
116
|
# Create the host entry hash with underscores instead of dots for the host value
|
114
117
|
entry['request']['headers'].each do |header|
|
115
118
|
if (!host && header['name'].downcase === 'host')
|
116
119
|
host = header['value']
|
120
|
+
|
117
121
|
# Set the hosts_seen value to host_count and increment the host_count unless we have already seen the host
|
118
122
|
hosts_seen[host] += host_count && host_count += 1 unless hosts_seen.has_key?(host)
|
119
123
|
|
@@ -124,10 +128,10 @@ class Har
|
|
124
128
|
if entry['musl'][host].match /^[0-9]/
|
125
129
|
entry['musl'][host] = 'host_' + entry['musl'][host]
|
126
130
|
end
|
127
|
-
|
128
131
|
end
|
129
132
|
end
|
130
|
-
|
133
|
+
# request-headers are empty
|
134
|
+
next if host.nil? && entry['musl'][host].nil?
|
131
135
|
@hosts[host] = entry['musl'][host]
|
132
136
|
entry['musl']['host'] = entry['musl'][host]
|
133
137
|
|
@@ -263,7 +267,7 @@ class Har
|
|
263
267
|
m = entry['musl']
|
264
268
|
req = entry['request']
|
265
269
|
res = entry['response']
|
266
|
-
next if m.nil?
|
270
|
+
next if m.nil? || m['host'].nil?
|
267
271
|
|
268
272
|
xopts = { 'src' => '&host_0', 'dst' => '&' + "#{m['host']}" }
|
269
273
|
xklass = m['url_object'].scheme === 'http' ? 'tcp' : 'ssl'
|
@@ -330,9 +334,16 @@ class Har
|
|
330
334
|
|
331
335
|
if (res['cookies'] && res['cookies'].length > 0)
|
332
336
|
cr.variables do |vs|
|
337
|
+
seen = {}
|
333
338
|
res['cookies'].each do |cookie|
|
339
|
+
# Check to make sure we are not repeating a variable name
|
340
|
+
repeated = '@' + cookie['name'].gsub(/[^a-zA-Z0-9_]/, '_') + ' = ' + '/' + cookie['name'] + '=([^;]*)' + '/:1'
|
341
|
+
next if seen.has_key?(repeated)
|
342
|
+
seen[repeated] = cookie
|
343
|
+
# Build the variable
|
334
344
|
vs.create('@' + cookie['name'].gsub(/[^a-zA-Z0-9_]/, '_') + ' = ' + '/' + cookie['name'] + '=([^;]*)' + '/:1')
|
335
345
|
end
|
346
|
+
|
336
347
|
end
|
337
348
|
end
|
338
349
|
end
|
@@ -417,6 +428,7 @@ class Har
|
|
417
428
|
end
|
418
429
|
cs_send.literal_no_format("\"");
|
419
430
|
else
|
431
|
+
payload.gsub!(/#\{|##\{/, "\\x23{")
|
420
432
|
cs_send.literal_no_format("\"" + self.escape(payload) + "\"")
|
421
433
|
end
|
422
434
|
|
data/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION='5.7.
|
1
|
+
VERSION='5.7.16'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.7.
|
4
|
+
version: 5.7.16
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-04-
|
12
|
+
date: 2011-04-21 00:00:00.000000000 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
17
|
-
requirement: &
|
17
|
+
requirement: &12873620 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 1.4.4
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *12873620
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rest-client
|
28
|
-
requirement: &
|
28
|
+
requirement: &12873160 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.6.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *12873160
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: mime-types
|
39
|
-
requirement: &
|
39
|
+
requirement: &12872700 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '1.16'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *12872700
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: json
|
50
|
-
requirement: &
|
50
|
+
requirement: &12872320 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *12872320
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: hexy
|
61
|
-
requirement: &
|
61
|
+
requirement: &12871780 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 0.1.1
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *12871780
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: uuid
|
72
|
-
requirement: &
|
72
|
+
requirement: &12871280 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,7 +77,7 @@ dependencies:
|
|
77
77
|
version: 2.0.2
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *12871280
|
81
81
|
description: ! "The Mu gem allows users to include mu libraries within scripts\n that
|
82
82
|
interact with mu appliance software. The gem also supplies command line interfaces\n
|
83
83
|
\ to many of these same libraries"
|