Files
docuseal/lib/normalize_client_ip_middleware.rb
Pete Matsyburka b7045fb3d9 fix azure proxy
2026-01-31 13:07:42 +02:00

24 lines
587 B
Ruby

# frozen_string_literal: true
class NormalizeClientIpMiddleware
def initialize(app)
@app = app
end
def call(env)
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'] = env['HTTP_X_CLIENT_IP']
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)
end
end