xlogin 0.6.5 → 0.6.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/delegator.rb +8 -7
- data/lib/xlogin/factory.rb +2 -2
- data/lib/xlogin/session.rb +7 -2
- data/lib/xlogin/version.rb +1 -1
- data/lib/xlogin.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcf7616b6aca051514dc83fd78d0404230a50ed9
|
4
|
+
data.tar.gz: 631a3d7ea97cc422a0c91ff6a257a8f384688370
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a220037b93c800ac4bbe120bb3e6ef4d69ce34bd188d6b64e9d022869700ef2a1ccb9acea10504e008a2a746654af2e032706d136abc95aba6baf5d4a170676e
|
7
|
+
data.tar.gz: c755f66e92023dc47f0c4b876e306a165007bbed2acde20fd5f55bf1276f3524c30a99909d78faec292e2d8c34cf662a89d51e1c0ef2b264705e15beed14ce9a
|
data/lib/xlogin/delegator.rb
CHANGED
@@ -5,23 +5,24 @@ module Xlogin
|
|
5
5
|
|
6
6
|
module RelayTemplate
|
7
7
|
def build(uri, **params)
|
8
|
-
|
9
|
-
return super(uri, **params) unless
|
8
|
+
target_host = params.delete(:relay)
|
9
|
+
return super(uri, **params) unless target_host
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
target_info = Xlogin.factory.get(target_host)
|
12
|
+
target_temp = Xlogin.factory.get_template(target_info[:type])
|
13
|
+
target_uri = URI(target_info[:uri])
|
14
14
|
|
15
15
|
login = @methods.fetch(:login)
|
16
16
|
delegate = @methods.fetch(:delegate)
|
17
|
+
raise TemplateError.new("'login' and 'delegate' methods are necessary in the #{target_info[:type]} template.") unless login && delegate
|
17
18
|
|
18
19
|
relay_uri = URI(uri.to_s)
|
19
20
|
userinfo_cache = relay_uri.userinfo.dup
|
20
21
|
relay_uri.userinfo = ''
|
21
22
|
|
22
|
-
session =
|
23
|
+
session = target_temp.build(relay_uri, **params)
|
23
24
|
session.instance_exec(*userinfo_cache.split(':'), &login)
|
24
|
-
session.instance_exec(
|
25
|
+
session.instance_exec(target_uri, **params, &delegate)
|
25
26
|
session
|
26
27
|
end
|
27
28
|
end
|
data/lib/xlogin/factory.rb
CHANGED
@@ -67,14 +67,14 @@ module Xlogin
|
|
67
67
|
|
68
68
|
def build(type:, uri:, **params)
|
69
69
|
template = get_template(type)
|
70
|
-
raise Xlogin::
|
70
|
+
raise Xlogin::TemplateError.new("Template not found: '#{type}'") unless template
|
71
71
|
|
72
72
|
template.build(uri, **params)
|
73
73
|
end
|
74
74
|
|
75
75
|
def build_from_hostname(hostname, **params)
|
76
76
|
hostinfo = get(hostname)
|
77
|
-
raise Xlogin::
|
77
|
+
raise Xlogin::SessionError.new("Host not found: '#{hostname}'") unless hostinfo
|
78
78
|
|
79
79
|
build(hostinfo.merge(**params))
|
80
80
|
end
|
data/lib/xlogin/session.rb
CHANGED
@@ -82,6 +82,11 @@ module Xlogin
|
|
82
82
|
line
|
83
83
|
end
|
84
84
|
|
85
|
+
def close
|
86
|
+
@gateway.close(@port) if @gateway
|
87
|
+
super
|
88
|
+
end
|
89
|
+
|
85
90
|
def dup
|
86
91
|
uri = URI::Generic.build(@scheme, [@username, @password].compact.join(':'), @host, @port)
|
87
92
|
self.class.new(@template, uri, **opts.to_h)
|
@@ -109,14 +114,14 @@ module Xlogin
|
|
109
114
|
case gateway_uri.scheme
|
110
115
|
when 'ssh'
|
111
116
|
username, password = *gateway_uri.userinfo.split(':')
|
112
|
-
gateway = Net::SSH::Gateway.new(
|
117
|
+
@gateway = Net::SSH::Gateway.new(
|
113
118
|
gateway_uri.host,
|
114
119
|
username,
|
115
120
|
password: password,
|
116
121
|
port: gateway_uri.port || 22
|
117
122
|
)
|
118
123
|
|
119
|
-
@port = gateway.open(@host, @port)
|
124
|
+
@port = @gateway.open(@host, @port)
|
120
125
|
@host = '127.0.0.1'
|
121
126
|
end
|
122
127
|
end
|
data/lib/xlogin/version.rb
CHANGED
data/lib/xlogin.rb
CHANGED
@@ -9,8 +9,8 @@ module Xlogin
|
|
9
9
|
DEFAULT_TEMPLATE_DIR = File.join(ENV['HOME'], '.xlogin.d')
|
10
10
|
BUILTIN_TEMPLATE_FILES = Dir.glob(File.join(File.dirname(__FILE__), 'xlogin', 'templates', '*.rb'))
|
11
11
|
|
12
|
-
class
|
13
|
-
class
|
12
|
+
class SessionError < StandardError; end
|
13
|
+
class TemplateError < StandardError; end
|
14
14
|
class AuthorizationError < StandardError; end
|
15
15
|
|
16
16
|
class << self
|
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.6.
|
4
|
+
version: 0.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- haccht
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-telnet
|
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
164
|
version: '0'
|
165
165
|
requirements: []
|
166
166
|
rubyforge_project:
|
167
|
-
rubygems_version: 2.
|
167
|
+
rubygems_version: 2.6.11
|
168
168
|
signing_key:
|
169
169
|
specification_version: 4
|
170
170
|
summary: rancid clogin alternative
|