strelka 0.18.0 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/History.rdoc +24 -0
  5. data/IDEAS.rdoc +0 -1
  6. data/README.rdoc +12 -6
  7. data/Rakefile +4 -94
  8. data/lib/strelka.rb +1 -1
  9. data/lib/strelka/app.rb +2 -3
  10. data/lib/strelka/app/parameters.rb +3 -12
  11. data/lib/strelka/app/restresources.rb +0 -3
  12. data/lib/strelka/cookie.rb +1 -1
  13. data/lib/strelka/mixins.rb +1 -1
  14. data/lib/strelka/multirunner.rb +34 -11
  15. data/lib/strelka/paramvalidator.rb +22 -45
  16. data/lib/strelka/session/default.rb +1 -1
  17. data/spec/strelka/app/parameters_spec.rb +1 -27
  18. data/spec/strelka/app_spec.rb +0 -12
  19. data/spec/strelka/mixins_spec.rb +0 -10
  20. data/spec/strelka/paramvalidator_spec.rb +4 -54
  21. metadata +51 -143
  22. metadata.gz.sig +0 -0
  23. data/.gemtest +0 -0
  24. data/ChangeLog +0 -3824
  25. data/MILESTONES.rdoc +0 -24
  26. data/Manifest.txt +0 -144
  27. data/contrib/hoetemplate/History.rdoc.erb +0 -4
  28. data/contrib/hoetemplate/Manifest.txt.erb +0 -8
  29. data/contrib/hoetemplate/README.rdoc.erb +0 -35
  30. data/contrib/hoetemplate/Rakefile.erb +0 -24
  31. data/contrib/hoetemplate/data/project/apps/file_name_app +0 -37
  32. data/contrib/hoetemplate/data/project/templates/layout.tmpl.erb +0 -13
  33. data/contrib/hoetemplate/data/project/templates/top.tmpl.erb +0 -8
  34. data/contrib/hoetemplate/lib/file_name.rb.erb +0 -15
  35. data/contrib/hoetemplate/spec/file_name_spec.rb.erb +0 -21
  36. data/contrib/strelka-dogs/doggie6.svg +0 -271
  37. data/contrib/strelka-dogs/doggie7.svg +0 -49
  38. data/examples/Procfile +0 -9
  39. data/examples/apps/auth-demo +0 -29
  40. data/examples/apps/auth-demo2 +0 -37
  41. data/examples/apps/hello-world +0 -30
  42. data/examples/apps/sessions-demo +0 -42
  43. data/examples/apps/upload-demo +0 -74
  44. data/examples/apps/ws-chat +0 -69
  45. data/examples/apps/ws-echo +0 -61
  46. data/examples/config.yml +0 -33
  47. data/examples/gen-config.rb +0 -52
  48. data/examples/static/examples.css +0 -4
  49. data/examples/static/examples.html +0 -33
  50. data/examples/strelka.conf.example +0 -51
  51. data/examples/templates/auth-form.tmpl +0 -14
  52. data/examples/templates/auth-success.tmpl +0 -5
  53. data/examples/templates/layout.tmpl +0 -31
  54. data/examples/templates/upload-form.tmpl +0 -17
  55. data/examples/templates/upload-success.tmpl +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7dad453a5871872ca4f793e78253510d82e4ed27fbb173c82629501c60962477
4
- data.tar.gz: 8bf1feafca4c80397808322ed09c93b9c6ed56cd917c5db12ab0f1e33cf8a59f
3
+ metadata.gz: 3a9926577075cbf009622a30ab13dc4f1fe38c4ba943419c318359d6648a58ba
4
+ data.tar.gz: 5c19c5a7b328e6cedbba07107a3c732e62e62aa71d0e48fb6b8e5efea3b40ca9
5
5
  SHA512:
