net-ssh-xlogin 0.2.1 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -1
- data/lib/net/ssh/xlogin.rb +18 -5
- data/lib/net/ssh/xlogin/connection.rb +7 -0
- data/lib/net/ssh/xlogin/factory.rb +21 -3
- data/lib/net/ssh/xlogin/version.rb +1 -1
- data/net-ssh-xlogin.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15d61a3ec730381d2aadb63e7e851f0a7283e77d1c1f85090da0df6326afa08f
|
4
|
+
data.tar.gz: 853834013e2eb4ad2e9dc044154909b1eadf623a26819f34cda372bba8eb331b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9cabc5560fe8d30df14e3c6874ea6b8c9f0af7729eecae49c2c9d82b3469251bcc9b2e0ab9cffb04dff3a2b91507e2eb9607148d0ae2be8d789f0a2d4d9ace9
|
7
|
+
data.tar.gz: 2a52e09b5ccf156b0f95e7c1e8895a666bfb1169c4d06eab3fa7c4efc4b33a41e03b77e0549f29ba9ec5982da6433ce940632ac85fdf2ba3544892052ee51cc6
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
net-ssh-xlogin (0.2.
|
4
|
+
net-ssh-xlogin (0.2.6)
|
5
5
|
bcrypt_pbkdf
|
6
6
|
ed25519
|
7
7
|
net-ssh
|
8
|
+
net-ssh-gateway
|
8
9
|
net-ssh-telnet
|
9
10
|
|
10
11
|
GEM
|
@@ -13,6 +14,8 @@ GEM
|
|
13
14
|
bcrypt_pbkdf (1.0.1)
|
14
15
|
ed25519 (1.2.4)
|
15
16
|
net-ssh (5.2.0)
|
17
|
+
net-ssh-gateway (2.0.0)
|
18
|
+
net-ssh (>= 4.0.0)
|
16
19
|
net-ssh-telnet (0.2.1)
|
17
20
|
net-ssh (>= 2.0.1)
|
18
21
|
rake (10.5.0)
|
data/lib/net/ssh/xlogin.rb
CHANGED
@@ -7,11 +7,24 @@ require 'net/ssh/xlogin/template'
|
|
7
7
|
module Net::SSH::Xlogin
|
8
8
|
class Error < StandardError; end
|
9
9
|
class << self
|
10
|
-
def get(name, **opts)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
def get(name, **opts, &block)
|
11
|
+
begin
|
12
|
+
opts = factory.inventory[name].merge(opts)
|
13
|
+
type = opts[:type]
|
14
|
+
template = factory.templates[type]
|
15
|
+
session = template.build(name, **opts)
|
16
|
+
|
17
|
+
return session unless block
|
18
|
+
yield session
|
19
|
+
rescue => err
|
20
|
+
raise Error.new(err)
|
21
|
+
ensure
|
22
|
+
session.close rescue nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def list(**query)
|
27
|
+
factory.query(query)
|
15
28
|
end
|
16
29
|
|
17
30
|
def configure(&block)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'net/ssh'
|
2
2
|
require 'net/ssh/telnet'
|
3
|
+
require 'net/ssh/gateway'
|
3
4
|
require 'net/ssh/xlogin/factory'
|
4
5
|
|
5
6
|
module Net::SSH::Xlogin
|
@@ -28,6 +29,12 @@ module Net::SSH::Xlogin
|
|
28
29
|
args["Binmode"] = @options[:binmode] || false
|
29
30
|
args["PTYOptions"] = @options[:ptyoptions] || {}
|
30
31
|
|
32
|
+
if @options[:relay]
|
33
|
+
relay = @options[:relay]
|
34
|
+
info = Factory.instance.inventory[relay]
|
35
|
+
@options[:port] = Net::SSH::Gateway.new(relay, nil , info)
|
36
|
+
end
|
37
|
+
|
31
38
|
if @options[:proxy]
|
32
39
|
args["Host"] = @options[:host_name]
|
33
40
|
args["Port"] = @options[:port]
|
@@ -20,13 +20,30 @@ module Net::SSH::Xlogin
|
|
20
20
|
@templates[name] = klass
|
21
21
|
end
|
22
22
|
|
23
|
+
def query(q)
|
24
|
+
list = inventory.map{|k, v| v}
|
25
|
+
return list if q.empty?
|
26
|
+
|
27
|
+
list.select do |h|
|
28
|
+
q.any? do |k,v|
|
29
|
+
case v
|
30
|
+
when Regexp
|
31
|
+
h[k] =~ v
|
32
|
+
else
|
33
|
+
h[k] == v
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
23
39
|
def yaml(file)
|
24
40
|
raise Error, 'not cofnig file' unless File.exist?(file)
|
25
41
|
srcs = YAML.load_file(file)
|
26
42
|
srcs.each do |src|
|
27
|
-
src
|
28
|
-
name
|
29
|
-
|
43
|
+
src = src.inject({}){|h, (k,v)| h = h.merge(k.to_sym => v) }
|
44
|
+
name = src.delete(:host)
|
45
|
+
src[:name] = name
|
46
|
+
set_source(name, **src)
|
30
47
|
end
|
31
48
|
end
|
32
49
|
|
@@ -42,6 +59,7 @@ module Net::SSH::Xlogin
|
|
42
59
|
|
43
60
|
options[:type] = method
|
44
61
|
options[:uri] = uri
|
62
|
+
options[:name] = name
|
45
63
|
options[:host_name] = uri.host
|
46
64
|
options[:user] = uri.user
|
47
65
|
options[:password] = uri.password
|
data/net-ssh-xlogin.gemspec
CHANGED
@@ -34,6 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
|
35
35
|
spec.add_runtime_dependency "net-ssh"
|
36
36
|
spec.add_runtime_dependency "net-ssh-telnet"
|
37
|
+
spec.add_runtime_dependency "net-ssh-gateway"
|
37
38
|
spec.add_runtime_dependency "ed25519"
|
38
39
|
spec.add_runtime_dependency "bcrypt_pbkdf"
|
39
40
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-ssh-xlogin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ito.toshifumi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-ssh
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: net-ssh-gateway
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: ed25519
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|