|
|
|
@ -6,11 +6,18 @@ class NormalizeClientIpMiddleware
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
def call(env)
|
|
|
|
def call(env)
|
|
|
|
if env['HTTP_CLIENT_IP'].present? && env['HTTP_X_CLIENT_IP'].present? &&
|
|
|
|
if env['HTTP_CLIENT_IP'].present?
|
|
|
|
|
|
|
|
if env['HTTP_X_CLIENT_IP'].present? &&
|
|
|
|
env['HTTP_CLIENT_IP'].starts_with?("#{env['HTTP_X_CLIENT_IP']}:")
|
|
|
|
env['HTTP_CLIENT_IP'].starts_with?("#{env['HTTP_X_CLIENT_IP']}:")
|
|
|
|
env['HTTP_CLIENT_IP'] = env['HTTP_X_CLIENT_IP']
|
|
|
|
env['HTTP_CLIENT_IP'] = env['HTTP_X_CLIENT_IP']
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if env['HTTP_X_FORWARDED_FOR'].present? &&
|
|
|
|
|
|
|
|
env['HTTP_X_FORWARDED_FOR'].sub(/:\d+\z/, '') == env['HTTP_CLIENT_IP']
|
|
|
|
|
|
|
|
env['HTTP_X_FORWARDED_FOR'] = env['HTTP_CLIENT_IP']
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
@app.call(env)
|
|
|
|
@app.call(env)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|