6
- metadata.gz: a220e3f1d3f6fdaf963173170dc2186ebf580a2b93c522017df7cfd7ba3ef3d45850943552a510e7bacbed11271dca7d0a42f1349b74651c64c5a9a957f852f5
7
- data.tar.gz: b8eb408709e9fb4269d0516236d9d203a4ea3e59580b82c9b8d9939d7932c6722d79f0076aa44fd08638ce890dc7c6270e4c772ed9b064d698e043055596078e
6
+ metadata.gz: 1f44a6a2c1be7c96a96cb04111ff914c4022bdf52df94df541b183ce0150222b51d8cd21dedf60cb697fcfddb5c2a66dd339e4dc8caf1f862afa2e1c8bb313f6
7
+ data.tar.gz: 2e92f0355c0858e750bb0bbc5dfa8f3eb91103bf7632ba53bbeb7a671523bd6c0a659f2deadfb05be91d35efcd7e2a8fd603654e836fa82b47020ad43ad18192
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,27 @@
1
+ = Release History for strelka
2
+
3
+ ---
4
+
5
+ == v0.19.0 [2020-02-05] Mahlon E. Smith <mahlon@martini.nu>
6
+
7
+ Bugfixes:
8
+
9
+ - Separate reaping from signal sending (FreeBSD)
10
+
11
+ Improvements:
12
+
13
+ - Default devmode to false, requiring it to be explicitly enabled.
14
+ - Remove untainting in preparation for Ruby 3.
15
+
16
+
17
+ == v0.18.0 [2019-09-25] Mahlon E. Smith <mahlon@martini.nu>
18
+
19
+ Bugfixes:
20
+
21
+ - Add an optional hook to perform arbitrary actions before forking.
22
+ - Make the signal handling for running multiple handlers less naive.
23
+
24
+
1
25
  == v0.17.0 [2019-09-18] Mahlon E. Smith <mahlon@martini.nu>
2
26
 
3
27
  Enhancements:
data/IDEAS.rdoc CHANGED
@@ -47,7 +47,6 @@ gem sandboxing.
47
47
  another app via its appid.
48
48
 
49
49
 
50
-
51
50
  === Future Plugins
52
51
 
