module Rack::TrafficSignal

Constants

VERSION

Public Class Methods

config() click to toggle source
# File lib/rack/traffic_signal.rb, line 13
def self.config
  @config ||= Config.new
end
has_secret_word?(env) click to toggle source
# File lib/rack/traffic_signal.rb, line 32
def self.has_secret_word?(env)
  env.fetch('HTTP_X_RACK_TRAFFIC_SIGNAL_SECRET', nil) == config.secret_word
end
internal_access?(env) click to toggle source
# File lib/rack/traffic_signal.rb, line 25
def self.internal_access?(env)
  remote_ip = IPAddress(request_from(env))
  config.internal_ips
    .map { |internal_ip| IPAddress(internal_ip) }
    .any? { |internal_ip| internal_ip.include?(remote_ip) if remote_ip.class == internal_ip.class }
end
setup() { |config| ... } click to toggle source
# File lib/rack/traffic_signal.rb, line 9
def self.setup
  yield(config)
end
skip?(env) click to toggle source
# File lib/rack/traffic_signal.rb, line 17
def self.skip?(env)
  config.skip_proc.call(env)
end
skip_path?(env) click to toggle source
# File lib/rack/traffic_signal.rb, line 36
def self.skip_path?(env)
  path = env['PATH_INFO']
  path = path.chop if path[-1] == '/'
  config.skip_paths.any? do |skip_path|
    if skip_path.is_a? Regexp
      path.match(skip_path)
    elsif skip_path.is_a? String
      path == skip_path
    else
      false
    end
  end
end
skip_with_warning?(env) click to toggle source
# File lib/rack/traffic_signal.rb, line 21
def self.skip_with_warning?(env)
  config.skip_with_warning_proc.call(env)
end

Private Class Methods

request_from(env) click to toggle source
# File lib/rack/traffic_signal.rb, line 51
def self.request_from(env)
  return env['REMOTE_ADDR'] unless env['HTTP_X_FORWARDED_FOR']
  env['HTTP_X_FORWARDED_FOR'].split(/,/)[0].strip
end