sparoid 1.0.9 → 1.0.10

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: 3e5d9f60a2c48147b21a1bd2970f9b495b8f28d6627b3783e27870fd7572e87e
4
- data.tar.gz: 5448587233f343935ea5bd5ccc0484f24f852b90d129a0192627847b32c14032
3
+ metadata.gz: 864cabc794097c6a5f46cef69a72031f133d4bb1534193fce13319030ee09181
4
+ data.tar.gz: c5c7a75a8eea8eca65e29cea1e82f82aa16643d36a42dcbbceb7cf061d9755c1
5
5
  SHA512:
6
- metadata.gz: ba3a127fc5d7ec9cd6c5e859a467e65428a4597eb5069f32c06e69504aca2aeecdb7fcab691c781d07fd7c1c00df0dd04555780f51f5da7678626fa41bf87f33
7
- data.tar.gz: b7f356bb8018f0a653263103adbd22da116b4f0ea6bd03a646ecd43c3b61f79429b38e7597e20b9d0ea7401074f6043ad3fa9c122dda0a9af3ba0c285952201c
6
+ metadata.gz: 6bfe6cfcd4dd1ad2b4577eda01b6972b7c36f8f418d64b5bbc2966e5cfc3538a1cf647ec8389108c5ecfc082cd420bb5d3483d4ae9f4d76e9b62709e865e4683
7
+ data.tar.gz: 82e84fc4deb3251d6c6c270cf5404da15ab91746bfd9d8de3a7f62152e8cccffa30dd43da7a8157f2a10627cefae79cc4dea5160fabfec3c0005c46202568568
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.4
2
+ TargetRubyVersion: 2.5
3
3
  NewCops: enable
4
4
 
5
5
  Style/StringLiterals:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [1.0.10] - 2021-06-09
2
+
3
+ - Cache public IP in /tmp/.sparoid_public_ip for 1 min
4
+
1
5
  ## [1.0.9] - 2021-05-23
2
6
 
3
7
  - Exit gracefully on abort (ctrl-c) instead of dumping huge stacktrace
data/lib/sparoid.rb CHANGED
@@ -11,7 +11,7 @@ module Sparoid
11
11
 
12
12
  # Send an authorization packet
13
13
  def auth(key, hmac_key, host, port)
14
- msg = message(public_ip)
14
+ msg = message(cached_public_ip)
15
15
  data = prefix_hmac(hmac_key, encrypt(key, msg))
16
16
  sendmsg(host, port, data)
17
17
 
@@ -72,7 +72,27 @@ module Sparoid
72
72
  version = 1
73
73
  ts = (Time.now.utc.to_f * 1000).floor
74
74
  nounce = OpenSSL::Random.random_bytes(16)
75
- [version, ts, nounce, ip.address].pack("Nq>a16a4")
75
+ [version, ts, nounce, ip.address].pack("N q> a16 a4")
76
+ end
77
+
78
+ def cached_public_ip
79
+ File.open("/tmp/.sparoid_public_ip", "a+") do |f|
80
+ if f.size.zero? || (Time.now - f.mtime) > 60 # cache for 1min max
81
+ update_cache(f)
82
+ else
83
+ Resolv::IPv4.create f.read
84
+ end
85
+ end
86
+ rescue StandardError => e
87
+ warn "Sparoid: #{e.inspect}"
88
+ public_ip
89
+ end
90
+
91
+ def update_cache(file)
92
+ ip = public_ip
93
+ file.truncate(0)
94
+ file.write ip.to_s
95
+ ip
76
96
  end
77
97
 
78
98
  def public_ip
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sparoid
4
- VERSION = "1.0.9"
4
+ VERSION = "1.0.10"
5
5
  end
data/sparoid.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = "Single Packet Authorisation client"
12
12
  spec.homepage = "https://github.com/84codes/sparoid.rb"
13
13
  spec.license = "MIT"
14
- spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
14
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
15
15
 
16
16
  spec.metadata["homepage_uri"] = spec.homepage
17
17
  spec.metadata["source_code_uri"] = spec.homepage
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carl Hörberg
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-23 00:00:00.000000000 Z
11
+ date: 2021-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -62,7 +62,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
62
62
  requirements:
63
63
  - - ">="
64
64
  - !ruby/object:Gem::Version
65
- version: 2.4.0
65
+ version: 2.5.0
66
66
  required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - ">="