sparoid 2.1.2 → 2.2.0
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/sparoid/version.rb +1 -1
- data/lib/sparoid.rb +10 -5
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d077c30ec18d566719f9d594991798d8ecd94ac74938d5f5b21fb37a677066ca
|
|
4
|
+
data.tar.gz: b5f44ce465c4705dfdf5a0c705ad29603744be2145a831cd9c000be0ebb03ea0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e937c061cacbadf3206cffc1d96eb4f99dd667ce8daf1becb91db2eba8aa3893384dd31a59924acc255c11e39bd0aad3ebed7b5e29430c92356e3c54162d2d1b
|
|
7
|
+
data.tar.gz: 5ee4e40eef7d12ee5e052ca92452bdae45814f81260d10e35339710255eec8b8cd207fcba2cd31af73a35b50344a2d224cb5f237ce8c6a498b94b7c61249b61e
|
data/CHANGELOG.md
CHANGED
data/lib/sparoid/version.rb
CHANGED
data/lib/sparoid.rb
CHANGED
|
@@ -22,20 +22,27 @@ module Sparoid # rubocop:disable Metrics/ModuleLength
|
|
|
22
22
|
# Send an authorization packet
|
|
23
23
|
def auth(key, hmac_key, host, port, open_for_ip: nil)
|
|
24
24
|
addrs = resolve_ip_addresses(host, port)
|
|
25
|
-
|
|
25
|
+
errors = []
|
|
26
|
+
successful_addrs = addrs.filter_map do |addr|
|
|
26
27
|
messages = generate_messages(open_for_ip)
|
|
27
28
|
data = messages.map do |message|
|
|
28
29
|
prefix_hmac(hmac_key, encrypt(key, message))
|
|
29
30
|
end
|
|
30
31
|
sendmsg(addr, data)
|
|
32
|
+
addr
|
|
33
|
+
rescue SystemCallError => e
|
|
34
|
+
errors << "#{addr.ip_address}: #{e.message}"
|
|
35
|
+
nil
|
|
31
36
|
end
|
|
32
37
|
|
|
38
|
+
raise Error, "Sparoid failed to send to any address for #{host}: #{errors.join("; ")}" if successful_addrs.empty?
|
|
39
|
+
|
|
33
40
|
# wait some time for the server to actually open the port
|
|
34
41
|
# if we don't wait the next SYN package will be dropped
|
|
35
42
|
# and it have to be redelivered, adding 1 second delay
|
|
36
43
|
sleep 0.02
|
|
37
44
|
|
|
38
|
-
|
|
45
|
+
successful_addrs
|
|
39
46
|
end
|
|
40
47
|
|
|
41
48
|
# Generate new aes and hmac keys, print to stdout
|
|
@@ -105,11 +112,9 @@ module Sparoid # rubocop:disable Metrics/ModuleLength
|
|
|
105
112
|
socket.nonblock = false
|
|
106
113
|
data.each do |packet|
|
|
107
114
|
socket.sendmsg packet, 0, addr
|
|
108
|
-
rescue StandardError => e
|
|
109
|
-
warn "Sparoid error: #{e.message}"
|
|
110
115
|
end
|
|
111
116
|
ensure
|
|
112
|
-
socket
|
|
117
|
+
socket&.close
|
|
113
118
|
end
|
|
114
119
|
|
|
115
120
|
def encrypt(key, data)
|