sparoid 1.0.9 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
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
  - - ">="