rack-ssl-enforcer 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,8 +1,9 @@
1
1
  = Rack::SslEnforcer
2
2
 
3
- Rack::SslEnforcer is a simple Rack middleware to enforce ssl connections. As of Version 0.2.0, Rack::SslEnforcer marks
3
+ Rack::SslEnforcer is a simple Rack middleware to enforce SSL connections. As of Version 0.2.0, Rack::SslEnforcer marks
4
4
  Cookies as secure by default (HSTS must be set manually).
5
- Tested on Ruby 1.8.7 & 1.9.2
5
+
6
+ Tested on Ruby 1.8.7, 1.9.2, REE, JRuby and Rubinius.
6
7
 
7
8
  == Installation
8
9
 
@@ -19,7 +20,7 @@ Or, if you are using Bundler, just add this to your Gemfile:
19
20
  gem 'rack-ssl-enforcer'
20
21
 
21
22
  To use Rack::SslEnforcer in your Rails application, add the following line to your application
22
- config file (config/application.rb for Rails3, config/environment.rb for Rails2):
23
+ config file (<tt>config/application.rb</tt> for Rails 3, <tt>config/environment.rb</tt> for Rails 2):
23
24
 
24
25
  config.middleware.use Rack::SslEnforcer
25
26
 
@@ -38,7 +39,7 @@ You can also define specific regex patterns or paths or hosts to redirect.
38
39
  config.middleware.use Rack::SslEnforcer, :only => "/login"
39
40
  config.middleware.use Rack::SslEnforcer, :only => ["/login", /\.xml$/]
40
41
  config.middleware.use Rack::SslEnforcer, :only_hosts => 'api.example.com'
41
- config.middleware.use Rack::SslEnforcer, :only_hosts => ["[www|api]\.example\.org", 'example.com']
42
+ config.middleware.use Rack::SslEnforcer, :only_hosts => [/[www|api]\.example\.org$/, 'example.com']
42
43
  config.middleware.use Rack::SslEnforcer, :except_hosts => 'help.example.com'
43
44
  config.middleware.use Rack::SslEnforcer, :except_hosts => /[help|blog]\.example\.com$/
44
45
 
@@ -49,9 +50,9 @@ Use the :strict option to force http for all requests not matching your :only sp
49
50
  config.middleware.use Rack::SslEnforcer, :only => ["/login", /\.xml$/], :strict => true
50
51
  config.middleware.use Rack::SslEnforcer, :only_hosts => 'api.example.com', :strict => true
51
52
 
