net-ssh-xlogin 0.2.1 → 0.2.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1a3c3f9e810eb5b7ecf8f42207dacdb92fdc8d46d71868133ee97520a2c9228
4
- data.tar.gz: 5d6e14f9b766979a55d2e378acbf3019337e6ac9b2d6de4a0af2be16bbeac87d
3
+ metadata.gz: 15d61a3ec730381d2aadb63e7e851f0a7283e77d1c1f85090da0df6326afa08f
4
+ data.tar.gz: 853834013e2eb4ad2e9dc044154909b1eadf623a26819f34cda372bba8eb331b
5
5
  SHA512:
6
- metadata.gz: 2d49ba142f0db57a7c0cb49f4b76b2a14100f230b9c0ea652093c01323abd2f43ffa1f97675217bc17d09d6d72cfe7f58f8f46ac79cd65f4410c85ae09f9544a
7
- data.tar.gz: d6a547f74528675199e50e49e5297bc5a32f18d016d9df1d9656db9901c6376de20047c457be0aeac0e8b5d11e310f1f0e3de86d50e0b95bc5db490229dc5400
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.1)
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)
@@ -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
- opts = factory.inventory[name].merge(opts)
12
- type = opts[:type]
13
- klass = factory.templates[type]
14
- klass.build(name, **opts)
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 = src.inject({}){|h, (k,v)| h = h.merge(k.sym => v) }
28
- name = src.delete(:host)
29
- factory.source_set(name, **src)
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
@@ -1,7 +1,7 @@
1
1
  module Net
2
2
  module SSH
3
3
  module Xlogin
4
- VERSION = '0.2.1'
4
+ VERSION = '0.2.6'
5
5
  end
6
6
  end
7
7
  end
@@ -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.1
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 00:00:00.000000000 Z
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