content_signals 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9ed093dde88a6fad22c981c0dd3debb5e4ee40a870a85743799e996f73c9102c
4
- data.tar.gz: 9301e46cd13582be349e85c3aa23f89715d6ce7f482ffcc09b86237824fac290
3
+ metadata.gz: a782b20f01463f4cb0e163277c8653749ca4022b14aa368d52227169dcc5d511
4
+ data.tar.gz: 197127ee239f72e36a8d5e05d1252851055944a6b31694b5aece4f36925d5332
5
5
  SHA512:
6
- metadata.gz: 19e357aef9a4ee164906692045a9f486a62469862e77ee9c4eb85bfc058d37df12a69dfedd6ca8a7de95c9aa5cd7f2a531d0646555afc3c9cbf5384661839d70
7
- data.tar.gz: 7a256a72b81da8e30a93fe02b231627c652db1740fe8342ded551be019cfe06b0dfb9750c5653e5433930109cabc017879f3875655f4be3ae5319e0a403f3695
6
+ metadata.gz: 6c6b77da31a2ea19c19f71c5de4f89d65323e9addde6975ebb60234775661f7137909ad67fdd935edaa35742aadd673f28c3d393a04f9224571c01acc9d77c07
7
+ data.tar.gz: 6e8d7e596a23632e204858d9c40ec7f47219a6dadf218d0d54139ee0ebc337366f2f93058f52eb84432d1a7a1b5ffa92ad6b0292822395754e41e009069a5b8f
@@ -98,7 +98,7 @@ module ContentSignals
98
98
  {
99
99
  tenant_id: current_tenant_id,
100
100
  visitor_id: @visitor_id,
101
- ip_address: @request.remote_ip,
101
+ ip_address: resolve_client_ip,
102
102
  user_agent: @request.user_agent,
103
103
  referrer: @request.referrer,
104
104
  locale: detect_locale,
@@ -150,6 +150,22 @@ module ContentSignals
150
150
  nil
151
151
  end
152
152
 
153
+ def resolve_client_ip
154
+ # Prefer X-Real-IP (set by reverse proxies like Caddy/Nginx) over
155
+ # remote_ip which may still contain an internal proxy IP when
156
+ # kamal-proxy overwrites X-Forwarded-For.
157
+ real_ip = @request.headers['X-Real-IP']
158
+ return real_ip if real_ip.present? && !private_ip?(real_ip)
159
+
160
+ @request.remote_ip
161
+ end
162
+
163
+ def private_ip?(ip)
164
+ IPAddr.new(ip).private?
165
+ rescue IPAddr::InvalidAddressError
166
+ false
167
+ end
168
+
153
169
  def redis_enabled?
154
170
  ContentSignals.configuration.redis_enabled? && Rails.cache.respond_to?(:redis)
155
171
  rescue
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ContentSignals
4
- VERSION = "0.1.8"
4
+ VERSION = "0.1.9"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: content_signals
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ionuț Munteanu Alexandru