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 +4 -4
- data/lib/xlogin/session.rb +19 -12
- data/lib/xlogin/version.rb +1 -1
- metadata +2 -3
- data/lib/xlogin/delegator.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e8e95c3307d7a6db59fd189391fcbb4b5d4d16237ab91adf5dffe6978bcb138
|
4
|
+
data.tar.gz: 64c577eacd569e25369f46c67cfc4fa2d6df87aea0fe02da16ff1fe259178448
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3cc3b522a7583d8dccf0d7f6878cf73be466c8c36727a51636027c5eba304afb31fc8853634757bf18b90b96df390fec5a987948848ded5b97bf3d2cf2847f84
|
7
|
+
data.tar.gz: 71491640cb15ee2eb2e7709ac4bc430c228d19c4bd1dcc80503c6acaf57ade71aa54e166dfdb8736c980d6970c55e36d787cf735d36928af85e3c3dbcbfde245
|
data/lib/xlogin/session.rb
CHANGED
@@ -25,22 +25,28 @@ module Xlogin
|
|
25
25
|
@template = template
|
26
26
|
@username, @password = uri.userinfo.to_s.split(':')
|
27
27
|
|
28
|
-
|
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
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
'
|
41
|
-
|
42
|
-
'
|
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
|
-
|
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)
|
data/lib/xlogin/version.rb
CHANGED
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.
|
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-
|
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
|
data/lib/xlogin/delegator.rb
DELETED
@@ -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
|