net-ssh 2.9.2.beta → 2.9.2.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGES.txt +4 -0
- data/Rakefile +8 -1
- data/lib/net/ssh.rb +8 -4
- data/lib/net/ssh/connection/channel.rb +1 -1
- data/lib/net/ssh/connection/keepalive.rb +24 -17
- data/lib/net/ssh/connection/session.rb +8 -5
- data/lib/net/ssh/version.rb +1 -1
- data/net-ssh.gemspec +4 -4
- metadata +3 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de2e4d03d9a33f009679b7da843529f74cfb49cf
|
4
|
+
data.tar.gz: 9e9d79e59836127851a007d06b315037784d1fd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c94eb4321f98a3e218818a44dc34c0b9444a7afbdcbd6f766ff73cb1882c2d748a5f39e73091be305a9a24a4aae90da23205bffff9a1a45053d3763bca65e252
|
7
|
+
data.tar.gz: c53db580ff1bc9ec76bc953aaabaa22aba4c65edec20bb82425a4aef4cc1388c3690775aa8d339c217ff6c690a8988dd637653a49c1f365434494e84a91717e3
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGES.txt
CHANGED
data/Rakefile
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# coding: UTF-8
|
2
|
+
#
|
3
|
+
# Also in your terminal environment run:
|
4
|
+
# $ export LANG=en_US.UTF-8
|
5
|
+
# $ export LANGUAGE=en_US.UTF-8
|
6
|
+
# $ export LC_ALL=en_US.UTF-8
|
7
|
+
|
1
8
|
require "rubygems"
|
2
9
|
require "rake"
|
3
10
|
require "rake/clean"
|
@@ -21,7 +28,7 @@ begin
|
|
21
28
|
s.description = s.summary + " It allows you to write programs that invoke and interact with processes on remote servers, via SSH2."
|
22
29
|
s.email = "net-ssh@solutious.com"
|
23
30
|
s.homepage = "https://github.com/net-ssh/net-ssh"
|
24
|
-
s.authors = ["Jamis Buck", "Delano Mandelbaum"]
|
31
|
+
s.authors = ["Jamis Buck", "Delano Mandelbaum", "Miklós Fazekas"]
|
25
32
|
|
26
33
|
# Note: this is run at package time not install time so if you are
|
27
34
|
# running on jruby, you need to install jruby-pageant manually.
|
data/lib/net/ssh.rb
CHANGED
@@ -125,12 +125,12 @@ module Net
|
|
125
125
|
# specified in an SSH configuration file. It lets you specify an
|
126
126
|
# "alias", similarly to adding an entry in /etc/hosts but without needing
|
127
127
|
# to modify /etc/hosts.
|
128
|
-
#
|
128
|
+
# * :keepalive => set to +true+ to send a keepalive packet to the SSH server
|
129
129
|
# when there's no traffic between the SSH server and Net::SSH client for
|
130
130
|
# the keepalive_interval seconds. Defaults to +false+.
|
131
|
-
#
|
131
|
+
# * :keepalive_interval => the interval seconds for keepalive.
|
132
132
|
# Defaults to +300+ seconds.
|
133
|
-
#
|
133
|
+
# * :keepalive_maxcount => the maximun number of keepalive packet miss allowed.
|
134
134
|
# * :kex => the key exchange algorithm (or algorithms) to use
|
135
135
|
# * :keys => an array of file names of private keys to use for publickey
|
136
136
|
# and hostbased authentication
|
@@ -147,7 +147,11 @@ module Net
|
|
147
147
|
# * :max_win_size => maximum size we tell the other side that is supported for
|
148
148
|
# the window.
|
149
149
|
# * :paranoid => either false, true, :very, or :secure specifying how
|
150
|
-
# strict host-key verification should be (in increasing order here)
|
150
|
+
# strict host-key verification should be (in increasing order here).
|
151
|
+
# You can also provide an own Object which responds to +verify+. The argument
|
152
|
+
# given to +verify+ is a hash consisting of the +:key+, the +:key_blob+,
|
153
|
+
# the +:fingerprint+ and the +:session+. Returning true accepts the host key,
|
154
|
+
# returning false declines it and closes the connection.
|
151
155
|
# * :passphrase => the passphrase to use when loading a private key (default
|
152
156
|
# is +nil+, for no passphrase)
|
153
157
|
# * :password => the password to use to login
|
@@ -523,7 +523,7 @@ module Net; module SSH; module Connection
|
|
523
523
|
@on_open_failed.call(self, reason_code, description)
|
524
524
|
else
|
525
525
|
raise ChannelOpenFailed.new(reason_code, description)
|
526
|
-
end
|
526
|
+
end
|
527
527
|
end
|
528
528
|
|
529
529
|
# Invoked when the server sends a CHANNEL_WINDOW_ADJUST packet, and
|
@@ -1,48 +1,55 @@
|
|
1
|
+
require 'net/ssh/loggable'
|
1
2
|
module Net; module SSH; module Connection
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
DEFAULT_IO_SELECT_TIMEOUT = 300
|
4
|
+
class Keepalive
|
5
|
+
include Loggable
|
6
6
|
|
7
|
-
def
|
7
|
+
def initialize(session)
|
8
8
|
@last_keepalive_sent_at = nil
|
9
9
|
@unresponded_keepalive_count = 0
|
10
|
+
@session = session
|
11
|
+
self.logger = session.logger
|
10
12
|
end
|
11
13
|
|
12
|
-
def
|
14
|
+
def options
|
15
|
+
@session.options
|
16
|
+
end
|
17
|
+
|
18
|
+
def enabled?
|
13
19
|
options[:keepalive]
|
14
20
|
end
|
15
21
|
|
16
|
-
def
|
17
|
-
options[:keepalive_interval] || DEFAULT_IO_SELECT_TIMEOUT
|
22
|
+
def interval
|
23
|
+
options[:keepalive_interval] || Session::DEFAULT_IO_SELECT_TIMEOUT
|
18
24
|
end
|
19
25
|
|
20
|
-
def
|
21
|
-
return false unless
|
26
|
+
def should_send?
|
27
|
+
return false unless enabled?
|
22
28
|
return true unless @last_keepalive_sent_at
|
23
|
-
Time.now - @last_keepalive_sent_at >=
|
29
|
+
Time.now - @last_keepalive_sent_at >= interval
|
24
30
|
end
|
25
31
|
|
26
32
|
def keepalive_maxcount
|
27
33
|
(options[:keepalive_maxcount] || 3).to_i
|
28
34
|
end
|
29
35
|
|
30
|
-
def
|
36
|
+
def send_as_needed(readers, writers)
|
31
37
|
return unless readers.nil? && writers.nil?
|
32
|
-
return unless
|
38
|
+
return unless should_send?
|
33
39
|
info { "sending keepalive #{@unresponded_keepalive_count}" }
|
34
40
|
|
35
41
|
@unresponded_keepalive_count += 1
|
36
|
-
send_global_request("keepalive@openssh.com") { |success, response|
|
37
|
-
|
42
|
+
@session.send_global_request("keepalive@openssh.com") { |success, response|
|
43
|
+
debug { "keepalive response successful. Missed #{@unresponded_keepalive_count-1} keepalives" }
|
38
44
|
@unresponded_keepalive_count = 0
|
39
45
|
}
|
40
46
|
@last_keepalive_sent_at = Time.now
|
41
47
|
if keepalive_maxcount > 0 && @unresponded_keepalive_count > keepalive_maxcount
|
42
|
-
error { "Timeout, server #{host} not responding. Missed #{@unresponded_keepalive_count-1} timeouts." }
|
43
|
-
|
48
|
+
error { "Timeout, server #{@session.host} not responding. Missed #{@unresponded_keepalive_count-1} timeouts." }
|
49
|
+
@unresponded_keepalive_count = 0
|
50
|
+
raise Net::SSH::Timeout, "Timeout, server #{@session.host} not responding."
|
44
51
|
end
|
45
52
|
end
|
46
53
|
end
|
47
54
|
|
48
|
-
end; end; end
|
55
|
+
end; end; end
|
@@ -24,7 +24,10 @@ module Net; module SSH; module Connection
|
|
24
24
|
# ssh.exec! "/etc/init.d/some_process start"
|
25
25
|
# end
|
26
26
|
class Session
|
27
|
-
include Constants, Loggable
|
27
|
+
include Constants, Loggable
|
28
|
+
|
29
|
+
# Default IO.select timeout threshold
|
30
|
+
DEFAULT_IO_SELECT_TIMEOUT = 300
|
28
31
|
|
29
32
|
# The underlying transport layer abstraction (see Net::SSH::Transport::Session).
|
30
33
|
attr_reader :transport
|
@@ -77,7 +80,7 @@ module Net; module SSH; module Connection
|
|
77
80
|
@max_pkt_size = (options.has_key?(:max_pkt_size) ? options[:max_pkt_size] : 0x8000)
|
78
81
|
@max_win_size = (options.has_key?(:max_win_size) ? options[:max_win_size] : 0x20000)
|
79
82
|
|
80
|
-
|
83
|
+
@keepalive = Keepalive.new(self)
|
81
84
|
end
|
82
85
|
|
83
86
|
# Retrieves a custom property from this instance. This can be used to
|
@@ -242,7 +245,7 @@ module Net; module SSH; module Connection
|
|
242
245
|
writer.send_pending
|
243
246
|
end
|
244
247
|
|
245
|
-
|
248
|
+
@keepalive.send_as_needed(readers, writers)
|
246
249
|
transport.rekey_as_needed
|
247
250
|
|
248
251
|
return true
|
@@ -596,8 +599,8 @@ module Net; module SSH; module Connection
|
|
596
599
|
|
597
600
|
def io_select_wait(wait)
|
598
601
|
return wait if wait
|
599
|
-
return wait unless
|
600
|
-
|
602
|
+
return wait unless @keepalive.enabled?
|
603
|
+
@keepalive.interval
|
601
604
|
end
|
602
605
|
|
603
606
|
MAP = Constants.constants.inject({}) do |memo, name|
|
data/lib/net/ssh/version.rb
CHANGED
@@ -55,7 +55,7 @@ module Net; module SSH
|
|
55
55
|
|
56
56
|
# The prerelease component of this version of the Net::SSH library
|
57
57
|
# nil allowed
|
58
|
-
PRE = "
|
58
|
+
PRE = "rc1"
|
59
59
|
|
60
60
|
# The current version of the Net::SSH library as a Version instance
|
61
61
|
CURRENT = new(*[MAJOR, MINOR, TINY, PRE].compact)
|
data/net-ssh.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: net-ssh 2.9.2.
|
5
|
+
# stub: net-ssh 2.9.2.rc1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "net-ssh"
|
9
|
-
s.version = "2.9.2.
|
9
|
+
s.version = "2.9.2.rc1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
|
-
s.authors = ["Jamis Buck", "Delano Mandelbaum"]
|
13
|
+
s.authors = ["Jamis Buck", "Delano Mandelbaum", "Mikl\u{f3}s Fazekas"]
|
14
14
|
s.cert_chain = ["net-ssh-public_cert.pem"]
|
15
|
-
s.date = "2014-12-
|
15
|
+
s.date = "2014-12-24"
|
16
16
|
s.description = "Net::SSH: a pure-Ruby implementation of the SSH2 client protocol. It allows you to write programs that invoke and interact with processes on remote servers, via SSH2."
|
17
17
|
s.email = "net-ssh@solutious.com"
|
18
18
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-ssh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.9.2.
|
4
|
+
version: 2.9.2.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamis Buck
|
8
8
|
- Delano Mandelbaum
|
9
|
+
- Miklós Fazekas
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain:
|
@@ -30,7 +31,7 @@ cert_chain:
|
|
30
31
|
MbvRpzgROzyfw1qYi4dnIyMwTtXFFcZ0a2jpxHPkcTYFK6TzvFgDLAP0Y/u9jqUQ
|
31
32
|
eZ7/3CdSi/isZHEw
|
32
33
|
-----END CERTIFICATE-----
|
33
|
-
date: 2014-12-
|
34
|
+
date: 2014-12-24 00:00:00.000000000 Z
|
34
35
|
dependencies:
|
35
36
|
- !ruby/object:Gem::Dependency
|
36
37
|
name: test-unit
|
metadata.gz.sig
CHANGED
Binary file
|