xlogin 0.13.5 → 0.13.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: 75345512c27d1e136bad7cd663f47bc04d7c9cfbcc9f56005b5636a0ea88105a
4
- data.tar.gz: 94c5599750f2d81b7ee583ae059f6d6e288c873c6a1d3a853a2ba2255c4931d9
3
+ metadata.gz: 7e8e95c3307d7a6db59fd189391fcbb4b5d4d16237ab91adf5dffe6978bcb138
4
+ data.tar.gz: 64c577eacd569e25369f46c67cfc4fa2d6df87aea0fe02da16ff1fe259178448
5
5
  SHA512:
6
- metadata.gz: ff6903e3c6c4fd36b98bba454af9e69fba4e1434511a19e8a5ce92b1a84138dd754be57949285fda1043c470d3c810ff720896e6652451e82cffa5178b4b0958
7
- data.tar.gz: 1b28f2a76abd6e09dc9995a483775c2dc5b56123b7121d4738c9173b84c39ca6cb6c7f89389826476658e1e8c95d6adf090a1cffbb33bba4e07105b2fed5f10e
6
+ metadata.gz: 3cc3b522a7583d8dccf0d7f6878cf73be466c8c36727a51636027c5eba304afb31fc8853634757bf18b90b96df390fec5a987948848ded5b97bf3d2cf2847f84
7
+ data.tar.gz: 71491640cb15ee2eb2e7709ac4bc430c228d19c4bd1dcc80503c6acaf57ade71aa54e166dfdb8736c980d6970c55e36d787cf735d36928af85e3c3dbcbfde245
@@ -25,22 +25,28 @@ module Xlogin
25
25
  @template = template
26
26
  @username, @password = uri.userinfo.to_s.split(':')
27
27
 
28
- ssh_tunnel(@config.via) if @config.via
28
+ forward = @config.forward || @config.via
29
+ ssh_tunnel(forward) if forward
29
30
  max_retry = @config.retry || 1
30
31
 
31
32
  @mutex = Mutex.new
32
33
  @loggers = [@config.log].flatten.uniq.reduce({}) { |a, e| a.merge(e => build_logger(e)) }
33
34
 
34
35
  begin
35
- super(
36
- 'Host' => @host,
37
- 'Port' => @port,
38
- 'Username' => @username,
39
- 'Password' => @password,
40
- 'Timeout' => @config.timeout || @template.timeout || false,
41
- 'Prompt' => prompt_pattern,
42
- 'FailEOF' => true,
43
- )
36
+ args = Hash.new
37
+ args['Timeout'] = @config.timeout || @template.timeout || false
38
+ args['Prompt' ] = prompt_pattern
39
+ args['FailEOF'] = true
40
+ if @config.proxy
41
+ args['Proxy' ] = @config.proxy
42
+ else
43
+ args['Host' ] = @host
44
+ args['Port' ] = @port
45
+ args['Username'] = @username
46
+ args['Password'] = @password
47
+ end
48
+
49
+ super(args)
44
50
  rescue => e
45
51
  retry if (max_retry -= 1) > 0
46
52
  raise e
@@ -60,8 +66,9 @@ module Xlogin
60
66
  Regexp.union(*@template.prompt.map(&:first))
61
67
  end
62
68
 
63
- def duplicate
64
- @template.build(@uri, **@config.to_h)
69
+ def duplicate(type: @template.name, **args)
70
+ template = Xlogin::Factory.instance.get_template(type)
71
+ template.build(@uri, **@config.to_h.merge(args))
65
72
  end
66
73
 
67
74
  def puts(*args, &block)
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.13.5"
2
+ VERSION = "0.13.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlogin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.5
4
+ version: 0.13.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-17 00:00:00.000000000 Z
11
+ date: 2019-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-telnet
@@ -157,7 +157,6 @@ files:
157
157
  - bin/xlogin
158
158
  - lib/xlogin.rb
159
159
  - lib/xlogin/cli.rb
160
- - lib/xlogin/delegator.rb
161
160
  - lib/xlogin/factory.rb
162
161
  - lib/xlogin/rake_task.rb
163
162
  - lib/xlogin/session.rb
@@ -1,53 +0,0 @@
1
- require 'addressable/uri'
2
- require 'uri'
3
-
4
- module Xlogin
5
- class Template
6
-
7
- module RelayTemplate
8
- def build(uri, **params)
9
- target_host = params.delete(:relay)
10
- return super(uri, **params) unless target_host
11
-
12
- target_info = Xlogin.factory.get_inventory(target_host)
13
- target_temp = Xlogin.factory.get_template(target_info[:type])
14
- target_uri = Addressable::URI.parse(target_info[:uri])
15
-
16
- login = @methods.fetch(:login)
17
- delegate = @methods.fetch(:delegate)
18
- raise Xlogin::Error.new("'login' and 'delegate' methods must be defined in the #{target_info[:type]} template.") unless login && delegate
19
-
20
- relay_uri = Addressable::URI.parse(uri.to_s)
21
- userinfo_cache = relay_uri.userinfo.dup
22
- relay_uri.userinfo = ''
23
-
24
- session = target_temp.build(relay_uri, **params)
25
- session.instance_exec(*userinfo_cache.split(':'), &login)
26
- session.instance_exec(target_uri, **params, &delegate)
27
- session
28
- end
29
- end
30
-
31
- prepend RelayTemplate
32
-
33
-
34
- ### Usage:
35
- ## Write xloginrc file
36
- #
37
- # vyos 'vyos01', 'telnet://user:pass@host:port'
38
- # relay_srv 'vyos01::relay', 'telnet://relay_user:relay_pass@relay_host:relay_port', relay: 'vyos01'
39
- #
40
- ## Write firmware template for 'relay_srv'
41
- #
42
- # login do |username, password|
43
- # waitfor(/login:\s*\z/) && puts(username)
44
- # waitfor(/Password:\s*\z/) && puts(password)
45
- # end
46
- #
47
- # delegate do |uri, **opts|
48
- # puts("telnet #{uri.host}")
49
- # login(*uri.userinfo.split(':'))
50
- # end
51
-
52
- end
53
- end