52
- Or in the case where you have matching urls with different methods (rails restful routes: get#users post#users || get#user/:id put#user/:id) you may need to post and put to secure but redirect to http on get.
53
+ Or in the case where you have matching urls with different methods (Rails RESTful routes: get#users post#users || get#user/:id put#user/:id) you may need to post and put to secure but redirect to http on get.
53
54
 
54
- config.middleware.use Rack::SslEnforcer, :only => [/^\/users\/(.+)\/edit/], :mixed => true
55
+ config.middleware.use Rack::SslEnforcer, :only => [%r{^/users/}], :mixed => true
55
56
 
56
57
  The above will allow you to post/put from the secure/non-secure urls keeping the original schema.
57
58
 
@@ -60,6 +61,18 @@ To set HSTS expiry and subdomain inclusion (defaults: one year, true). Strict op
60
61
  config.middleware.use Rack::SslEnforcer, :hsts => { :expires => 500, :subdomains => false }
61
62
  config.middleware.use Rack::SslEnforcer, :hsts => true # equivalent to { :expires => 31536000, :subdomains => true }
62
63
 
64
+ Finally you might want to share a cookie based session between http and https.
65
+ This is not possible by default with Rack::SslEnforcer for security reasons.
66
+ See: [http://en.wikipedia.org/wiki/HTTP_cookie#Cookie_theft_and_session_hijacking]
67
+
68
+ Nevertheless, you can set the option :force_secure_cookies to false in order to be able to share a cookie based session between http and https:
69
+
70
+ config.middleware.use Rack::SslEnforcer, :only => "/login", :force_secure_cookies => false
71
+
72
+ But be aware that if you do so, you have to make sure that the content of you cookie is encoded.
73
+ This can be done using a coder with Rack::Session::Cookie.
74
+ See: [https://github.com/rack/rack/blob/master/lib/rack/session/cookie.rb#L28-42]
75
+
63
76
 
64
77
  == TODO
65
78
 
@@ -1,8 +1,23 @@
1
1
  module Rack
2
2
  class SslEnforcer
3
3
 
4
- def initialize(app, options = {})
5
- @app, @options = app, options
4
+ # Warning: If you set the option force_secure_cookies to false, make sure that your cookies
5
+ # are encoded and that you understand the consequences (see documentation)
6
+ def initialize(app, options={})
7
+ default_options = {
8
+ :redirect_to => nil,
9
+ :only => nil,
10
+ :only_hosts => nil,
11
+ :except => nil,
12
+ :except_hosts => nil,
13
+ :strict => false,
14
+ :mixed => false,
15
+ :hsts => nil,
16
+ :http_port => nil,
17
+ :https_port => nil,
18
+ :force_secure_cookies => true
19
+ }
20
+ @app, @options = app, default_options.merge(options)
6
21
  end
7
22
 
8
23
  def call(env)
@@ -14,12 +29,12 @@ module Rack
14
29
  end
15
30
 
16
31
  if scheme
17
- location = replace_scheme(@req, scheme).url
32
+ location = replace_scheme(@req, scheme)
18
33
  body = "<html><body>You are being <a href=\"#{location}\">redirected</a>.</body></html>"
19
34
  [301, { 'Content-Type' => 'text/html', 'Location' => location }, [body]]
20
35
  elsif ssl_request?(env)
21
36
  status, headers, body = @app.call(env)
22
- flag_cookies_as_secure!(headers)
37
+ flag_cookies_as_secure!(headers) if @options[:force_secure_cookies]
23
38
  set_hsts_headers!(headers) if @options[:hsts] && !@options[:strict]
24
39
  [status, headers, body]
25
40
  else
@@ -75,7 +90,7 @@ module Rack
75
90
  end
76
91
 
77
92
  def enforce_ssl_for?(keys, req)
78
- if keys.any? {|option| @options.key?(option)}
93
+ if keys.any? { |option| @options[option] }
79
94
  keys.any? do |key|
80
95
  rules = [@options[key]].flatten.compact
81
96
  unless rules.empty?
@@ -92,9 +107,9 @@ module Rack
92
107
  def enforce_ssl?(req)
93
108
  path_keys = [:only, :except]
94
109
  hosts_keys = [:only_hosts, :except_hosts]
95
- if hosts_keys.any? {|option| @options.key?(option)}
110
+ if hosts_keys.any? { |option| @options[option] }
96
111
  if enforce_ssl_for?(hosts_keys, req)
97
- if path_keys.any? {|option| @options.key?(option)}
112
+ if path_keys.any? { |option| @options[option] }
98
113
  enforce_ssl_for?(path_keys, req)
99
114
  else
100
115
  true
@@ -102,7 +117,7 @@ module Rack
102
117
  else
103
118
  false
104
119
  end
105
- elsif path_keys.any? {|option| @options.key?(option)}
120
+ elsif path_keys.any? { |option| @options[option] }
106
121
  enforce_ssl_for?(path_keys, req)
107
122
  else
108
123
  true
@@ -116,35 +131,38 @@ module Rack
116
131
  else
117
132
  uri = nil
118
133
  end
119
- Rack::Request.new(req.env.merge(
120
- 'rack.url_scheme' => scheme,
121
- 'HTTP_X_FORWARDED_PROTO' => scheme,
122
- 'HTTP_X_FORWARDED_PORT' => port_for(scheme).to_s,
123
- 'SERVER_PORT' => port_for(scheme).to_s
124
- ).merge(uri ? {'HTTP_HOST' => uri} : {}))
134
+ host = uri || req.host
135
+ port = port_for(scheme).to_s
136
+
137
+ URI.parse("#{scheme}://#{host}:#{port}#{req.fullpath}").to_s
125
138
  end
126
139
 
127
140
  def port_for(scheme)
128
- scheme == 'https' ? 443 : 80
141
+ if scheme == 'https'
142
+ @options[:https_port] || 443
143
+ else
144
+ @options[:http_port] || 80
145
+ end
129
146
  end
130
147
 
131
- # see http://en.wikipedia.org/wiki/HTTP_cookie#Cookie_hijacking
148
+ # see http://en.wikipedia.org/wiki/HTTP_cookie#Cookie_theft_and_session_hijacking
132
149
  def flag_cookies_as_secure!(headers)
133
150
  if cookies = headers['Set-Cookie']
134
- headers['Set-Cookie'] = cookies.split("\n").map { |cookie|
135
- if cookie !~ / secure;/
136
- "#{cookie}; secure"
137
- else
138
- cookie
139
- end
140
- }.join("\n")
151
+ # Support Rails 2.3 / Rack 1.1 arrays as headers
152
+ unless cookies.is_a?(Array)
153
+ cookies = cookies.split("\n")
154
+ end
155
+
156
+ headers['Set-Cookie'] = cookies.map do |cookie|
157
+ cookie !~ / secure;/ ? "#{cookie}; secure" : cookie
158
+ end.join("\n")
141
159
  end
142
160
  end
143
161
 
144
162
  # see http://en.wikipedia.org/wiki/Strict_Transport_Security
145
163
  def set_hsts_headers!(headers)
146
164
  opts = { :expires => 31536000, :subdomains => true }
147
- opts.merge!(@options[:hsts]) if @options[:hsts].is_a? Hash
165
+ opts.merge!(@options[:hsts])
148
166
  value = "max-age=#{opts[:expires]}"
149
167
  value += "; includeSubDomains" if opts[:subdomains]
150
168
  headers.merge!({ 'Strict-Transport-Security' => value })
@@ -0,0 +1,3679 @@
1
+ !RBIX
2
+ 10937318184790222022
3
+ x
4
+ M
5
+ 1
6
+ n
7
+ n
8
+ x
9
+ 10
10
+ __script__
11
+ i
12
+ 28
13
+ 99
14
+ 7
15
+ 0
16
+ 65
17
+ 49
18
+ 1
19
+ 2
20
+ 13
21
+ 99
22
+ 12
23
+ 7
24
+ 2
25
+ 12
26
+ 7
27
+ 3
28
+ 12
29
+ 65
30
+ 12
31
+ 49
32
+ 4
33
+ 4
34
+ 15
35
+ 49
36
+ 2
37
+ 0
38
+ 15
39
+ 2
40
+ 11
41
+ I
42
+ 6
43
+ I
44
+ 0
45
+ I
46
+ 0
47
+ I
48
+ 0
49
+ n
50
+ p
51
+ 5
52
+ x
53
+ 4
54
+ Rack
55
+ x
56
+ 11
57
+ open_module
58
+ x
59
+ 15
60
+ __module_init__
61
+ M
62
+ 1
63
+ n
64
+ n
65
+ x
66
+ 4
67
+ Rack
68
+ i
69
+ 29
70
+ 5
71
+ 66
72
+ 99
73
+ 7
74
+ 0
75
+ 1
76
+ 65
77
+ 49
78
+ 1
79
+ 3
80
+ 13
81
+ 99
82
+ 12
83
+ 7
84
+ 2
85
+ 12
86
+ 7
87
+ 3
88
+ 12
89
+ 65
90
+ 12
91
+ 49
92
+ 4
93
+ 4
94
+ 15
95
+ 49
96
+ 2
97
+ 0
98
+ 11
99
+ I
100
+ 6
101
+ I
102
+ 0
103
+ I
104
+ 0
105
+ I
106
+ 0
107
+ n
108
+ p
109
+ 5
110
+ x
111
+ 11
112
+ SslEnforcer
113
+ x
114
+ 10
115
+ open_class
116
+ x
117
+ 14
118
+ __class_init__
119
+ M
120
+ 1
121
+ n
122
+ n
123
+ x
124
+ 11
125
+ SslEnforcer
126
+ i
127
+ 174
128
+ 5
129
+ 66
130
+ 99
131
+ 7
132
+ 0
133
+ 7
134
+ 1
135
+ 65
136
+ 67
137
+ 49
138
+ 2
139
+ 0
140
+ 49
141
+ 3
142
+ 4
143
+ 15
144
+ 99
145
+ 7
146
+ 4
147
+ 7
148
+ 5
149
+ 65
150
+ 67
151
+ 49
152
+ 2
153
+ 0
154
+ 49
155
+ 3
156
+ 4
157
+ 15
158
+ 5
159
+ 48
160
+ 6
161
+ 15
162
+ 99
163
+ 7
164
+ 7
165
+ 7
166
+ 8
167
+ 65
168
+ 67
169
+ 49
170
+ 2
171
+ 0
172
+ 49
173
+ 3
174
+ 4
175
+ 15
176
+ 99
177
+ 7
178
+ 9
179
+ 7
180
+ 10
181
+ 65
182
+ 67
183
+ 49
184
+ 2
185
+ 0
186
+ 49
187
+ 3
188
+ 4
189
+ 15
190
+ 99
191
+ 7
192
+ 11
193
+ 7
194
+ 12
195
+ 65
196
+ 67
197
+ 49
198
+ 2
199
+ 0
200
+ 49
201
+ 3
202
+ 4
203
+ 15
204
+ 99
205
+ 7
206
+ 13
207
+ 7
208
+ 14
209
+ 65
210
+ 67
211
+ 49
212
+ 2
213
+ 0
214
+ 49
215
+ 3
216
+ 4
217
+ 15
218
+ 99
219
+ 7
220
+ 15
221
+ 7
222
+ 16
223
+ 65
224
+ 67
225
+ 49
226
+ 2
227
+ 0
228
+ 49
229
+ 3
230
+ 4
231
+ 15
232
+ 99
233
+ 7
234
+ 17
235
+ 7
236
+ 18
237
+ 65
238
+ 67
239
+ 49
240
+ 2
241
+ 0
242
+ 49
243
+ 3
244
+ 4
245
+ 15
246
+ 99
247
+ 7
248
+ 19
249
+ 7
250
+ 20
251
+ 65
252
+ 67
253
+ 49
254
+ 2
255
+ 0
256
+ 49
257
+ 3
258
+ 4
259
+ 15
260
+ 99
261
+ 7
262
+ 21
263
+ 7
264
+ 22
265
+ 65
266
+ 67
267
+ 49
268
+ 2
269
+ 0
270
+ 49
271
+ 3
272
+ 4
273
+ 15
274
+ 99
275
+ 7
276
+ 23
277
+ 7
278
+ 24
279
+ 65
280
+ 67
281
+ 49
282
+ 2
283
+ 0
284
+ 49
285
+ 3
286
+ 4
287
+ 15
288
+ 99
289
+ 7
290
+ 25
291
+ 7
292
+ 26
293
+ 65
294
+ 67
295
+ 49
296
+ 2
297
+ 0
298
+ 49
299
+ 3
300
+ 4
301
+ 11
302
+ I
303
+ 5
304
+ I
305
+ 0
306
+ I
307
+ 0
308
+ I
309
+ 0
310
+ n
311
+ p
312
+ 27
313
+ x
314
+ 10
315
+ initialize
316
+ M
317
+ 1
318
+ n
319
+ n
320
+ x
321
+ 10
322
+ initialize
323
+ i
324
+ 146
325
+ 23
326
+ 1
327
+ 10
328
+ 14
329
+ 44
330
+ 43
331
+ 0
332
+ 78
333
+ 49
334
+ 1
335
+ 1
336
+ 19
337
+ 1
338
+ 15
339
+ 44
340
+ 43
341
+ 0
342
+ 4
343
+ 9
344
+ 49
345
+ 1
346
+ 1
347
+ 13
348
+ 7
349
+ 2
350
+ 1
351
+ 49
352
+ 3
353
+ 2
354
+ 15
355
+ 13
356
+ 7
357
+ 4
358
+ 1
359
+ 49
360
+ 3
361
+ 2
362
+ 15
363
+ 13
364
+ 7
365
+ 5
366
+ 1
367
+ 49
368
+ 3
369
+ 2
370
+ 15
371
+ 13
372
+ 7
373
+ 6
374
+ 1
375
+ 49
376
+ 3
377
+ 2
378
+ 15
379
+ 13
380
+ 7
381
+ 7
382
+ 1
383
+ 49
384
+ 3
385
+ 2
386
+ 15
387
+ 13
388
+ 7
389
+ 8
390
+ 3
391
+ 49
392
+ 3
393
+ 2
394
+ 15
395
+ 13
396
+ 7
397
+ 9
398
+ 3
399
+ 49
400
+ 3
401
+ 2
402
+ 15
403
+ 13
404
+ 7
405
+ 10
406
+ 1
407
+ 49
408
+ 3
409
+ 2
410
+ 15
411
+ 13
412
+ 7
413
+ 11
414
+ 2
415
+ 49
416
+ 3
417
+ 2
418
+ 15
419
+ 19
420
+ 2
421
+ 15
422
+ 20
423
+ 0
424
+ 20
425
+ 2
426
+ 20
427
+ 1
428
+ 49
429
+ 12
430
+ 1
431
+ 17
432
+ 2
433
+ 38
434
+ 13
435
+ 15
436
+ 38
437
+ 14
438
+ 15
439
+ 2
440
+ 15
441
+ 20
442
+ 1
443
+ 7
444
+ 11
445
+ 49
446
+ 15
447
+ 1
448
+ 3
449
+ 83
450
+ 16
451
+ 9
452
+ 144
453
+ 99
454
+ 43
455
+ 17
456
+ 7
457
+ 18
458
+ 49
459
+ 15
460
+ 1
461
+ 7
462
+ 19
463
+ 64
464
+ 49
465
+ 20
466
+ 1
467
+ 8
468
+ 145
469
+ 1
470
+ 11
471
+ I
472
+ 7
473
+ I
474
+ 3
475
+ I
476
+ 1
477
+ I
478
+ 2
479
+ n
480
+ p
481
+ 21
482
+ x
483
+ 4
484
+ Hash
485
+ x
486
+ 16
487
+ new_from_literal
488
+ x
489
+ 11
490
+ redirect_to
491
+ x
492
+ 3
493
+ []=
494
+ x
495
+ 4
496
+ only
497
+ x
498
+ 10
499
+ only_hosts
500
+ x
501
+ 6
502
+ except
503
+ x
504
+ 12
505
+ except_hosts
506
+ x
507
+ 6
508
+ strict
509
+ x
510
+ 5
511
+ mixed
512
+ x
513
+ 4
514
+ hsts
515
+ x
516
+ 20
517
+ force_secure_cookies
518
+ x
519
+ 5
520
+ merge
521
+ x
522
+ 4
523
+ @app
524
+ x
525
+ 8
526
+ @options
527
+ x
528
+ 2
529
+ []
530
+ x
531
+ 2
532
+ ==
533
+ x
534
+ 7
535
+ Globals
536
+ x
537
+ 7
538
+ $stderr
539
+ s
540
+ 157
541
+ WARN -- : The option :force_secure_cookies is set to false so make sure your cookies are encoded and that you understand the consequences (see documentation)
542
+ x
543
+ 4
544
+ puts
545
+ p
546
+ 29
547
+ I
548
+ -1
549
+ I
550
+ 4
551
+ I
552
+ e
553
+ I
554
+ f
555
+ I
556
+ 17
557
+ I
558
+ 6
559
+ I
560
+ 1f
561
+ I
562
+ 7
563
+ I
564
+ 27
565
+ I
566
+ 8
567
+ I
568
+ 2f
569
+ I
570
+ 9
571
+ I
572
+ 37
573
+ I
574
+ a
575
+ I
576
+ 3f
577
+ I
578
+ b
579
+ I
580
+ 47
581
+ I
582
+ c
583
+ I
584
+ 4f
585
+ I
586
+ d
587
+ I
588
+ 57
589
+ I
590
+ e
591
+ I
592
+ 5e
593
+ I
594
+ 5
595
+ I
596
+ 61
597
+ I
598
+ 10
599
+ I
600
+ 74
601
+ I
602
+ 11
603
+ I
604
+ 92
605
+ x
606
+ 85
607
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
608
+ p
609
+ 3
610
+ x
611
+ 3
612
+ app
613
+ x
614
+ 7
615
+ options
616
+ x
617
+ 15
618
+ default_options
619
+ x
620
+ 17
621
+ method_visibility
622
+ x
623
+ 15
624
+ add_defn_method
625
+ x
626
+ 4
627
+ call
628
+ M
629
+ 1
630
+ n
631
+ n
632
+ x
633
+ 4
634
+ call
635
+ i
636
+ 296
637
+ 45
638
+ 0
639
+ 1
640
+ 43
641
+ 2
642
+ 13
643
+ 71
644
+ 3
645
+ 47
646
+ 9
647
+ 25
648
+ 47
649
+ 49
650
+ 4
651
+ 0
652
+ 13
653
+ 20
654
+ 0
655
+ 47
656
+ 49
657
+ 5
658
+ 1
659
+ 15
660
+ 8
661
+ 30
662
+ 20
663
+ 0
664
+ 49
665
+ 3
666
+ 1
667
+ 38
668
+ 6
669
+ 15
670
+ 5
671
+ 39
672
+ 6
673
+ 47
674
+ 49
675
+ 7
676
+ 1
677
+ 13
678
+ 9
679
+ 57
680
+ 15
681
+ 5
682
+ 20
683
+ 0
684
+ 47
685
+ 49
686
+ 8
687
+ 1
688
+ 10
689
+ 56
690
+ 2
691
+ 8
692
+ 57
693
+ 3
694
+ 9
695
+ 78
696
+ 5
697
+ 20
698
+ 0
699
+ 47
700
+ 49
701
+ 9
702
+ 1
703
+ 9
704
+ 71
705
+ 1
706
+ 8
707
+ 76
708
+ 7
709
+ 10
710
+ 64
711
+ 19
712
+ 1
713
+ 8
714
+ 117
715
+ 5
716
+ 20
717
+ 0
718
+ 47
719
+ 49
720
+ 9
721
+ 1
722
+ 13
723
+ 9
724
+ 107
725
+ 15
726
+ 39
727
+ 11
728
+ 7
729
+ 12
730
+ 49
731
+ 13
732
+ 1
733
+ 13
734
+ 10
735
+ 107
736
+ 15
737
+ 5
738
+ 20
739
+ 0
740
+ 47
741
+ 49
742
+ 8
743
+ 1
744
+ 9
745
+ 116
746
+ 7
747
+ 14
748
+ 64
749
+ 19
750
+ 1
751
+ 8
752
+ 117
753
+ 1
754
+ 15
755
+ 20
756
+ 1
757
+ 9
758
+ 189
759
+ 5
760
+ 39
761
+ 6
762
+ 20
763
+ 1
764
+ 47
765
+ 49
766
+ 15
767
+ 2
768
+ 49
769
+ 16
770
+ 0
771
+ 19
772
+ 2
773
+ 15
774
+ 7
775
+ 17
776
+ 20
777
+ 2
778
+ 47
779
+ 101
780
+ 18
781
+ 7
782
+ 19
783
+ 63
784
+ 3
785
+ 19
786
+ 3
787
+ 15
788
+ 7
789
+ 20
790
+ 44
791
+ 43
792
+ 21
793
+ 80
794
+ 49
795
+ 22
796
+ 1
797
+ 13
798
+ 7
799
+ 23
800
+ 64
801
+ 7
802
+ 24
803
+ 64
804
+ 49
805
+ 25
806
+ 2
807
+ 15
808
+ 13
809
+ 7
810
+ 26
811
+ 64
812
+ 20
813
+ 2
814
+ 49
815
+ 25
816
+ 2
817
+ 15
818
+ 20
819
+ 3
820
+ 35
821
+ 1
822
+ 35
823
+ 3
824
+ 8
825
+ 295
826
+ 5
827
+ 20
828
+ 0
829
+ 47
830
+ 49
831
+ 9
832
+ 1
833
+ 9
834
+ 288
835
+ 39
836
+ 27
837
+ 20
838
+ 0
839
+ 49
840
+ 28
841
+ 1
842
+ 97
843
+ 37
844
+ 19
845
+ 4
846
+ 15
847
+ 37
848
+ 19
849
+ 5
850
+ 15
851
+ 37
852
+ 19
853
+ 3
854
+ 15
855
+ 15
856
+ 2
857
+ 15
858
+ 39
859
+ 11
860
+ 7
861
+ 29
862
+ 49
863
+ 13
864
+ 1
865
+ 9
866
+ 239
867
+ 5
868
+ 20
869
+ 5
870
+ 47
871
+ 49
872
+ 30
873
+ 1
874
+ 8
875
+ 240
876
+ 1
877
+ 15
878
+ 39
879
+ 11
880
+ 7
881
+ 31
882
+ 49
883
+ 13
884
+ 1
885
+ 13
886
+ 9
887
+ 265
888
+ 15
889
+ 39
890
+ 11
891
+ 7
892
+ 12
893
+ 49
894
+ 13
895
+ 1
896
+ 10
897
+ 264
898
+ 2
899
+ 8
900
+ 265
901
+ 3
902
+ 9
903
+ 276
904
+ 5
905
+ 20
906
+ 5
907
+ 47
908
+ 49
909
+ 32
910
+ 1
911
+ 8
912
+ 277
913
+ 1
914
+ 15
915
+ 20
916
+ 4
917
+ 20
918
+ 5
919
+ 20
920
+ 3
921
+ 35
922
+ 3
923
+ 8
924
+ 295
925
+ 39
926
+ 27
927
+ 20
928
+ 0
929
+ 49
930
+ 28
931
+ 1
932
+ 11
933
+ I
934
+ b
935
+ I
936
+ 6
937
+ I
938
+ 1
939
+ I
940
+ 1
941
+ n
942
+ p
943
+ 33
944
+ x
945
+ 4
946
+ Rack
947
+ n
948
+ x
949
+ 7
950
+ Request
951
+ x
952
+ 3
953
+ new
954
+ x
955
+ 8
956
+ allocate
957
+ x
958
+ 10
959
+ initialize
960
+ x
961
+ 4
962
+ @req
963
+ x
964
+ 12
965
+ enforce_ssl?
966
+ x
967
+ 16
968
+ enforce_non_ssl?
969
+ x
970
+ 12
971
+ ssl_request?
972
+ s
973
+ 5
974
+ https
975
+ x
976
+ 8
977
+ @options
978
+ x
979
+ 6
980
+ strict
981
+ x
982
+ 2
983
+ []
984
+ s
985
+ 4
986
+ http
987
+ x
988
+ 14
989
+ replace_scheme
990
+ x
991
+ 3
992
+ url
993
+ s
994
+ 35
995
+ <html><body>You are being <a href="
996
+ x
997
+ 4
998
+ to_s
999
+ s
1000
+ 31
1001
+ ">redirected</a>.</body></html>
1002
+ I
1003
+ 12d
1004
+ x
1005
+ 4
1006
+ Hash
1007
+ x
1008
+ 16
1009
+ new_from_literal
1010
+ s
1011
+ 12
1012
+ Content-Type
1013
+ s
1014
+ 9
1015
+ text/html
1016
+ x
1017
+ 3
1018
+ []=
1019
+ s
1020
+ 8
1021
+ Location
1022
+ x
1023
+ 4
1024
+ @app
1025
+ x
1026
+ 4
1027
+ call
1028
+ x
1029
+ 20
1030
+ force_secure_cookies
1031
+ x
1032
+ 23
1033
+ flag_cookies_as_secure!
1034
+ x
1035
+ 4
1036
+ hsts
1037
+ x
1038
+ 17
1039
+ set_hsts_headers!
1040
+ p
1041
+ 35
1042
+ I
1043
+ -1
1044
+ I
1045
+ 14
1046
+ I
1047
+ 0
1048
+ I
1049
+ 15
1050
+ I
1051
+ 21
1052
+ I
1053
+ 17
1054
+ I
1055
+ 3b
1056
+ I
1057
+ 18
1058
+ I
1059
+ 4e
1060
+ I
1061
+ 19
1062
+ I
1063
+ 6d
1064
+ I
1065
+ 1a
1066
+ I
1067
+ 74
1068
+ I
1069
+ 19
1070
+ I
1071
+ 76
1072
+ I
1073
+ 1d
1074
+ I
1075
+ 7a
1076
+ I
1077
+ 1e
1078
+ I
1079
+ 89
1080
+ I
1081
+ 1f
1082
+ I
1083
+ 97
1084
+ I
1085
+ 20
1086
+ I
1087
+ bd
1088
+ I
1089
+ 21
1090
+ I
1091
+ c6
1092
+ I
1093
+ 22
1094
+ I
1095
+ dd
1096
+ I
1097
+ 23
1098
+ I
1099
+ f1
1100
+ I
1101
+ 24
1102
+ I
1103
+ 116
1104
+ I
1105
+ 25
1106
+ I
1107
+ 120
1108
+ I
1109
+ 27
1110
+ I
1111
+ 128
1112
+ x
1113
+ 85
1114
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
1115
+ p
1116
+ 6
1117
+ x
1118
+ 3
1119
+ env
1120
+ x
1121
+ 6
1122
+ scheme
1123
+ x
1124
+ 8
1125
+ location
1126
+ x
1127
+ 4
1128
+ body
1129
+ x
1130
+ 6
1131
+ status
1132
+ x
1133
+ 7
1134
+ headers
1135
+ x
1136
+ 7
1137
+ private
1138
+ x
1139
+ 16
1140
+ enforce_non_ssl?
1141
+ M
1142
+ 1
1143
+ n
1144
+ n
1145
+ x
1146
+ 16
1147
+ enforce_non_ssl?
1148
+ i
1149
+ 37
1150
+ 39
1151
+ 0
1152
+ 7
1153
+ 1
1154
+ 49
1155
+ 2
1156
+ 1
1157
+ 13
1158
+ 9
1159
+ 36
1160
+ 15
1161
+ 7
1162
+ 3
1163
+ 64
1164
+ 7
1165
+ 4
1166
+ 64
1167
+ 35
1168
+ 2
1169
+ 20
1170
+ 0
1171
+ 7
1172
+ 5
1173
+ 64
1174
+ 49
1175
+ 2
1176
+ 1
1177
+ 49
1178
+ 6
1179
+ 1
1180
+ 10
1181
+ 35
1182
+ 2
1183
+ 8
1184
+ 36
1185
+ 3
1186
+ 11
1187
+ I
1188
+ 4
1189
+ I
1190
+ 1
1191
+ I
1192
+ 1
1193
+ I
1194
+ 1
1195
+ n
1196
+ p
1197
+ 7
1198
+ x
1199
+ 8
1200
+ @options
1201
+ x
1202
+ 5
1203
+ mixed
1204
+ x
1205
+ 2
1206
+ []
1207
+ s
1208
+ 4
1209
+ POST
1210
+ s
1211
+ 3
1212
+ PUT
1213
+ s
1214
+ 14
1215
+ REQUEST_METHOD
1216
+ x
1217
+ 8
1218
+ include?
1219
+ p
1220
+ 5
1221
+ I
1222
+ -1
1223
+ I
1224
+ 2d
1225
+ I
1226
+ 0
1227
+ I
1228
+ 2e
1229
+ I
1230
+ 25
1231
+ x
1232
+ 85
1233
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
1234
+ p
1235
+ 1
1236
+ x
1237
+ 3
1238
+ env
1239
+ x
1240
+ 12
1241
+ ssl_request?
1242
+ M
1243
+ 1
1244
+ n
1245
+ n
1246
+ x
1247
+ 12
1248
+ ssl_request?
1249
+ i
1250
+ 13
1251
+ 5
1252
+ 20
1253
+ 0
1254
+ 47
1255
+ 49
1256
+ 0
1257
+ 1
1258
+ 7
1259
+ 1
1260
+ 64
1261
+ 83
1262
+ 2
1263
+ 11
1264
+ I
1265
+ 3
1266
+ I
1267
+ 1
1268
+ I
1269
+ 1
1270
+ I
1271
+ 1
1272
+ n
1273
+ p
1274
+ 3
1275
+ x
1276
+ 6
1277
+ scheme
1278
+ s
1279
+ 5
1280
+ https
1281
+ x
1282
+ 2
1283
+ ==
1284
+ p
1285
+ 5
1286
+ I
1287
+ -1
1288
+ I
1289
+ 31
1290
+ I
1291
+ 0
1292
+ I
1293
+ 32
1294
+ I
1295
+ d
1296
+ x
1297
+ 85
1298
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
1299
+ p
1300
+ 1
1301
+ x
1302
+ 3
1303
+ env
1304
+ x
1305
+ 6
1306
+ scheme
1307
+ M
1308
+ 1
1309
+ n
1310
+ n
1311
+ x
1312
+ 6
1313
+ scheme
1314
+ i
1315
+ 59
1316
+ 20
1317
+ 0
1318
+ 7
1319
+ 0
1320
+ 64
1321
+ 49
1322
+ 1
1323
+ 1
1324
+ 7
1325
+ 2
1326
+ 64
1327
+ 83
1328
+ 3
1329
+ 9
1330
+ 20
1331
+ 7
1332
+ 4
1333
+ 64
1334
+ 8
1335
+ 58
1336
+ 20
1337
+ 0
1338
+ 7
1339
+ 5
1340
+ 64
1341
+ 49
1342
+ 1
1343
+ 1
1344
+ 9
1345
+ 50
1346
+ 20
1347
+ 0
1348
+ 7
1349
+ 5
1350
+ 64
1351
+ 49
1352
+ 1
1353
+ 1
1354
+ 7
1355
+ 6
1356
+ 64
1357
+ 49
1358
+ 7
1359
+ 1
1360
+ 78
1361
+ 49
1362
+ 1
1363
+ 1
1364
+ 8
1365
+ 58
1366
+ 20
1367
+ 0
1368
+ 7
1369
+ 8
1370
+ 64
1371
+ 49
1372
+ 1
1373
+ 1
1374
+ 11
1375
+ I
1376
+ 3
1377
+ I
1378
+ 1
1379
+ I
1380
+ 1
1381
+ I
1382
+ 1
1383
+ n
1384
+ p
1385
+ 9
1386
+ s
1387
+ 5
1388
+ HTTPS
1389
+ x
1390
+ 2
1391
+ []
1392
+ s
1393
+ 2
1394
+ on
1395
+ x
1396
+ 2
1397
+ ==
1398
+ s
1399
+ 5
1400
+ https
1401
+ s
1402
+ 22
1403
+ HTTP_X_FORWARDED_PROTO
1404
+ s
1405
+ 1
1406
+ ,
1407
+ x
1408
+ 5
1409
+ split
1410
+ s
1411
+ 15
1412
+ rack.url_scheme
1413
+ p
1414
+ 13
1415
+ I
1416
+ -1
1417
+ I
1418
+ 36
1419
+ I
1420
+ 0
1421
+ I
1422
+ 37
1423
+ I
1424
+ f
1425
+ I
1426
+ 38
1427
+ I
1428
+ 14
1429
+ I
1430
+ 39
1431
+ I
1432
+ 1e
1433
+ I
1434
+ 3a
1435
+ I
1436
+ 32
1437
+ I
1438
+ 3c
1439
+ I
1440
+ 3b
1441
+ x
1442
+ 85
1443
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
1444
+ p
1445
+ 1
1446
+ x
1447
+ 3
1448
+ env
1449
+ x
1450
+ 8
1451
+ matches?
1452
+ M
1453
+ 1
1454
+ n
1455
+ n
1456
+ x
1457
+ 8
1458
+ matches?
1459
+ i
1460
+ 235
1461
+ 20
1462
+ 1
1463
+ 45
1464
+ 0
1465
+ 1
1466
+ 49
1467
+ 2
1468
+ 1
1469
+ 9
1470
+ 116
1471
+ 20
1472
+ 0
1473
+ 13
1474
+ 7
1475
+ 3
1476
+ 12
1477
+ 49
1478
+ 4
1479
+ 1
1480
+ 9
1481
+ 34
1482
+ 15
1483
+ 20
1484
+ 2
1485
+ 49
1486
+ 5
1487
+ 0
1488
+ 20
1489
+ 1
1490
+ 49
1491
+ 6
1492
+ 1
1493
+ 8
1494
+ 114
1495
+ 13
1496
+ 7
1497
+ 7
1498
+ 12
1499
+ 49
1500
+ 4
1501
+ 1
1502
+ 9
1503
+ 62
1504
+ 15
1505
+ 20
1506
+ 2
1507
+ 49
1508
+ 5
1509
+ 0
1510
+ 20
1511
+ 1
1512
+ 49
1513
+ 6
1514
+ 1
1515
+ 10
1516
+ 59
1517
+ 2
1518
+ 8
1519
+ 60
1520
+ 3
1521
+ 8
1522
+ 114
1523
+ 13
1524
+ 7
1525
+ 8
1526
+ 12
1527
+ 49
1528
+ 4
1529
+ 1
1530
+ 9
1531
+ 84
1532
+ 15
1533
+ 20
1534
+ 2
1535
+ 49
1536
+ 9
1537
+ 0
1538
+ 20
1539
+ 1
1540
+ 49
1541
+ 6
1542
+ 1
1543
+ 8
1544
+ 114
1545
+ 13
1546
+ 7
1547
+ 10
1548
+ 12
1549
+ 49
1550
+ 4
1551
+ 1
1552
+ 9
1553
+ 112
1554
+ 15
1555
+ 20
1556
+ 2
1557
+ 49
1558
+ 9
1559
+ 0
1560
+ 20
1561
+ 1
1562
+ 49
1563
+ 6
1564
+ 1
1565
+ 10
1566
+ 109
1567
+ 2
1568
+ 8
1569
+ 110
1570
+ 3
1571
+ 8
1572
+ 114
1573
+ 15
1574
+ 1
1575
+ 8
1576
+ 234
1577
+ 20
1578
+ 0
1579
+ 13
1580
+ 7
1581
+ 3
1582
+ 12
1583
+ 49
1584
+ 4
1585
+ 1
1586
+ 9
1587
+ 148
1588
+ 15
1589
+ 20
1590
+ 2
1591
+ 49
1592
+ 5
1593
+ 0
1594
+ 78
1595
+ 20
1596
+ 1
1597
+ 49
1598
+ 11
1599
+ 0
1600
+ 49
1601
+ 12
1602
+ 2
1603
+ 20
1604
+ 1
1605
+ 83
1606
+ 13
1607
+ 8
1608
+ 234
1609
+ 13
1610
+ 7
1611
+ 7
1612
+ 12
1613
+ 49
1614
+ 4
1615
+ 1
1616
+ 9
1617
+ 184
1618
+ 15
1619
+ 20
1620
+ 2
1621
+ 49
1622
+ 5
1623
+ 0
1624
+ 78
1625
+ 20
1626
+ 1
1627
+ 49
1628
+ 11
1629
+ 0
1630
+ 49
1631
+ 12
1632
+ 2
1633
+ 20
1634
+ 1
1635
+ 83
1636
+ 13
1637
+ 10
1638
+ 181
1639
+ 2
1640
+ 8
1641
+ 182
1642
+ 3
1643
+ 8
1644
+ 234
1645
+ 13
1646
+ 7
1647
+ 8
1648
+ 12
1649
+ 49
1650
+ 4
1651
+ 1
1652
+ 9
1653
+ 205
1654
+ 15
1655
+ 20
1656
+ 2
1657
+ 49
1658
+ 9
1659
+ 0
1660
+ 20
1661
+ 1
1662
+ 83
1663
+ 13
1664
+ 8
1665
+ 234
1666
+ 13
1667
+ 7
1668
+ 10
1669
+ 12
1670
+ 49
1671
+ 4
1672
+ 1
1673
+ 9
1674
+ 232
1675
+ 15
1676
+ 20
1677
+ 2
1678
+ 49
1679
+ 9
1680
+ 0
1681
+ 20
1682
+ 1
1683
+ 83
1684
+ 13
1685
+ 10
1686
+ 229
1687
+ 2
1688
+ 8
1689
+ 230
1690
+ 3
1691
+ 8
1692
+ 234
1693
+ 15
1694
+ 1
1695
+ 11
1696
+ I
1697
+ 6
1698
+ I
1699
+ 3
1700
+ I
1701
+ 3
1702
+ I
1703
+ 3
1704
+ n
1705
+ p
1706
+ 14
1707
+ x
1708
+ 6
1709
+ Regexp
1710
+ n
1711
+ x
1712
+ 5
1713
+ is_a?
1714
+ x
1715
+ 4
1716
+ only
1717
+ x
1718
+ 3
1719
+ ===
1720
+ x
1721
+ 4
1722
+ path
1723
+ x
1724
+ 2
1725
+ =~
1726
+ x
1727
+ 6
1728
+ except
1729
+ x
1730
+ 10
1731
+ only_hosts
1732
+ x
1733
+ 4
1734
+ host
1735
+ x
1736
+ 12
1737
+ except_hosts
1738
+ x
1739
+ 6
1740
+ length
1741
+ x
1742
+ 2
1743
+ []
1744
+ x
1745
+ 2
1746
+ ==
1747
+ p
1748
+ 45
1749
+ I
1750
+ -1
1751
+ I
1752
+ 40
1753
+ I
1754
+ 0
1755
+ I
1756
+ 41
1757
+ I
1758
+ a
1759
+ I
1760
+ 42
1761
+ I
1762
+ c
1763
+ I
1764
+ 43
1765
+ I
1766
+ 16
1767
+ I
1768
+ 44
1769
+ I
1770
+ 22
1771
+ I
1772
+ 45
1773
+ I
1774
+ 2c
1775
+ I
1776
+ 46
1777
+ I
1778
+ 3e
1779
+ I
1780
+ 47
1781
+ I
1782
+ 48
1783
+ I
1784
+ 48
1785
+ I
1786
+ 54
1787
+ I
1788
+ 49
1789
+ I
1790
+ 5e
1791
+ I
1792
+ 4a
1793
+ I
1794
+ 71
1795
+ I
1796
+ 42
1797
+ I
1798
+ 74
1799
+ I
1800
+ 4d
1801
+ I
1802
+ 76
1803
+ I
1804
+ 4e
1805
+ I
1806
+ 80
1807
+ I
1808
+ 4f
1809
+ I
1810
+ 94
1811
+ I
1812
+ 50
1813
+ I
1814
+ 9e
1815
+ I
1816
+ 51
1817
+ I
1818
+ b8
1819
+ I
1820
+ 52
1821
+ I
1822
+ c2
1823
+ I
1824
+ 53
1825
+ I
1826
+ cd
1827
+ I
1828
+ 54
1829
+ I
1830
+ d7
1831
+ I
1832
+ 55
1833
+ I
1834
+ e9
1835
+ I
1836
+ 4d
1837
+ I
1838
+ eb
1839
+ x
1840
+ 85
1841
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
1842
+ p
1843
+ 3
1844
+ x
1845
+ 3
1846
+ key
1847
+ x
1848
+ 7
1849
+ pattern
1850
+ x
1851
+ 3
1852
+ req
1853
+ x
1854
+ 16
1855
+ enforce_ssl_for?
1856
+ M
1857
+ 1
1858
+ n
1859
+ n
1860
+ x
1861
+ 16
1862
+ enforce_ssl_for?
1863
+ i
1864
+ 20
1865
+ 20
1866
+ 0
1867
+ 56
1868
+ 0
1869
+ 50
1870
+ 1
1871
+ 0
1872
+ 9
1873
+ 18
1874
+ 20
1875
+ 0
1876
+ 56
1877
+ 2
1878
+ 50
1879
+ 1
1880
+ 0
1881
+ 8
1882
+ 19
1883
+ 3
1884
+ 11
1885
+ I
1886
+ 4
1887
+ I
1888
+ 2
1889
+ I
1890
+ 2
1891
+ I
1892
+ 2
1893
+ n
1894
+ p
1895
+ 3
1896
+ M
1897
+ 1
1898
+ p
1899
+ 2
1900
+ x
1901
+ 9
1902
+ for_block
1903
+ t
1904
+ n
1905
+ x
1906
+ 16
1907
+ enforce_ssl_for?
1908
+ i
1909
+ 12
1910
+ 57
1911
+ 19
1912
+ 0
1913
+ 15
1914
+ 39
1915
+ 0
1916
+ 20
1917
+ 0
1918
+ 49
1919
+ 1
1920
+ 1
1921
+ 11
1922
+ I
1923
+ 4
1924
+ I
1925
+ 1
1926
+ I
1927
+ 1
1928
+ I
1929
+ 1
1930
+ n
1931
+ p
1932
+ 2
1933
+ x
1934
+ 8
1935
+ @options
1936
+ x
1937
+ 2
1938
+ []
1939
+ p
1940
+ 3
1941
+ I
1942
+ 0
1943
+ I
1944
+ 5b
1945
+ I
1946
+ c
1947
+ x
1948
+ 85
1949
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
1950
+ p
1951
+ 1
1952
+ x
1953
+ 6
1954
+ option
1955
+ x
1956
+ 4
1957
+ any?
1958
+ M
1959
+ 1
1960
+ p
1961
+ 2
1962
+ x
1963
+ 9
1964
+ for_block
1965
+ t
1966
+ n
1967
+ x
1968
+ 16
1969
+ enforce_ssl_for?
1970
+ i
1971
+ 66
1972
+ 57
1973
+ 19
1974
+ 0
1975
+ 15
1976
+ 39
1977
+ 0
1978
+ 20
1979
+ 0
1980
+ 49
1981
+ 1
1982
+ 1
1983
+ 35
1984
+ 1
1985
+ 49
1986
+ 2
1987
+ 0
1988
+ 49
1989
+ 3
1990
+ 0
1991
+ 19
1992
+ 1
1993
+ 15
1994
+ 20
1995
+ 1
1996
+ 49
1997
+ 4
1998
+ 0
1999
+ 9
2000
+ 32
2001
+ 1
2002
+ 8
2003
+ 65
2004
+ 20
2005
+ 1
2006
+ 20
2007
+ 0
2008
+ 7
2009
+ 5
2010
+ 83
2011
+ 6
2012
+ 13
2013
+ 10
2014
+ 50
2015
+ 15
2016
+ 20
2017
+ 0
2018
+ 7
2019
+ 7
2020
+ 83
2021
+ 6
2022
+ 9
2023
+ 57
2024
+ 7
2025
+ 8
2026
+ 64
2027
+ 8
2028
+ 60
2029
+ 7
2030
+ 9
2031
+ 64
2032
+ 56
2033
+ 10
2034
+ 50
2035
+ 11
2036
+ 1
2037
+ 11
2038
+ I
2039
+ 6
2040
+ I
2041
+ 2
2042
+ I
2043
+ 1
2044
+ I
2045
+ 1
2046
+ n
2047
+ p
2048
+ 12
2049
+ x
2050
+ 8
2051
+ @options
2052
+ x
2053
+ 2
2054
+ []
2055
+ x
2056
+ 7
2057
+ flatten
2058
+ x
2059
+ 7
2060
+ compact
2061
+ x
2062
+ 6
2063
+ empty?
2064
+ x
2065
+ 12
2066
+ except_hosts
2067
+ x
2068
+ 2
2069
+ ==
2070
+ x
2071
+ 6
2072
+ except
2073
+ s
2074
+ 4
2075
+ all?
2076
+ s
2077
+ 4
2078
+ any?
2079
+ M
2080
+ 1
2081
+ p
2082
+ 2
2083
+ x
2084
+ 9
2085
+ for_block
2086
+ t
2087
+ n
2088
+ x
2089
+ 16
2090
+ enforce_ssl_for?
2091
+ i
2092
+ 18
2093
+ 57
2094
+ 19
2095
+ 0
2096
+ 15
2097
+ 5
2098
+ 21
2099
+ 1
2100
+ 0
2101
+ 20
2102
+ 0
2103
+ 21
2104
+ 2
2105
+ 1
2106
+ 47
2107
+ 49
2108
+ 0
2109
+ 3
2110
+ 11
2111
+ I
2112
+ 6
2113
+ I
2114
+ 1
2115
+ I
2116
+ 1
2117
+ I
2118
+ 1
2119
+ n
2120
+ p
2121
+ 1
2122
+ x
2123
+ 8
2124
+ matches?
2125
+ p
2126
+ 5
2127
+ I
2128
+ 0
2129
+ I
2130
+ 5f
2131
+ I
2132
+ 4
2133
+ I
2134
+ 60
2135
+ I
2136
+ 12
2137
+ x
2138
+ 85
2139
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
2140
+ p
2141
+ 1
2142
+ x
2143
+ 7
2144
+ pattern
2145
+ x
2146
+ 4
2147
+ send
2148
+ p
2149
+ 9
2150
+ I
2151
+ 0
2152
+ I
2153
+ 5c
2154
+ I
2155
+ 4
2156
+ I
2157
+ 5d
2158
+ I
2159
+ 16
2160
+ I
2161
+ 5e
2162
+ I
2163
+ 20
2164
+ I
2165
+ 5f
2166
+ I
2167
+ 42
2168
+ x
2169
+ 85
2170
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
2171
+ p
2172
+ 2
2173
+ x
2174
+ 3
2175
+ key
2176
+ x
2177
+ 5
2178
+ rules
2179
+ p
2180
+ 9
2181
+ I
2182
+ -1
2183
+ I
2184
+ 5a
2185
+ I
2186
+ 0
2187
+ I
2188
+ 5b
2189
+ I
2190
+ 9
2191
+ I
2192
+ 5c
2193
+ I
2194
+ 12
2195
+ I
2196
+ 65
2197
+ I
2198
+ 14
2199
+ x
2200
+ 85
2201
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
2202
+ p
2203
+ 2
2204
+ x
2205
+ 4
2206
+ keys
2207
+ x
2208
+ 3
2209
+ req
2210
+ x
2211
+ 12
2212
+ enforce_ssl?
2213
+ M
2214
+ 1
2215
+ n
2216
+ n
2217
+ x
2218
+ 12
2219
+ enforce_ssl?
2220
+ i
2221
+ 86
2222
+ 7
2223
+ 0
2224
+ 7
2225
+ 1
2226
+ 35
2227
+ 2
2228
+ 19
2229
+ 1
2230
+ 15
2231
+ 7
2232
+ 2
2233
+ 7
2234
+ 3
2235
+ 35
2236
+ 2
2237
+ 19
2238
+ 2
2239
+ 15
2240
+ 20
2241
+ 2
2242
+ 56
2243
+ 4
2244
+ 50
2245
+ 5
2246
+ 0
2247
+ 9
2248
+ 64
2249
+ 5
2250
+ 20
2251
+ 2
2252
+ 20
2253
+ 0
2254
+ 47
2255
+ 49
2256
+ 6
2257
+ 2
2258
+ 9
2259
+ 61
2260
+ 20
2261
+ 1
2262
+ 56
2263
+ 7
2264
+ 50
2265
+ 5
2266
+ 0
2267
+ 9
2268
+ 58
2269
+ 5
2270
+ 20
2271
+ 1
2272
+ 20
2273
+ 0
2274
+ 47
2275
+ 49
2276
+ 6
2277
+ 2
2278
+ 8
2279
+ 59
2280
+ 2
2281
+ 8
2282
+ 62
2283
+ 3
2284
+ 8
2285
+ 85
2286
+ 20
2287
+ 1
2288
+ 56
2289
+ 8
2290
+ 50
2291
+ 5
2292
+ 0
2293
+ 9
2294
+ 84
2295
+ 5
2296
+ 20
2297
+ 1
2298
+ 20
2299
+ 0
2300
+ 47
2301
+ 49
2302
+ 6
2303
+ 2
2304
+ 8
2305
+ 85
2306
+ 2
2307
+ 11
2308
+ I
2309
+ 6
2310
+ I
2311
+ 3
2312
+ I
2313
+ 1
2314
+ I
2315
+ 1
2316
+ n
2317
+ p
2318
+ 9
2319
+ x
2320
+ 4
2321
+ only
2322
+ x
2323
+ 6
2324
+ except
2325
+ x
2326
+ 10
2327
+ only_hosts
2328
+ x
2329
+ 12
2330
+ except_hosts
2331
+ M
2332
+ 1
2333
+ p
2334
+ 2
2335
+ x
2336
+ 9
2337
+ for_block
2338
+ t
2339
+ n
2340
+ x
2341
+ 12
2342
+ enforce_ssl?
2343
+ i
2344
+ 12
2345
+ 57
2346
+ 19
2347
+ 0
2348
+ 15
2349
+ 39
2350
+ 0
2351
+ 20
2352
+ 0
2353
+ 49
2354
+ 1
2355
+ 1
2356
+ 11
2357
+ I
2358
+ 4
2359
+ I
2360
+ 1
2361
+ I
2362
+ 1
2363
+ I
2364
+ 1
2365
+ n
2366
+ p
2367
+ 2
2368
+ x
2369
+ 8
2370
+ @options
2371
+ x
2372
+ 2
2373
+ []
2374
+ p
2375
+ 3
2376
+ I
2377
+ 0
2378
+ I
2379
+ 6c
2380
+ I
2381
+ c
2382
+ x
2383
+ 85
2384
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
2385
+ p
2386
+ 1
2387
+ x
2388
+ 6
2389
+ option
2390
+ x
2391
+ 4
2392
+ any?
2393
+ x
2394
+ 16
2395
+ enforce_ssl_for?
2396
+ M
2397
+ 1
2398
+ p
2399
+ 2
2400
+ x
2401
+ 9
2402
+ for_block
2403
+ t
2404
+ n
2405
+ x
2406
+ 12
2407
+ enforce_ssl?
2408
+ i
2409
+ 12
2410
+ 57
2411
+ 19
2412
+ 0
2413
+ 15
2414
+ 39
2415
+ 0
2416
+ 20
2417
+ 0
2418
+ 49
2419
+ 1
2420
+ 1
2421
+ 11
2422
+ I
2423
+ 4
2424
+ I
2425
+ 1
2426
+ I
2427
+ 1
2428
+ I
2429
+ 1
2430
+ n
2431
+ p
2432
+ 2
2433
+ x
2434
+ 8
2435
+ @options
2436
+ x
2437
+ 2
2438
+ []
2439
+ p
2440
+ 3
2441
+ I
2442
+ 0
2443
+ I
2444
+ 6e
2445
+ I
2446
+ c
2447
+ x
2448
+ 85
2449
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
2450
+ p
2451
+ 1
2452
+ x
2453
+ 6
2454
+ option
2455
+ M
2456
+ 1
2457
+ p
2458
+ 2
2459
+ x
2460
+ 9
2461
+ for_block
2462
+ t
2463
+ n
2464
+ x
2465
+ 12
2466
+ enforce_ssl?
2467
+ i
2468
+ 12
2469
+ 57
2470
+ 19
2471
+ 0
2472
+ 15
2473
+ 39
2474
+ 0
2475
+ 20
2476
+ 0
2477
+ 49
2478
+ 1
2479
+ 1
2480
+ 11
2481
+ I
2482
+ 4
2483
+ I
2484
+ 1
2485
+ I
2486
+ 1
2487
+ I
2488
+ 1
2489
+ n
2490
+ p
2491
+ 2
2492
+ x
2493
+ 8
2494
+ @options
2495
+ x
2496
+ 2
2497
+ []
2498
+ p
2499
+ 3
2500
+ I
2501
+ 0
2502
+ I
2503
+ 76
2504
+ I
2505
+ c
2506
+ x
2507
+ 85
2508
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
2509
+ p
2510
+ 1
2511
+ x
2512
+ 6
2513
+ option
2514
+ p
2515
+ 25
2516
+ I
2517
+ -1
2518
+ I
2519
+ 69
2520
+ I
2521
+ 0
2522
+ I
2523
+ 6a
2524
+ I
2525
+ 9
2526
+ I
2527
+ 6b
2528
+ I
2529
+ 12
2530
+ I
2531
+ 6c
2532
+ I
2533
+ 1b
2534
+ I
2535
+ 6d
2536
+ I
2537
+ 26
2538
+ I
2539
+ 6e
2540
+ I
2541
+ 2f
2542
+ I
2543
+ 6f
2544
+ I
2545
+ 3a
2546
+ I
2547
+ 71
2548
+ I
2549
+ 3d
2550
+ I
2551
+ 74
2552
+ I
2553
+ 40
2554
+ I
2555
+ 76
2556
+ I
2557
+ 49
2558
+ I
2559
+ 77
2560
+ I
2561
+ 54
2562
+ I
2563
+ 79
2564
+ I
2565
+ 56
2566
+ x
2567
+ 85
2568
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
2569
+ p
2570
+ 3
2571
+ x
2572
+ 3
2573
+ req
2574
+ x
2575
+ 9
2576
+ path_keys
2577
+ x
2578
+ 10
2579
+ hosts_keys
2580
+ x
2581
+ 14
2582
+ replace_scheme
2583
+ M
2584
+ 1
2585
+ n
2586
+ n
2587
+ x
2588
+ 14
2589
+ replace_scheme
2590
+ i
2591
+ 287
2592
+ 39
2593
+ 0
2594
+ 7
2595
+ 1
2596
+ 49
2597
+ 2
2598
+ 1
2599
+ 9
2600
+ 46
2601
+ 45
2602
+ 3
2603
+ 4
2604
+ 39
2605
+ 0
2606
+ 7
2607
+ 1
2608
+ 49
2609
+ 2
2610
+ 1
2611
+ 49
2612
+ 5
2613
+ 1
2614
+ 19
2615
+ 2
2616
+ 15
2617
+ 20
2618
+ 2
2619
+ 80
2620
+ 49
2621
+ 2
2622
+ 1
2623
+ 13
2624
+ 10
2625
+ 42
2626
+ 15
2627
+ 20
2628
+ 2
2629
+ 4
2630
+ 5
2631
+ 49
2632
+ 2
2633
+ 1
2634
+ 19
2635
+ 2
2636
+ 8
2637
+ 49
2638
+ 1
2639
+ 19
2640
+ 2
2641
+ 15
2642
+ 45
2643
+ 6
2644
+ 7
2645
+ 43
2646
+ 8
2647
+ 13
2648
+ 71
2649
+ 9
2650
+ 47
2651
+ 9
2652
+ 178
2653
+ 47
2654
+ 49
2655
+ 10
2656
+ 0
2657
+ 13
2658
+ 20
2659
+ 0
2660
+ 49
2661
+ 11
2662
+ 0
2663
+ 44
2664
+ 43
2665
+ 12
2666
+ 4
2667
+ 4
2668
+ 49
2669
+ 13
2670
+ 1
2671
+ 13
2672
+ 7
2673
+ 14
2674
+ 64
2675
+ 20
2676
+ 1
2677
+ 49
2678
+ 15
2679
+ 2
2680
+ 15
2681
+ 13
2682
+ 7
2683
+ 16
2684
+ 64
2685
+ 20
2686
+ 1
2687
+ 49
2688
+ 15
2689
+ 2
2690
+ 15
2691
+ 13
2692
+ 7
2693
+ 17
2694
+ 64
2695
+ 5
2696
+ 20
2697
+ 1
2698
+ 47
2699
+ 49
2700
+ 18
2701
+ 1
2702
+ 49
2703
+ 19
2704
+ 0
2705
+ 49
2706
+ 15
2707
+ 2
2708
+ 15
2709
+ 13
2710
+ 7
2711
+ 20
2712
+ 64
2713
+ 5
2714
+ 20
2715
+ 1
2716
+ 47
2717
+ 49
2718
+ 18
2719
+ 1
2720
+ 49
2721
+ 19
2722
+ 0
2723
+ 49
2724
+ 15
2725
+ 2
2726
+ 15
2727
+ 49
2728
+ 21
2729
+ 1
2730
+ 20
2731
+ 2
2732
+ 9
2733
+ 161
2734
+ 44
2735
+ 43
2736
+ 12
2737
+ 79
2738
+ 49
2739
+ 13
2740
+ 1
2741
+ 13
2742
+ 7
2743
+ 22
2744
+ 64
2745
+ 20
2746
+ 2
2747
+ 49
2748
+ 15
2749
+ 2
2750
+ 15
2751
+ 8
2752
+ 168
2753
+ 44
2754
+ 43
2755
+ 12
2756
+ 78
2757
+ 49
2758
+ 13
2759
+ 1
2760
+ 49
2761
+ 21
2762
+ 1
2763
+ 47
2764
+ 49
2765
+ 23
2766
+ 1
2767
+ 15
2768
+ 8
2769
+ 286
2770
+ 20
2771
+ 0
2772
+ 49
2773
+ 11
2774
+ 0
2775
+ 44
2776
+ 43
2777
+ 12
2778
+ 4
2779
+ 4
2780
+ 49
2781
+ 13
2782
+ 1
2783
+ 13
2784
+ 7
2785
+ 14
2786
+ 64
2787
+ 20
2788
+ 1
2789
+ 49
2790
+ 15
2791
+ 2
2792
+ 15
2793
+ 13
2794
+ 7
2795
+ 16
2796
+ 64
2797
+ 20
2798
+ 1
2799
+ 49
2800
+ 15
2801
+ 2
2802
+ 15
2803
+ 13
2804
+ 7
2805
+ 17
2806
+ 64
2807
+ 5
2808
+ 20
2809
+ 1
2810
+ 47
2811
+ 49
2812
+ 18
2813
+ 1
2814
+ 49
2815
+ 19
2816
+ 0
2817
+ 49
2818
+ 15
2819
+ 2
2820
+ 15
2821
+ 13
2822
+ 7
2823
+ 20
2824
+ 64
2825
+ 5
2826
+ 20
2827
+ 1
2828
+ 47
2829
+ 49
2830
+ 18
2831
+ 1
2832
+ 49
2833
+ 19
2834
+ 0
2835
+ 49
2836
+ 15
2837
+ 2
2838
+ 15
2839
+ 49
2840
+ 21
2841
+ 1
2842
+ 20
2843
+ 2
2844
+ 9
2845
+ 273
2846
+ 44
2847
+ 43
2848
+ 12
2849
+ 79
2850
+ 49
2851
+ 13
2852
+ 1
2853
+ 13
2854
+ 7
2855
+ 22
2856
+ 64
2857
+ 20
2858
+ 2
2859
+ 49
2860
+ 15
2861
+ 2
2862
+ 15
2863
+ 8
2864
+ 280
2865
+ 44
2866
+ 43
2867
+ 12
2868
+ 78
2869
+ 49
2870
+ 13
2871
+ 1
2872
+ 49
2873
+ 21
2874
+ 1
2875
+ 49
2876
+ 9
2877
+ 1
2878
+ 11
2879
+ I
2880
+ b
2881
+ I
2882
+ 3
2883
+ I
2884
+ 2
2885
+ I
2886
+ 2
2887
+ n
2888
+ p
2889
+ 24
2890
+ x
2891
+ 8
2892
+ @options
2893
+ x
2894
+ 11
2895
+ redirect_to
2896
+ x
2897
+ 2
2898
+ []
2899
+ x
2900
+ 3
2901
+ URI
2902
+ n
2903
+ x
2904
+ 5
2905
+ split
2906
+ x
2907
+ 4
2908
+ Rack
2909
+ n
2910
+ x
2911
+ 7
2912
+ Request
2913
+ x
2914
+ 3
2915
+ new
2916
+ x
2917
+ 8
2918
+ allocate
2919
+ x
2920
+ 3
2921
+ env
2922
+ x
2923
+ 4
2924
+ Hash
2925
+ x
2926
+ 16
2927
+ new_from_literal
2928
+ s
2929
+ 15
2930
+ rack.url_scheme
2931
+ x
2932
+ 3
2933
+ []=
2934
+ s
2935
+ 22
2936
+ HTTP_X_FORWARDED_PROTO
2937
+ s
2938
+ 21
2939
+ HTTP_X_FORWARDED_PORT
2940
+ x
2941
+ 8
2942
+ port_for
2943
+ x
2944
+ 4
2945
+ to_s
2946
+ s
2947
+ 11
2948
+ SERVER_PORT
2949
+ x
2950
+ 5
2951
+ merge
2952
+ s
2953
+ 9
2954
+ HTTP_HOST
2955
+ x
2956
+ 10
2957
+ initialize
2958
+ p
2959
+ 45
2960
+ I
2961
+ -1
2962
+ I
2963
+ 7d
2964
+ I
2965
+ 0
2966
+ I
2967
+ 7e
2968
+ I
2969
+ 9
2970
+ I
2971
+ 7f
2972
+ I
2973
+ 19
2974
+ I
2975
+ 80
2976
+ I
2977
+ 2e
2978
+ I
2979
+ 82
2980
+ I
2981
+ 32
2982
+ I
2983
+ 84
2984
+ I
2985
+ 47
2986
+ I
2987
+ 88
2988
+ I
2989
+ 50
2990
+ I
2991
+ 85
2992
+ I
2993
+ 5a
2994
+ I
2995
+ 86
2996
+ I
2997
+ 64
2998
+ I
2999
+ 87
3000
+ I
3001
+ 76
3002
+ I
3003
+ 88
3004
+ I
3005
+ 87
3006
+ I
3007
+ 84
3008
+ I
3009
+ 8a
3010
+ I
3011
+ 89
3012
+ I
3013
+ a8
3014
+ I
3015
+ 84
3016
+ I
3017
+ b7
3018
+ I
3019
+ 88
3020
+ I
3021
+ c0
3022
+ I
3023
+ 85
3024
+ I
3025
+ ca
3026
+ I
3027
+ 86
3028
+ I
3029
+ d4
3030
+ I
3031
+ 87
3032
+ I
3033
+ e6
3034
+ I
3035
+ 88
3036
+ I
3037
+ f7
3038
+ I
3039
+ 84
3040
+ I
3041
+ fa
3042
+ I
3043
+ 89
3044
+ I
3045
+ 118
3046
+ I
3047
+ 84
3048
+ I
3049
+ 11f
3050
+ x
3051
+ 85
3052
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
3053
+ p
3054
+ 3
3055
+ x
3056
+ 3
3057
+ req
3058
+ x
3059
+ 6
3060
+ scheme
3061
+ x
3062
+ 3
3063
+ uri
3064
+ x
3065
+ 8
3066
+ port_for
3067
+ M
3068
+ 1
3069
+ n
3070
+ n
3071
+ x
3072
+ 8
3073
+ port_for
3074
+ i
3075
+ 16
3076
+ 20
3077
+ 0
3078
+ 7
3079
+ 0
3080
+ 64
3081
+ 83
3082
+ 1
3083
+ 9
3084
+ 13
3085
+ 7
3086
+ 2
3087
+ 8
3088
+ 15
3089
+ 4
3090
+ 80
3091
+ 11
3092
+ I
3093
+ 3
3094
+ I
3095
+ 1
3096
+ I
3097
+ 1
3098
+ I
3099
+ 1
3100
+ n
3101
+ p
3102
+ 3
3103
+ s
3104
+ 5
3105
+ https
3106
+ x
3107
+ 2
3108
+ ==
3109
+ I
3110
+ 1bb
3111
+ p
3112
+ 5
3113
+ I
3114
+ -1
3115
+ I
3116
+ 8c
3117
+ I
3118
+ 0
3119
+ I
3120
+ 8d
3121
+ I
3122
+ 10
3123
+ x
3124
+ 85
3125
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
3126
+ p
3127
+ 1
3128
+ x
3129
+ 6
3130
+ scheme
3131
+ x
3132
+ 23
3133
+ flag_cookies_as_secure!
3134
+ M
3135
+ 1
3136
+ n
3137
+ n
3138
+ x
3139
+ 23
3140
+ flag_cookies_as_secure!
3141
+ i
3142
+ 51
3143
+ 20
3144
+ 0
3145
+ 7
3146
+ 0
3147
+ 64
3148
+ 49
3149
+ 1
3150
+ 1
3151
+ 9
3152
+ 49
3153
+ 20
3154
+ 0
3155
+ 7
3156
+ 0
3157
+ 64
3158
+ 20
3159
+ 0
3160
+ 7
3161
+ 0
3162
+ 64
3163
+ 49
3164
+ 1
3165
+ 1
3166
+ 7
3167
+ 2
3168
+ 64
3169
+ 49
3170
+ 3
3171
+ 1
3172
+ 56
3173
+ 4
3174
+ 50
3175
+ 5
3176
+ 0
3177
+ 7
3178
+ 2
3179
+ 64
3180
+ 49
3181
+ 6
3182
+ 1
3183
+ 13
3184
+ 18
3185
+ 3
3186
+ 49
3187
+ 7
3188
+ 2
3189
+ 15
3190
+ 8
3191
+ 50
3192
+ 1
3193
+ 11
3194
+ I
3195
+ 5
3196
+ I
3197
+ 1
3198
+ I
3199
+ 1
3200
+ I
3201
+ 1
3202
+ n
3203
+ p
3204
+ 8
3205
+ s
3206
+ 10
3207
+ Set-Cookie
3208
+ x
3209
+ 2
3210
+ []
3211
+ s
3212
+ 1
3213
+
3214
+
3215
+ x
3216
+ 5
3217
+ split
3218
+ M
3219
+ 1
3220
+ p
3221
+ 2
3222
+ x
3223
+ 9
3224
+ for_block
3225
+ t
3226
+ n
3227
+ x
3228
+ 23
3229
+ flag_cookies_as_secure!
3230
+ i
3231
+ 49
3232
+ 57
3233
+ 19
3234
+ 0
3235
+ 15
3236
+ 20
3237
+ 0
3238
+ 7
3239
+ 0
3240
+ 13
3241
+ 70
3242
+ 9
3243
+ 24
3244
+ 15
3245
+ 44
3246
+ 43
3247
+ 1
3248
+ 7
3249
+ 2
3250
+ 78
3251
+ 49
3252
+ 3
3253
+ 2
3254
+ 6
3255
+ 0
3256
+ 49
3257
+ 4
3258
+ 1
3259
+ 10
3260
+ 32
3261
+ 2
3262
+ 8
3263
+ 33
3264
+ 3
3265
+ 9
3266
+ 46
3267
+ 20
3268
+ 0
3269
+ 47
3270
+ 101
3271
+ 5
3272
+ 7
3273
+ 6
3274
+ 63
3275
+ 2
3276
+ 8
3277
+ 48
3278
+ 20
3279
+ 0
3280
+ 11
3281
+ I
3282
+ 6
3283
+ I
3284
+ 1
3285
+ I
3286
+ 1
3287
+ I
3288
+ 1
3289
+ n
3290
+ p
3291
+ 7
3292
+ n
3293
+ x
3294
+ 6
3295
+ Regexp
3296
+ s
3297
+ 8
3298
+ secure;
3299
+ x
3300
+ 3
3301
+ new
3302
+ x
3303
+ 2
3304
+ =~
3305
+ x
3306
+ 4
3307
+ to_s
3308
+ s
3309
+ 8
3310
+ ; secure
3311
+ p
3312
+ 5
3313
+ I
3314
+ 0
3315
+ I
3316
+ 93
3317
+ I
3318
+ 4
3319
+ I
3320
+ 94
3321
+ I
3322
+ 31
3323
+ x
3324
+ 85
3325
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
3326
+ p
3327
+ 1
3328
+ x
3329
+ 6
3330
+ cookie
3331
+ x
3332
+ 3
3333
+ map
3334
+ x
3335
+ 4
3336
+ join
3337
+ x
3338
+ 3
3339
+ []=
3340
+ p
3341
+ 13
3342
+ I
3343
+ -1
3344
+ I
3345
+ 91
3346
+ I
3347
+ 0
3348
+ I
3349
+ 92
3350
+ I
3351
+ a
3352
+ I
3353
+ 93
3354
+ I
3355
+ 22
3356
+ I
3357
+ 95
3358
+ I
3359
+ 25
3360
+ I
3361
+ 93
3362
+ I
3363
+ 31
3364
+ I
3365
+ 92
3366
+ I
3367
+ 33
3368
+ x
3369
+ 85
3370
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
3371
+ p
3372
+ 1
3373
+ x
3374
+ 7
3375
+ headers
3376
+ x
3377
+ 17
3378
+ set_hsts_headers!
3379
+ M
3380
+ 1
3381
+ n
3382
+ n
3383
+ x
3384
+ 17
3385
+ set_hsts_headers!
3386
+ i
3387
+ 102
3388
+ 44
3389
+ 43
3390
+ 0
3391
+ 80
3392
+ 49
3393
+ 1
3394
+ 1
3395
+ 13
3396
+ 7
3397
+ 2
3398
+ 7
3399
+ 3
3400
+ 49
3401
+ 4
3402
+ 2
3403
+ 15
3404
+ 13
3405
+ 7
3406
+ 5
3407
+ 2
3408
+ 49
3409
+ 4
3410
+ 2
3411
+ 15
3412
+ 19
3413
+ 1
3414
+ 15
3415
+ 20
3416
+ 1
3417
+ 39
3418
+ 6
3419
+ 7
3420
+ 7
3421
+ 49
3422
+ 8
3423
+ 1
3424
+ 49
3425
+ 9
3426
+ 1
3427
+ 15
3428
+ 7
3429
+ 10
3430
+ 20
3431
+ 1
3432
+ 7
3433
+ 2
3434
+ 49
3435
+ 8
3436
+ 1
3437
+ 47
3438
+ 101
3439
+ 11
3440
+ 63
3441
+ 2
3442
+ 19
3443
+ 2
3444
+ 15
3445
+ 20
3446
+ 1
3447
+ 7
3448
+ 5
3449
+ 49
3450
+ 8
3451
+ 1
3452
+ 9
3453
+ 77
3454
+ 20
3455
+ 2
3456
+ 7
3457
+ 12
3458
+ 64
3459
+ 81
3460
+ 13
3461
+ 19
3462
+ 2
3463
+ 8
3464
+ 78
3465
+ 1
3466
+ 15
3467
+ 20
3468
+ 0
3469
+ 44
3470
+ 43
3471
+ 0
3472
+ 79
3473
+ 49
3474
+ 1
3475
+ 1
3476
+ 13
3477
+ 7
3478
+ 14
3479
+ 64
3480
+ 20
3481
+ 2
3482
+ 49
3483
+ 4
3484
+ 2
3485
+ 15
3486
+ 49
3487
+ 9
3488
+ 1
3489
+ 11
3490
+ I
3491
+ 8
3492
+ I
3493
+ 3
3494
+ I
3495
+ 1
3496
+ I
3497
+ 1
3498
+ n
3499
+ p
3500
+ 15
3501
+ x
3502
+ 4
3503
+ Hash
3504
+ x
3505
+ 16
3506
+ new_from_literal
3507
+ x
3508
+ 7
3509
+ expires
3510
+ I
3511
+ 1e13380
3512
+ x
3513
+ 3
3514
+ []=
3515
+ x
3516
+ 10
3517
+ subdomains
3518
+ x
3519
+ 8
3520
+ @options
3521
+ x
3522
+ 4
3523
+ hsts
3524
+ x
3525
+ 2
3526
+ []
3527
+ x
3528
+ 6
3529
+ merge!
3530
+ s
3531
+ 8
3532
+ max-age=
3533
+ x
3534
+ 4
3535
+ to_s
3536
+ s
3537
+ 19
3538
+ ; includeSubDomains
3539
+ x
3540
+ 1
3541
+ +
3542
+ s
3543
+ 25
3544
+ Strict-Transport-Security
3545
+ p
3546
+ 13
3547
+ I
3548
+ -1
3549
+ I
3550
+ 9a
3551
+ I
3552
+ 0
3553
+ I
3554
+ 9b
3555
+ I
3556
+ 1b
3557
+ I
3558
+ 9c
3559
+ I
3560
+ 28
3561
+ I
3562
+ 9d
3563
+ I
3564
+ 39
3565
+ I
3566
+ 9e
3567
+ I
3568
+ 4f
3569
+ I
3570
+ 9f
3571
+ I
3572
+ 66
3573
+ x
3574
+ 85
3575
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
3576
+ p
3577
+ 3
3578
+ x
3579
+ 7
3580
+ headers
3581
+ x
3582
+ 4
3583
+ opts
3584
+ x
3585
+ 5
3586
+ value
3587
+ p
3588
+ 27
3589
+ I
3590
+ 2
3591
+ I
3592
+ 4
3593
+ I
3594
+ 10
3595
+ I
3596
+ 14
3597
+ I
3598
+ 1e
3599
+ I
3600
+ 2b
3601
+ I
3602
+ 22
3603
+ I
3604
+ 2d
3605
+ I
3606
+ 30
3607
+ I
3608
+ 31
3609
+ I
3610
+ 3e
3611
+ I
3612
+ 36
3613
+ I
3614
+ 4c
3615
+ I
3616
+ 40
3617
+ I
3618
+ 5a
3619
+ I
3620
+ 5a
3621
+ I
3622
+ 68
3623
+ I
3624
+ 69
3625
+ I
3626
+ 76
3627
+ I
3628
+ 7d
3629
+ I
3630
+ 84
3631
+ I
3632
+ 8c
3633
+ I
3634
+ 92
3635
+ I
3636
+ 91
3637
+ I
3638
+ a0
3639
+ I
3640
+ 9a
3641
+ I
3642
+ ae
3643
+ x
3644
+ 85
3645
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
3646
+ p
3647
+ 0
3648
+ x
3649
+ 13
3650
+ attach_method
3651
+ p
3652
+ 3
3653
+ I
3654
+ 2
3655
+ I
3656
+ 2
3657
+ I
3658
+ 1d
3659
+ x
3660
+ 85
3661
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
3662
+ p
3663
+ 0
3664
+ x
3665
+ 13
3666
+ attach_method
3667
+ p
3668
+ 3
3669
+ I
3670
+ 0
3671
+ I
3672
+ 1
3673
+ I
3674
+ 1c
3675
+ x
3676
+ 85
3677
+ /Users/remy/Development/Ruby/Gems/tobmatth/rack-ssl-enforcer/lib/rack/ssl-enforcer.rb
3678
+ p
3679
+ 0