legion-settings 1.3.20 → 1.3.21

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: beeec634e807f88a6a10a9076a258efedc233d5cfe0412be24d96f01f2b9be35
4
- data.tar.gz: be84692b4242373941f10ee92dd0ed86df689d805283a6cd4e14879f7cd2a907
3
+ metadata.gz: 24640e14063c9f922ecb738b9cb1fc9fea8599dd2e721263aa6bbe940be65f3c
4
+ data.tar.gz: cf387ebcb1d7f6d7b52427dcc1283b7bbee9895f35be05cc7dffb63e1db3c367
5
5
  SHA512:
6
- metadata.gz: 7f9f4ed4728098aeeb92e1925d3465e89d05d30d8ee01ae030fd1424b483d7c31b67f423659b63e7f44bd01dabc28aad1906db8148c3576ebacf73d2667491bd
7
- data.tar.gz: 247ed6734058a5ef16cd76ab37e7e620b8794d4fa60d6b7d561f616eef1030a1b461f71c65a987f1cc5223387df45e0eaf54105ec16ea9529355e772a9d3e930
6
+ metadata.gz: 2a672dd08c5af2adacc95c7b47c8dc8c279c49c6a212c11a02663eb42c1624b232c509b180af753b06e963fa7998c2e831ee86644d834bcaa0145e2f53794b03
7
+ data.tar.gz: 5e7683ce7fd420785dc3d011410de328efeaa5df79ccfed19c2549e9b071dfcb4fa2b57b30245b4c4b5d513c6cc6da4205a67097332a812b998e3e26676a446a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Legion::Settings Changelog
2
2
 
3
+ ## [1.3.21] - 2026-03-27
4
+
5
+ ### Fixed
6
+ - Prefer RFC-1918 private addresses over CGNAT (100.64.0.0/10) in client IP detection
7
+
3
8
  ## [1.3.20] - 2026-03-27
4
9
 
5
10
  ### Fixed
@@ -384,14 +384,20 @@ module Legion
384
384
  end
385
385
 
386
386
  def system_address
387
- Socket.ip_address_list.find do |address|
388
- address.ipv4? && !address.ipv4_loopback?
389
- end.ip_address
387
+ addresses = Socket.ip_address_list.select { |a| a.ipv4? && !a.ipv4_loopback? }
388
+ preferred = addresses.find { |a| rfc1918?(a.ip_address) }
389
+ (preferred || addresses.first)&.ip_address || 'unknown'
390
390
  rescue StandardError => e
391
391
  Legion::Logging.debug("Legion::Settings::Loader#system_address failed: #{e.message}") if defined?(Legion::Logging)
392
392
  'unknown'
393
393
  end
394
394
 
395
+ def rfc1918?(ip)
396
+ ip.start_with?('10.') ||
397
+ ip.match?(/\A172\.(1[6-9]|2\d|3[01])\./) ||
398
+ ip.start_with?('192.168.')
399
+ end
400
+
395
401
  def log_info(message)
396
402
  defined?(Legion::Logging) ? Legion::Logging.info(message) : $stdout.puts(message)
397
403
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module Settings
5
- VERSION = '1.3.20'
5
+ VERSION = '1.3.21'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-settings
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.20
4
+ version: 1.3.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity