class Wifidiag::App
Constants
- CONTEXT_RACK_ENV_NAME
- TRUSTED_IPS
Public Class Methods
initialize_context(config)
click to toggle source
# File lib/wifidiag/app.rb, line 18 def self.initialize_context(config) { config: config, revision: self.revision(), } end
rack(config={})
click to toggle source
# File lib/wifidiag/app.rb, line 34 def self.rack(config={}) klass = App context = initialize_context(config) app = lambda { |env| env[CONTEXT_RACK_ENV_NAME] = context klass.call(env) } end
revision()
click to toggle source
# File lib/wifidiag/app.rb, line 25 def self.revision path = File.join(__dir__, '..', '..', 'REVISION') if File.exist?(path) File.read(path).chomp else nil end end
Public Instance Methods
client_ip()
click to toggle source
# File lib/wifidiag/app.rb, line 62 def client_ip return conf[:dummy_ip] if conf[:dummy_ip] @client_ip ||= begin remote_addrs = request.get_header('REMOTE_ADDR')&.split(/,\s*/) filtered_remote_addrs = remote_addrs.grep_v(TRUSTED_IPS) if filtered_remote_addrs.empty? && request.get_header('HTTP_X_FORWARDED_FOR') forwarded_ips = request.get_header('HTTP_X_FORWARDED_FOR')&.split(/,\s*/) filtered_forwarded_ips = forwarded_ips.grep_v(TRUSTED_IPS) filtered_forwarded_ips.empty? ? forwarded_ips.first : remote_addrs.first else filtered_remote_addrs.first || remote_addrs.first end end end
collector()
click to toggle source
# File lib/wifidiag/app.rb, line 53 def collector conf.collector end
conf()
click to toggle source
# File lib/wifidiag/app.rb, line 49 def conf context[:config] end
context()
click to toggle source
# File lib/wifidiag/app.rb, line 45 def context request.env[CONTEXT_RACK_ENV_NAME] end
data()
click to toggle source
# File lib/wifidiag/app.rb, line 79 def data begin @data = JSON.parse(request.body.tap(&:rewind).read) rescue JSON::ParserError halt 400, '{"error": "invalid_payload"}' end end
revision()
click to toggle source
# File lib/wifidiag/app.rb, line 57 def revision context[:revision] end