53
52
  * CORS (cors) — manage {Cross-Origin Resource Sharing}[http://www.html5rocks.com/en/tutorials/cors/]
@@ -1,9 +1,9 @@
1
1
  = Strelka (Стрелка)
2
2
 
3
- home :: http://deveiate.org/projects/Strelka
4
- code :: http://bitbucket.org/ged/Strelka
5
- github :: https://github.com/ged/strelka
6
- docs :: http://deveiate.org/code/strelka
3
+ home:: https://hg.sr.ht/~ged/Strelka
4
+ code:: https://hg.sr.ht/~ged/Strelka/browse
5
+ github:: https://github.com/ged/strelka
6
+ docs:: http://deveiate.org/code/strelka
7
7
 
8
8
 
9
9
  == Description
@@ -197,7 +197,7 @@ Support for sending partial responses via the Chunked encoding.
197
197
  == Contributing
198
198
 
199
199
  You can check out the current development source with Mercurial via its
200
- {project page}[http://bitbucket.org/ged/Strelka]. Or if you prefer Git, via
200
+ {project page}[http://bitbucket.org/ged/Strelka]. Or if you prefer Git, via
201
201
  {its Github mirror}[https://github.com/ged/strelka].
202
202
 
203
203
  After checking out the source, run:
@@ -208,9 +208,15 @@ This task will install any missing dependencies, run the tests/specs,
208
208
  and generate the API documentation.
209
209
 
210
210
 
211
+ == Authors
212
+
213
+ - Mahlon E. Smith <mahlon@martini.nu>
214
+ - Michael Granger <ged@faeriemud.org>
215
+
216
+
211
217
  == License
212
218
 
213
- Copyright (c) 2011-2016, Michael Granger and Mahlon E. Smith
219
+ Copyright (c) 2011-2020, Michael Granger and Mahlon E. Smith
214
220
  All rights reserved.
215
221
 
216
222
  Redistribution and use in source and binary forms, with or without
data/Rakefile CHANGED
@@ -1,98 +1,8 @@
1
- #!/usr/bin/env rake
1
+ #!/usr/bin/env ruby -S rake
2
2
 
3
- require 'rake/clean'
3
+ require 'rake/deveiate'
4
4
 
5
- begin
6
- require 'hoe'
7
- rescue LoadError
8
- abort "This Rakefile requires 'hoe' (gem install hoe)"
5
+ Rake::DevEiate.setup( 'strelka' ) do |project|
6
+ project.publish_to = 'deveiate:/usr/local/www/public/code'
9
7
  end
10
8
 
11
- GEMSPEC = 'strelka.gemspec'
12
-
13
- Hoe.plugin :mercurial
14
- Hoe.plugin :signing
15
- Hoe.plugin :deveiate
16
-
17
- Hoe.plugins.delete :rubyforge
18
-
19
- hoespec = Hoe.spec( 'strelka' ) do
20
- self.readme_file = 'README.rdoc'
21
- self.history_file = 'History.rdoc'
22
- self.extra_rdoc_files = FileList[ '*.rdoc' ]
23
- self.license "BSD"
24
-
25
- self.developer 'Mahlon E. Smith', 'mahlon@martini.nu'
26
- self.developer 'Michael Granger', 'ged@FaerieMUD.org'
27
-
28
- self.dependency 'configurability', '~> 3.1'
29
- self.dependency 'foreman', '~> 0.62'
30
- self.dependency 'highline', '~> 1.6'
31
- self.dependency 'inversion', '~> 1.0'
32
- self.dependency 'loggability', '~> 0.9'
33
- self.dependency 'mongrel2', '~> 0.53'
34
- self.dependency 'pluggability', '~> 0.4'
35
- self.dependency 'sysexits', '~> 1.1'
36
- self.dependency 'uuidtools', '~> 2.1'
37
- self.dependency 'safe_yaml', '~> 1.0'
38
- self.dependency 'gli', '~> 2.14'
39
-
40
- self.dependency 'hoe-deveiate', '~> 0.6', :developer
41
- self.dependency 'rspec', '~> 3.0', :developer
42
- self.dependency 'simplecov', '~> 0.7', :developer
43
- self.dependency 'rdoc-generator-fivefish', '~> 0.1', :developer
44
-
45
- self.require_ruby_version( '>=2.2.0' )
46
- self.hg_sign_tags = true if self.respond_to?( :hg_sign_tags= )
47
- self.check_history_on_release = true if self.respond_to?( :check_history_on_release= )
48
- self.rdoc_locations << "deveiate:/usr/local/www/public/code/#{remote_rdoc_dir}"
49
- end
50
-
51
- ENV['VERSION'] ||= hoespec.spec.version.to_s
52
-
53
- # Ensure the specs pass before checking in
54
- task 'hg:precheckin' => [:check_history, :check_manifest, :spec]
55
-
56
- if Rake::Task.task_defined?( '.gemtest' )
57
- Rake::Task['.gemtest'].clear
58
- task '.gemtest' do
59
- $stderr.puts "Not including a .gemtest until I'm confident the test suite is idempotent."
60
- end
61
- end
62
-
63
- desc "Build a coverage report"
64
- task :coverage do
65
- ENV["COVERAGE"] = 'yes'
66
- Rake::Task[:spec].invoke
67
- end
68
-
69
-
70
- # Use the fivefish formatter for docs generated from development checkout
71
- if File.directory?( '.hg' )
72
- require 'rdoc/task'
73
-
74
- Rake::Task[ 'docs' ].clear
75
- RDoc::Task.new( 'docs' ) do |rdoc|
76
- rdoc.main = "README.rdoc"
77
- rdoc.rdoc_files.include( "*.rdoc", "ChangeLog", "lib/**/*.rb" )
78
- rdoc.generator = :fivefish
79
- rdoc.title = "Strelka: A Ruby Web Framework"
80
- rdoc.rdoc_dir = 'doc'
81
- end
82
- end
83
-
84
- task :gemspec => GEMSPEC
85
- file GEMSPEC => __FILE__
86
- task GEMSPEC do |task|
87
- spec = $hoespec.spec
88
- spec.files.delete( '.gemtest' )
89
- spec.signing_key = nil
90
- spec.cert_chain = [ 'certs/mahlon.pem', 'certs/ged.pem' ]
91
- spec.version = "#{spec.version.bump}.0.pre#{Time.now.strftime("%Y%m%d%H%M%S")}"
92
- File.open( task.name, 'w' ) do |fh|
93
- fh.write( spec.to_ruby )
94
- end
95
- end
96
-
97
- CLOBBER.include( GEMSPEC.to_s )
98
- task :default => :gemspec
@@ -22,7 +22,7 @@ module Strelka
22
22
  extend Loggability
23
23
 
24
24
  # Library version constant
25
- VERSION = '0.18.0'
25
+ VERSION = '0.19.0'
26
26
 
27
27
  # Version-control revision constant
28
28
  REVISION = %q$Revision$
@@ -32,7 +32,7 @@ class Strelka::App < Mongrel2::Handler
32
32
 
33
33
  ##
34
34
  # 'Developer mode' flag.
35
- setting :devmode, default: true
35
+ setting :devmode, default: false
36
36
 
37
37
  end
38
38
 
@@ -40,7 +40,6 @@ class Strelka::App < Mongrel2::Handler
40
40
  # Class instance variables
41
41
  @devmode = false
42
42
  @default_type = nil
43
- @loading_file = nil
44
43
  @subclasses = Hash.new {|h,k| h[k] = [] }
45
44
 
46
45
 
@@ -54,7 +53,7 @@ class Strelka::App < Mongrel2::Handler
54
53
  ### Developer mode is mostly informational by default (it just makes logging more
55
54
  ### verbose), but plugins and such might alter their behavior based on this setting.
56
55
  def self::devmode?
57
- return @devmode || $DEBUG
56
+ return @devmode
58
57
  end
59
58
  singleton_method_alias :in_devmode?, :devmode?
60
59
 
@@ -8,11 +8,10 @@ require 'strelka/plugins'
8
8
  require 'strelka/paramvalidator'
9
9
 
10
10
 
11
- # Parameter validation and untainting for Strelka apps.
11
+ # Parameter validation for Strelka apps.
12
12
  #
13
- # When you include the +:parameters+ plugin, you can declare valid parameters, specify
14
- # constraints that describe what they should contain, and automatically untaint the incoming
15
- # values that match.
13
+ # When you include the +:parameters+ plugin, you can declare valid parameters and specify
14
+ # constraints that describe what incoming values should match.
16
15
  #
17
16
  # == Parameter Declaration
18
17
  #
@@ -101,14 +100,6 @@ module Strelka::App::Parameters
101
100
  end
102
101
 
103
102
 
104
- ### Get/set the untainting flag. If set, all parameters which match their constraints
105
- ### will also be untainted.
106
- def untaint_all_constraints( newval=nil )
107
- self.paramvalidator.untaint_all = newval unless newval.nil?
108
- return self.paramvalidator.untaint_all?
109
- end
110
-
111
-
112
103
  ### Inheritance hook -- inheriting classes inherit their parents' parameter
113
104
  ### declarations, too.
114
105
  def inherited( subclass )
@@ -152,9 +152,6 @@ module Strelka::App::RestResources
152
152
  route = [ options[:prefix], name ].compact.join( '/' )
153
153
  self.log.warn "Route is: %p" % [[ options[:prefix], name ]]
154
154
 
155
- # Ensure validated parameters are untainted
156
- self.untaint_all_constraints
157
-
158
155
  # Make and install handler methods
159
156
  self.log.debug " adding readers"
160
157
  self.add_options_handler( route, rsrcobj, options )
@@ -79,7 +79,7 @@ class Strelka::Cookie
79
79
  raise Strelka::ParseError, "malformed cookie pair: %p" % [ cookie_pair ]
80
80
 
81
81
  # self.log.debug " matched cookie: %p" % [ match ]
82
- name = match[:cookie_name].untaint
82
+ name = match[:cookie_name]
83
83
  value = match[:cookie_value]
84
84
  value = self.dequote( value ) if value.start_with?( DQUOTE )
85
85
  value = nil if value.empty?
@@ -244,7 +244,7 @@ module Strelka
244
244
  newhash = {}
245
245
 
246
246
  hash.each do |key,val|
247
- keysym = key.to_s.dup.untaint.to_sym
247
+ keysym = key.to_s.dup.to_sym
248
248
 
249
249
  if val.is_a?( Hash )
250
250
  newhash[ keysym ] = symbolify_keys( val )
@@ -5,7 +5,7 @@
5
5
  require 'strelka' unless defined?( Strelka )
6
6
  require 'strelka/signal_handling'
7
7
 
8
- # Load multiple simulatneous Strelka handlers (of a single type) with
8
+ # Load multiple simultaneous Strelka handlers (of a single type) with
9
9
  # proper signal handling.
10
10
  #
11
11
  class Strelka::MultiRunner
@@ -53,7 +53,9 @@ class Strelka::MultiRunner
53
53
 
54
54
  self.log.debug "Starting multirunner loop..."
55
55
  self.spawn_children
56
- self.wait_for_signals while self.running
56
+ while self.running
57
+ self.reap_children if self.wait_for_signals
58
+ end
57
59
  self.log.debug "Ending multirunner."
58
60
 
59
61
  # Restore the default signal handlers
@@ -81,16 +83,37 @@ class Strelka::MultiRunner
81
83
  end
82
84
 
83
85
 
84
- ### Wait on the child associated with the given +pid+, deleting it from the
85
- ### running tasks Hash if successful.
86
- def reap_children( signal )
87
- self.handler_pids.dup.each do |pid|
88
- self.log.debug " sending %p to pid %p" % [ signal, pid ]
89
- Process.kill( signal, pid )
90
- pid, status = Process.waitpid2( pid, Process::WUNTRACED )
91
- self.log.debug " waitpid2 returned: [ %p, %p ]" % [ pid, status ]
86
+ ### Clean up after any children that have died.
87
+ def reap_children
88
+ pid, status = Process.waitpid2( -1, Process::WNOHANG|Process::WUNTRACED )
89
+ self.log.debug " waitpid2 returned: [ %p, %p ]" % [ pid, status ]
90
+ while pid
92
91
  self.handler_pids.delete( pid )
92
+ pid, status = Process.waitpid2( -1, Process::WNOHANG|Process::WUNTRACED )
93
+ self.log.debug " waitpid2 returned: [ %p, %p ]" % [ pid, status ]
94
+ end
95
+ end
96
+
97
+
98
+ ### Kill all current children with the specified +signal+. Returns
99
+ ### +true+ if the signal was sent to one or more children.
100
+ def kill_children( signal=:TERM )
101
+ return false if self.handler_pids.empty?
102
+
103
+ self.log.info "Sending %s signal to %d task pids: %p." %
104
+ [ signal, self.handler_pids.length, self.handler_pids ]
105
+ self.handler_pids.each do |pid|
106
+ begin
107
+ Process.kill( signal, pid )
108
+ rescue Errno::ESRCH => err
109
+ self.log.error "%p when trying to %s child %d: %s" %
110
+ [ err.class, signal, pid, err.message ]
111
+ end
93
112
  end
113
+
114
+ return true
115
+ rescue Errno::ESRCH
116
+ self.log.debug "Ignoring signals to unreaped children."
94
117
  end
95
118
 
96
119
 
@@ -101,7 +124,7 @@ class Strelka::MultiRunner
101
124
  when :INT, :TERM, :QUIT
102
125
  if @running
103
126
  self.log.warn "%s signal: graceful shutdown" % [ sig ]
104
- self.reap_children( sig )
127
+ self.kill_children( sig )
105
128
  @running = false
106
129
  else
107
130
  self.ignore_signals
@@ -26,10 +26,7 @@ require 'strelka/app' unless defined?( Strelka::App )
26
26
  # validator.add( :feedback, :printable, "Customer Feedback" )
27
27
  # validator.override( :email, :printable, "Your Email Address" )
28
28
  #
29
- # # Untaint all parameter values which match their constraints
30
- # validate.untaint_all_constraints = true
31
- #
32
- # # Now pass in tainted values in a hash (e.g., from an HTML form)
29
+ # # Now pass in values in a hash (e.g., from an HTML form)
33
30
  # validator.validate( req.params )
34
31
  #
35
32
  # # Now if there weren't any errors, use some form values to fill out the
@@ -79,7 +76,7 @@ class Strelka::ParamValidator
79
76
 
80
77
 
81
78
  # Flags that are passed as Symbols when declaring a parameter
82
- FLAGS = [ :required, :untaint, :multiple ]
79
+ FLAGS = [ :required, :multiple ]
83
80
 
84
81
  # Map of constraint specification types to their equivalent Constraint class.
85
82
  TYPES = { Proc => self }
@@ -124,7 +121,6 @@ class Strelka::ParamValidator
124
121
  @description = args.shift if args.first.is_a?( String )
125
122
 
126
123
  @required = args.include?( :required )
127
- @untaint = args.include?( :untaint )
128
124
  @multiple = args.include?( :multiple )
129
125
  end
130
126
 
@@ -151,19 +147,13 @@ class Strelka::ParamValidator
151
147
  # order for the parameters to be valid.
152
148
  attr_predicate :required?
153
149
 
154
- ##
155
- # Returns true if the constraint will also untaint its result before returning it.
156
- attr_predicate :untaint?
157
-
158
150
 
159
151
  ### Check the given value against the constraint and return the result if it passes.
160
- def apply( value, force_untaint=false )
161
- untaint = self.untaint? || force_untaint
162
-
152
+ def apply( value )
163
153
  if self.multiple?
164
- return self.check_multiple( value, untaint )
154
+ return self.check_multiple( value )
165
155
  else
166
- return self.check( value, untaint )
156
+ return self.check( value )
167
157
  end
168
158
  end
169
159
 
@@ -190,7 +180,6 @@ class Strelka::ParamValidator
190
180
  flags = []
191
181
  flags << 'required' if self.required?
192
182
  flags << 'multiple' if self.multiple?
193
- flags << 'untaint' if self.untaint?
194
183
 
195
184
  desc << " (%s)" % [ flags.join(',') ] unless flags.empty?
196
185
 
@@ -218,21 +207,20 @@ class Strelka::ParamValidator
218
207
  ### Check the specified value against the constraint and return the results. By
219
208
  ### default, this just calls to_proc and the block and calls the result with the
220
209
  ### value as its argument.
221
- def check( value, untaint )
210
+ def check( value )
222
211
  return self.block.to_proc.call( value ) if self.block
223
- value.untaint if untaint && value.respond_to?( :untaint )
224
212
  return value
225
213
  end
226
214
 
227
215
 
228
216
  ### Check the given +values+ against the constraint and return the results if
229
217
  ### all of them succeed.
230
- def check_multiple( values, untaint )
218
+ def check_multiple( values )
231
219
  values = [ values ] unless values.is_a?( Array )
232
220
  results = []
233
221
 
234
222
  values.each do |value|
235
- result = self.check( value, untaint ) or return nil
223
+ result = self.check( value ) or return nil
236
224
  results << result
237
225
  end
238
226
 
@@ -280,38 +268,35 @@ class Strelka::ParamValidator
280
268
 
281
269
  ### Check the +value+ against the regular expression and return its
282
270
  ### match groups if successful.
283
- def check( value, untaint )
271
+ def check( value )
284
272
  self.log.debug "Validating %p via regexp %p" % [ value, self.pattern ]
285
273
  match = self.pattern.match( value.to_s ) or return nil
286
274
 
287
275
  if match.captures.empty?
288
276
  self.log.debug " no captures, using whole match: %p" % [match[0]]
289
- return super( match[0], untaint )
277
+ return super( match[0] )
290
278
 
291
279
  elsif match.names.length > 1
292
280
  self.log.debug " extracting hash of named captures: %p" % [ match.names ]
293
- rhash = self.matched_hash( match, untaint )
294
- return super( rhash, untaint )
281
+ rhash = self.matched_hash( match )
282
+ return super( rhash )
295
283
 
296
284
  elsif match.captures.length == 1
297
285
  self.log.debug " extracting one capture: %p" % [match.captures.first]
298
- return super( match.captures.first, untaint )
286
+ return super( match.captures.first )
299
287
 
300
288
  else
301
289
  self.log.debug " extracting multiple captures: %p" % [match.captures]
302
290
  values = match.captures
303
- values.map {|val| val.untaint if val } if untaint
304
- return super( values, untaint )
291
+ return super( values )
305
292
  end
306
293
  end
307
294
 
308
295
 
309
- ### Return a Hash of the given +match+ object's named captures, untainting the values
310
- ### if +untaint+ is true.
311
- def matched_hash( match, untaint )
296
+ ### Return a Hash of the given +match+ object's named captures.
297
+ def matched_hash( match )
312
298
  return match.names.inject( {} ) do |accum,name|
313
299
  value = match[ name ]
314
- value.untaint if untaint && value
315
300
  accum[ name.to_sym ] = value
316
301
  accum
317
302
  end
@@ -566,7 +551,6 @@ class Strelka::ParamValidator
566
551
  def initialize
567
552
  @constraints = {}
568
553
  @fields = {}
569
- @untaint_all = false
570
554
 
571
555
  self.reset
572
556
  end
@@ -591,12 +575,6 @@ class Strelka::ParamValidator
591
575
  # The Hash of raw field data (if validation has occurred)
592
576
  attr_reader :fields
593
577
 
594
- ##
595
- # Global untainting flag
596
- attr_predicate_accessor :untaint_all?
597
- alias_method :untaint_all_constraints=, :untaint_all=
598
- alias_method :untaint_all_constraints?, :untaint_all?
599
-
600
578
  ##
601
579
  # Returns +true+ if the paramvalidator has been given parameters to validate. Adding or
602
580
  # overriding constraints resets this.
@@ -680,13 +658,12 @@ class Strelka::ParamValidator
680
658
  constraint.required?
681
659
  end
682
660
 
683
- return "#<%p:0x%016x %s, profile: [required: %s, optional: %s] global untaint: %s>" % [
661
+ return "#<%p:0x%016x %s, profile: [required: %s, optional: %s]>" % [
684
662
  self.class,
685
663
  self.object_id / 2,
686
664
  self.to_s,
687
665
  required.empty? ? "(none)" : required.map( &:last ).map( &:name ).join(','),
688
666
  optional.empty? ? "(none)" : optional.map( &:last ).map( &:name ).join(','),
689
- self.untaint_all? ? "enabled" : "disabled",
690
667
  ]
691
668
  end
692
669
 
@@ -754,7 +731,7 @@ class Strelka::ParamValidator
754
731
  ### result.
755
732
  def apply_constraint( constraint, value )
756
733
  if !( value.nil? || value == '' )
757
- result = constraint.apply( value, self.untaint_all? )
734
+ result = constraint.apply( value )
758
735
 
759
736
  if !result.nil?
760
737
  self.log.debug " constraint for %p passed: %p" % [ constraint.name, result ]
@@ -976,7 +953,7 @@ class Strelka::ParamValidator
976
953
  ### Build a deep hash out of the given parameter +value+
977
954
  def build_deep_hash( value, hash, levels )
978
955
  if levels.length == 0
979
- value.untaint
956
+ value
980
957
  elsif hash.nil?
981
958
  { levels.first => build_deep_hash(value, nil, levels[1..-1]) }
982
959
  else
@@ -992,11 +969,11 @@ class Strelka::ParamValidator
992
969
  if main.nil?
993
970
  return []
994
971
  elsif trailing
995
- return [key.untaint]
972
+ return [key]
996
973
  elsif bracketed
997
- return [main.untaint] + bracketed.slice(1...-1).split('][').collect {|k| k.untaint }
974
+ return [main] + bracketed.slice(1...-1).split('][')
998
975
  else
999
- return [main.untaint]
976
+ return [main]
1000
977
  end
1001
978
  end
1002
979