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 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