mu 5.7.15 → 5.7.16

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- msl_file = File.open(@options.scenario,'w')
66
- created_musl = @har.generate msl_file
67
- msl_file.write created_musl
68
- msl_file.close
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
@@ -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.15'
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.15
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-19 00:00:00.000000000 -07:00
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: &21338260 !ruby/object:Gem::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: *21338260
25
+ version_requirements: *12873620
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rest-client
28
- requirement: &21337780 !ruby/object:Gem::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: *21337780
36
+ version_requirements: *12873160
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: mime-types
39
- requirement: &21337320 !ruby/object:Gem::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: *21337320
47
+ version_requirements: *12872700
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: json
50
- requirement: &21336920 !ruby/object:Gem::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: *21336920
58
+ version_requirements: *12872320
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: hexy
61
- requirement: &21336340 !ruby/object:Gem::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: *21336340
69
+ version_requirements: *12871780
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: uuid
72
- requirement: &21335800 !ruby/object:Gem::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: *21335800
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"