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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 760aaee769ea50c9c07ceb41c3f02c85de66386b
4
- data.tar.gz: e4a2fd9aeb0980061e60f59b10781af25ac646de
3
+ metadata.gz: dcf7616b6aca051514dc83fd78d0404230a50ed9
4
+ data.tar.gz: 631a3d7ea97cc422a0c91ff6a257a8f384688370
5
5
  SHA512:
6
- metadata.gz: 2ba76caf35e5a154f6de4d36a04f2f85c1bf9b718f3d89b2c261c15f3d67997e497ba6ebecf90e6642f817882b6f003ef95e555d468abf3cb636b5e823290ff1
7
- data.tar.gz: 49272ff63021e177f333f11c75e05e34861473f31e7919cdb3da2f7158a456f2b762afe1ce008c459000e15c538dfe5072d622deac06f95677b1f90ef23347be
6
+ metadata.gz: a220037b93c800ac4bbe120bb3e6ef4d69ce34bd188d6b64e9d022869700ef2a1ccb9acea10504e008a2a746654af2e032706d136abc95aba6baf5d4a170676e
7
+ data.tar.gz: c755f66e92023dc47f0c4b876e306a165007bbed2acde20fd5f55bf1276f3524c30a99909d78faec292e2d8c34cf662a89d51e1c0ef2b264705e15beed14ce9a
@@ -5,23 +5,24 @@ module Xlogin
5
5
 
6
6
  module RelayTemplate
7
7
  def build(uri, **params)
8
- login_host = params.delete(:relay)
9
- return super(uri, **params) unless login_host
8
+ target_host = params.delete(:relay)
9
+ return super(uri, **params) unless target_host
10
10
 
11
- login_info = Xlogin.factory.get(login_host)
12
- login_os = Xlogin.factory.get_template(login_info[:type])
13
- login_uri = URI(login_info[:uri])
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 = login_os.build(relay_uri, **params)
23
+ session = target_temp.build(relay_uri, **params)
23
24
  session.instance_exec(*userinfo_cache.split(':'), &login)
24
- session.instance_exec(login_uri, **params, &delegate)
25
+ session.instance_exec(target_uri, **params, &delegate)
25
26
  session
26
27
  end
27
28
  end
@@ -67,14 +67,14 @@ module Xlogin
67
67
 
68
68
  def build(type:, uri:, **params)
69
69
  template = get_template(type)
70
- raise Xlogin::TemplateNotFound.new("Template not found: '#{type}'") unless template
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::SessionNotFound.new("Host not found: '#{hostname}'") unless hostinfo
77
+ raise Xlogin::SessionError.new("Host not found: '#{hostname}'") unless hostinfo
78
78
 
79
79
  build(hostinfo.merge(**params))
80
80
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.6.5"
2
+ VERSION = "0.6.6"
3
3
  end
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 SessionNotFound < StandardError; end
13
- class TemplateNotFound < StandardError; end
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.5
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-18 00:00:00.000000000 Z
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.4.5.2
167
+ rubygems_version: 2.6.11
168
168
  signing_key:
169
169
  specification_version: 4
170
170
  summary: rancid clogin alternative