tbm 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/TBM/cli.rb +8 -6
- data/lib/TBM/config_parser.rb +15 -13
- data/lib/TBM/meta.rb +2 -2
- metadata +13 -20
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fb1dd4edda87be9428377a06d5041a648d7d5f28
|
4
|
+
data.tar.gz: 499437f869395fc830f35727181b5127a2be7d0a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d1f4457502f87d2875089f976d93245069b363281ae88e900bf3367109c50a457f5772beea36720016c10c123b845de3ff56f94bcffdef22da00ffd9431f9fc9
|
7
|
+
data.tar.gz: 9e99a047453d865df54e0f41c3a914779204fde2b9af76defa349d42b0da870ba14e386d49353a9848e3e6adf8fd467b21f9aaf2f93a0f765b3f02e2f7a02e07
|
data/lib/TBM/cli.rb
CHANGED
@@ -16,8 +16,10 @@ module TBM
|
|
16
16
|
|
17
17
|
# Parses the command-line arguments by seeking targets, and print errors/usage if necessary.
|
18
18
|
def parse
|
19
|
-
if ARGV.empty?
|
20
|
-
print_targets "SYNTAX: tbm <targets>\n\nWhere <targets> is a comma-separated list of:"
|
19
|
+
if ARGV.empty?
|
20
|
+
print_targets "SYNTAX: tbm <targets>\n\nWhere <targets> is a comma-separated list of:"
|
21
|
+
elsif ARGV == ['--version']
|
22
|
+
puts "Tunnel Boring Machine v#{VERSION}"
|
21
23
|
else
|
22
24
|
parse_targets( ARGV )
|
23
25
|
end
|
@@ -41,8 +43,8 @@ module TBM
|
|
41
43
|
machine.bore
|
42
44
|
end
|
43
45
|
else
|
44
|
-
|
45
|
-
puts "Cannot parse configuration
|
46
|
+
joined_errors = config.errors.join("\n\t")
|
47
|
+
puts "Cannot parse configuration:\n\t#{joined_errors}"
|
46
48
|
end
|
47
49
|
end
|
48
50
|
|
@@ -53,7 +55,7 @@ module TBM
|
|
53
55
|
missing_targets = []
|
54
56
|
targets.each do |target_name|
|
55
57
|
target = @config.get_target( target_name )
|
56
|
-
if target.nil?
|
58
|
+
if target.nil?
|
57
59
|
missing_targets << target_name
|
58
60
|
else
|
59
61
|
found_targets << target
|
@@ -81,4 +83,4 @@ module TBM
|
|
81
83
|
end
|
82
84
|
|
83
85
|
end
|
84
|
-
end
|
86
|
+
end
|
data/lib/TBM/config_parser.rb
CHANGED
@@ -4,9 +4,11 @@ require 'tbm'
|
|
4
4
|
|
5
5
|
module TBM
|
6
6
|
class ConfigParser
|
7
|
+
# The configuration file before expansion
|
8
|
+
CONFIG_FILE = '~/.tbm'
|
7
9
|
|
8
10
|
# The configuration file used for parsing config.
|
9
|
-
|
11
|
+
EXPANDED_CONFIG_FILE = File.expand_path( CONFIG_FILE )
|
10
12
|
|
11
13
|
# Pattern for Gateway Server with Optional Username
|
12
14
|
GATEWAY_PATTERN = /^([^@]+)(@([^@]+))?$/
|
@@ -32,14 +34,14 @@ module TBM
|
|
32
34
|
\))?\s*$/x # end of parenthesized aliases
|
33
35
|
|
34
36
|
|
35
|
-
# Parses the tunnel boring machine configuration to get a list of targets which can
|
37
|
+
# Parses the tunnel boring machine configuration to get a list of targets which can
|
36
38
|
# be invoked to bore tunnels.
|
37
39
|
#
|
38
40
|
# @return [Config] the parsed configuration for TBM
|
39
41
|
def self.parse
|
40
42
|
config = Config.new
|
41
|
-
if File.file?
|
42
|
-
config_data = YAML.load_file(
|
43
|
+
if File.file? EXPANDED_CONFIG_FILE
|
44
|
+
config_data = YAML.load_file( EXPANDED_CONFIG_FILE )
|
43
45
|
case config_data
|
44
46
|
when Hash
|
45
47
|
parse_gateways( config_data, config ) if config_data.is_a? Hash
|
@@ -47,7 +49,7 @@ module TBM
|
|
47
49
|
config.errors << "Cannot parse TBM configuration of type: #{config_data.class}"
|
48
50
|
end
|
49
51
|
else
|
50
|
-
config.errors << "No configuration file found. Specify your tunnels in YAML form in:
|
52
|
+
config.errors << "No configuration file found. Specify your tunnels in YAML form in: #{CONFIG_FILE}"
|
51
53
|
end
|
52
54
|
return config
|
53
55
|
rescue Psych::SyntaxError => pse
|
@@ -121,7 +123,7 @@ module TBM
|
|
121
123
|
|
122
124
|
def self.configure_target( target, target_config, config )
|
123
125
|
case target_config
|
124
|
-
when
|
126
|
+
when Integer, String
|
125
127
|
tunnel( target, target_config, config )
|
126
128
|
when Array
|
127
129
|
target_config.each { |tunnel_config| tunnel(target, tunnel_config, config) }
|
@@ -138,10 +140,10 @@ module TBM
|
|
138
140
|
|
139
141
|
def self.tunnel( target, tunnel_config, config )
|
140
142
|
case tunnel_config
|
141
|
-
when
|
143
|
+
when Integer
|
142
144
|
config.errors.concat validate_and_add( tunnel_config, tunnel_config, target )
|
143
145
|
when String
|
144
|
-
case tunnel_config
|
146
|
+
case tunnel_config
|
145
147
|
when PORT_PATTERN
|
146
148
|
config.errors.concat validate_and_add( tunnel_config.to_i, tunnel_config, target )
|
147
149
|
when PORTPORT_PATTERN
|
@@ -196,10 +198,10 @@ module TBM
|
|
196
198
|
else
|
197
199
|
target.add_alias( attribute_value.to_s )
|
198
200
|
end
|
199
|
-
else
|
201
|
+
else
|
200
202
|
remote_host = attribute_name.to_s
|
201
203
|
case attribute_value
|
202
|
-
when
|
204
|
+
when Integer, String
|
203
205
|
remote_tunnel( target, remote_host, attribute_value, config )
|
204
206
|
when Array
|
205
207
|
attribute_value.each { |tunnel_config| remote_tunnel(target, remote_host, tunnel_config, config) }
|
@@ -214,10 +216,10 @@ module TBM
|
|
214
216
|
|
215
217
|
def self.remote_tunnel( target, remote_host, tunnel_config, config )
|
216
218
|
case tunnel_config
|
217
|
-
when
|
219
|
+
when Integer
|
218
220
|
config.errors.concat validate_and_add( tunnel_config, tunnel_config, target, :remote_host => remote_host )
|
219
221
|
when String
|
220
|
-
case tunnel_config
|
222
|
+
case tunnel_config
|
221
223
|
when PORT_PATTERN
|
222
224
|
config.errors.concat validate_and_add( tunnel_config.to_i, tunnel_config, target, :remote_host => remote_host )
|
223
225
|
when PORTPORT_PATTERN
|
@@ -232,4 +234,4 @@ module TBM
|
|
232
234
|
|
233
235
|
|
234
236
|
end
|
235
|
-
end
|
237
|
+
end
|
data/lib/TBM/meta.rb
CHANGED
metadata
CHANGED
@@ -1,30 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tbm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Geoffrey Wiseman
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2017-12-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: net-ssh
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 2.6.2
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 2.6.2
|
30
27
|
description: The "Tunnel Boring Machine" is meant to bore ssh tunnels through the
|
@@ -36,6 +33,10 @@ executables:
|
|
36
33
|
extensions: []
|
37
34
|
extra_rdoc_files: []
|
38
35
|
files:
|
36
|
+
- README.md
|
37
|
+
- Rakefile
|
38
|
+
- UNLICENSE
|
39
|
+
- bin/tbm
|
39
40
|
- lib/TBM/cli.rb
|
40
41
|
- lib/TBM/config.rb
|
41
42
|
- lib/TBM/config_parser.rb
|
@@ -48,37 +49,29 @@ files:
|
|
48
49
|
- spec/config_spec.rb
|
49
50
|
- spec/spec_helper.rb
|
50
51
|
- spec/target_spec.rb
|
51
|
-
- bin/tbm
|
52
|
-
- Rakefile
|
53
|
-
- README.md
|
54
|
-
- UNLICENSE
|
55
52
|
homepage: http://github.com/geoffreywiseman/tunnel-boring-machine
|
56
53
|
licenses:
|
57
54
|
- UNLICENSE
|
55
|
+
metadata: {}
|
58
56
|
post_install_message:
|
59
57
|
rdoc_options: []
|
60
58
|
require_paths:
|
61
59
|
- lib
|
62
60
|
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
-
none: false
|
64
61
|
requirements:
|
65
|
-
- -
|
62
|
+
- - ">="
|
66
63
|
- !ruby/object:Gem::Version
|
67
64
|
version: '0'
|
68
|
-
segments:
|
69
|
-
- 0
|
70
|
-
hash: 450154189210157473
|
71
65
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
66
|
requirements:
|
74
|
-
- -
|
67
|
+
- - ">="
|
75
68
|
- !ruby/object:Gem::Version
|
76
69
|
version: '0'
|
77
70
|
requirements: []
|
78
71
|
rubyforge_project:
|
79
|
-
rubygems_version:
|
72
|
+
rubygems_version: 2.2.2
|
80
73
|
signing_key:
|
81
|
-
specification_version:
|
74
|
+
specification_version: 4
|
82
75
|
summary: Manages SSH Tunnels by creating an SSH connection and forwarding ports based
|
83
76
|
on named targets defined in configuration.
|
84
77
|
test_files: []
|