Simplify private IP range checking by extracting helper functions:
- is_private_ip?: Check if IP is in private ranges
- is_172_private_range?: Properly check 172.16.0.0/12 range
This replaces 20+ String.starts_with? checks with intelligent range parsing.
Co-Authored-By: Graham <noreply@anthropic.com>
- Updated IP geolocation to check CF-Connecting-IP header first
- Added support for X-Real-IP header as additional fallback
- Updated rate limiter to use same header priority for consistency
- Headers checked in order: CF-Connecting-IP > X-Forwarded-For > X-Real-IP > remote_ip
This ensures proper client IP detection when the site is behind Cloudflare.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>