net-ntp 2.1.1 → 2.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/net/ntp/ntp.rb +24 -14
- data/lib/net/ntp/version.rb +1 -1
- metadata +25 -45
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8bbc7ec55a142eb7a087a849c5ad9c0c918f864c
|
4
|
+
data.tar.gz: 42cbee4bfc9aa3e62d4306982d29f782639d53f1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a6c4fda6c182d1dfa46a26b95a61cb5a68aab34ae634ed1fe2bb1e5ec56e5afe05f37827e07c56076f6cfd7ef4c7e340e231c522964347b5ae9dbf9651c7bdb9
|
7
|
+
data.tar.gz: 1afe43476aae8eb8336ef31c55a9b4ae0f4c91a06cd1f2098c63d0f98936a27597284f2740a9cc77322438d7442bca25cb7c6174371565f2536455371a8c6e52
|
data/lib/net/ntp/ntp.rb
CHANGED
@@ -67,8 +67,7 @@ module Net #:nodoc:
|
|
67
67
|
sock = UDPSocket.new
|
68
68
|
sock.connect(host, port)
|
69
69
|
|
70
|
-
|
71
|
-
client_localtime = client_time_send
|
70
|
+
client_localtime = Time.now.to_f
|
72
71
|
client_adj_localtime = client_localtime + NTP_ADJ
|
73
72
|
client_frac_localtime = frac2bin(client_adj_localtime)
|
74
73
|
|
@@ -77,12 +76,16 @@ module Net #:nodoc:
|
|
77
76
|
sock.print ntp_msg
|
78
77
|
sock.flush
|
79
78
|
|
80
|
-
|
81
|
-
|
82
|
-
|
79
|
+
read, write, error = IO.select [sock], nil, nil, timeout
|
80
|
+
if read[0]
|
81
|
+
client_time_receive = Time.now.to_f
|
82
|
+
data, _ = sock.recvfrom(960)
|
83
|
+
Response.new(data, client_time_receive)
|
84
|
+
else
|
85
|
+
# For backwards compatibility we throw a Timeout error, even
|
86
|
+
# though the timeout is being controlled by select()
|
87
|
+
raise Timeout::Error
|
83
88
|
end
|
84
|
-
|
85
|
-
Response.new(data)
|
86
89
|
end
|
87
90
|
|
88
91
|
def self.frac2bin(frac) #:nodoc:
|
@@ -98,14 +101,17 @@ module Net #:nodoc:
|
|
98
101
|
private_class_method :frac2bin
|
99
102
|
|
100
103
|
class Response
|
101
|
-
|
104
|
+
|
105
|
+
attr_reader :client_time_receive
|
106
|
+
|
107
|
+
def initialize(raw_data, client_time_receive)
|
102
108
|
@raw_data = raw_data
|
103
|
-
@client_time_receive =
|
109
|
+
@client_time_receive = client_time_receive
|
104
110
|
@packet_data_by_field = nil
|
105
111
|
end
|
106
112
|
|
107
113
|
def leap_indicator
|
108
|
-
@leap_indicator ||= (packet_data_by_field[:byte1]
|
114
|
+
@leap_indicator ||= (packet_data_by_field[:byte1].bytes.first & 0xC0) >> 6
|
109
115
|
end
|
110
116
|
|
111
117
|
def leap_indicator_text
|
@@ -113,11 +119,11 @@ module Net #:nodoc:
|
|
113
119
|
end
|
114
120
|
|
115
121
|
def version_number
|
116
|
-
@version_number ||= (packet_data_by_field[:byte1]
|
122
|
+
@version_number ||= (packet_data_by_field[:byte1].bytes.first & 0x38) >> 3
|
117
123
|
end
|
118
124
|
|
119
125
|
def mode
|
120
|
-
@mode ||= (packet_data_by_field[:byte1]
|
126
|
+
@mode ||= (packet_data_by_field[:byte1].bytes.first & 0x07)
|
121
127
|
end
|
122
128
|
|
123
129
|
def mode_text
|
@@ -176,12 +182,16 @@ module Net #:nodoc:
|
|
176
182
|
@time ||= Time.at(receive_timestamp)
|
177
183
|
end
|
178
184
|
|
185
|
+
# As described in http://tools.ietf.org/html/rfc958
|
186
|
+
def offset
|
187
|
+
@offset ||= (receive_timestamp - originate_timestamp + transmit_timestamp - client_time_receive) / 2.0
|
188
|
+
end
|
179
189
|
|
180
190
|
protected
|
181
191
|
|
182
192
|
def packet_data_by_field #:nodoc:
|
183
193
|
if !@packet_data_by_field
|
184
|
-
@packetdata = @raw_data.unpack("a C3 n B16 n B16 H8 N B32 N B32 N B32 N B32")
|
194
|
+
@packetdata = @raw_data.unpack("a C3 n B16 n B16 H8 N B32 N B32 N B32 N B32")
|
185
195
|
@packet_data_by_field = {}
|
186
196
|
NTP_FIELDS.each do |field|
|
187
197
|
@packet_data_by_field[field] = @packetdata.shift
|
@@ -203,7 +213,7 @@ module Net #:nodoc:
|
|
203
213
|
|
204
214
|
def unpack_ip(stratum, tmp_ip) #:nodoc:
|
205
215
|
if stratum < 2
|
206
|
-
[tmp_ip].pack("H8").unpack("A4")
|
216
|
+
[tmp_ip].pack("H8").unpack("A4").bytes.first
|
207
217
|
else
|
208
218
|
ipbytes = [tmp_ip].pack("H8").unpack("C4")
|
209
219
|
sprintf("%d.%d.%d.%d", ipbytes[0], ipbytes[1], ipbytes[2], ipbytes[3])
|
data/lib/net/ntp/version.rb
CHANGED
metadata
CHANGED
@@ -1,74 +1,54 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-ntp
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 2
|
8
|
-
- 1
|
9
|
-
- 1
|
10
|
-
version: 2.1.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.1.2
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Jerome Waibel
|
14
8
|
- Nathan Sutton
|
15
9
|
- Brandon Arbini
|
16
10
|
autorequire:
|
17
11
|
bindir: bin
|
18
12
|
cert_chain: []
|
19
|
-
|
20
|
-
date: 2012-04-23 00:00:00 Z
|
13
|
+
date: 2014-04-19 00:00:00.000000000 Z
|
21
14
|
dependencies: []
|
22
|
-
|
23
|
-
|
24
|
-
|
15
|
+
description: This project was a rubyfied version of perl's Net::NTP module, (C) 2004
|
16
|
+
by James G. Willmore. It provides a method to query an NTP server as specified in
|
17
|
+
RFC1305 and RFC2030. Updated and re-released in 2010 by Zencoder.
|
18
|
+
email:
|
25
19
|
- nate@zencoder.com
|
26
20
|
- brandon@zencoder.com
|
27
21
|
executables: []
|
28
|
-
|
29
22
|
extensions: []
|
30
|
-
|
31
23
|
extra_rdoc_files: []
|
32
|
-
|
33
|
-
files:
|
34
|
-
- lib/net/ntp/ntp.rb
|
35
|
-
- lib/net/ntp/version.rb
|
36
|
-
- lib/net/ntp.rb
|
24
|
+
files:
|
37
25
|
- LICENSE
|
38
26
|
- README.markdown
|
39
27
|
- Rakefile
|
28
|
+
- lib/net/ntp.rb
|
29
|
+
- lib/net/ntp/ntp.rb
|
30
|
+
- lib/net/ntp/version.rb
|
40
31
|
homepage: http://github.com/zencoder/net-ntp
|
41
32
|
licenses: []
|
42
|
-
|
33
|
+
metadata: {}
|
43
34
|
post_install_message:
|
44
35
|
rdoc_options: []
|
45
|
-
|
46
|
-
require_paths:
|
36
|
+
require_paths:
|
47
37
|
- lib
|
48
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
-
|
50
|
-
requirements:
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
51
40
|
- - ">="
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
version: "0"
|
57
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
|
-
requirements:
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
60
45
|
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
|
63
|
-
segments:
|
64
|
-
- 0
|
65
|
-
version: "0"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
66
48
|
requirements: []
|
67
|
-
|
68
49
|
rubyforge_project:
|
69
|
-
rubygems_version:
|
50
|
+
rubygems_version: 2.2.2
|
70
51
|
signing_key:
|
71
|
-
specification_version:
|
52
|
+
specification_version: 4
|
72
53
|
summary: NTP client for ruby.
|
73
54
|
test_files: []
|
74
|
-
|