The "ends_with?" method is just a Rails alias of Ruby's "end_with?" method. Using the latter makes the code less brittle.
		
			
				
	
	
		
			26 lines
		
	
	
		
			656 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			656 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module ActionDispatch
 | 
						|
  module CookieJarExtensions
 | 
						|
    private
 | 
						|
 | 
						|
    # Monkey-patch ActionDispatch to serve secure cookies to Tor Hidden Service
 | 
						|
    # users. Otherwise, ActionDispatch would drop the cookie over HTTP.
 | 
						|
    def write_cookie?(*)
 | 
						|
      request.host.end_with?('.onion') || super
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
ActionDispatch::Cookies::CookieJar.prepend(ActionDispatch::CookieJarExtensions)
 | 
						|
 | 
						|
module Rack
 | 
						|
  module SessionPersistedExtensions
 | 
						|
    def security_matches?(request, options)
 | 
						|
      request.host.end_with?('.onion') || super
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
Rack::Session::Abstract::Persisted.prepend(Rack::SessionPersistedExtensions)
 |