vtk 0.9.0 → 0.9.1
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/.rubocop_todo.yml +2 -2
- data/CHANGELOG.md +8 -7
- data/lib/vtk/commands/socks/setup.rb +103 -41
- data/lib/vtk/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5330833427f91a051537c3289baa3dff860f28a03fe3b47508d34e2eaeaffe3d
|
|
4
|
+
data.tar.gz: 00bf91a02ad6e3640c6a70cd1ab58581e70e8b73d04f29c8b8711ae526b3b8a8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 60b2d9deaa896280656e6ccc25af0d200f020e82bf0a3f2a70244d1b3eed7d0288615049fe4ac1d2153f917475c5b5c48b3f51e9febb945b34bc5325e5ec2e99
|
|
7
|
+
data.tar.gz: e7a97e25802f2e2c16075b5033e74fe1d79a6878fd6bcad748bbf1272c617f4b1878c75e71996b9326c5a7a6ff85c39c4804ac3a8a1df7f884cc00d7839eaab6
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
2
|
# `rubocop --auto-gen-config`
|
|
3
|
-
# on 2021-
|
|
3
|
+
# on 2021-08-06 20:18:41 UTC using RuboCop version 1.8.1.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
@@ -9,4 +9,4 @@
|
|
|
9
9
|
# Offense count: 1
|
|
10
10
|
# Configuration parameters: CountComments, CountAsOne.
|
|
11
11
|
Metrics/ClassLength:
|
|
12
|
-
Max:
|
|
12
|
+
Max: 405
|
data/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [
|
|
3
|
+
## [v0.9.0](https://github.com/department-of-veterans-affairs/vtk/tree/v0.9.0) (2021-08-02)
|
|
4
4
|
|
|
5
|
-
[Full Changelog](https://github.com/department-of-veterans-affairs/vtk/compare/v0.8.0...
|
|
5
|
+
[Full Changelog](https://github.com/department-of-veterans-affairs/vtk/compare/v0.8.0...v0.9.0)
|
|
6
6
|
|
|
7
7
|
**Merged pull requests:**
|
|
8
8
|
|
|
9
|
+
- SOCKS Setup Command [\#11](https://github.com/department-of-veterans-affairs/vtk/pull/11) ([ericboehs](https://github.com/ericboehs))
|
|
9
10
|
- Command Analytics [\#8](https://github.com/department-of-veterans-affairs/vtk/pull/8) ([ericboehs](https://github.com/ericboehs))
|
|
10
11
|
|
|
11
12
|
## [v0.8.0](https://github.com/department-of-veterans-affairs/vtk/tree/v0.8.0) (2021-03-01)
|
|
@@ -37,10 +38,6 @@
|
|
|
37
38
|
|
|
38
39
|
[Full Changelog](https://github.com/department-of-veterans-affairs/vtk/compare/v0.2.6...v0.3.0)
|
|
39
40
|
|
|
40
|
-
**Merged pull requests:**
|
|
41
|
-
|
|
42
|
-
- SOCKS On/Off Commands [\#9](https://github.com/department-of-veterans-affairs/vtk/pull/9) ([ericboehs](https://github.com/ericboehs))
|
|
43
|
-
|
|
44
41
|
## [v0.2.6](https://github.com/department-of-veterans-affairs/vtk/tree/v0.2.6) (2021-02-03)
|
|
45
42
|
|
|
46
43
|
[Full Changelog](https://github.com/department-of-veterans-affairs/vtk/compare/v0.2.5...v0.2.6)
|
|
@@ -61,6 +58,7 @@
|
|
|
61
58
|
**Merged pull requests:**
|
|
62
59
|
|
|
63
60
|
- added Docker instructions to the README [\#10](https://github.com/department-of-veterans-affairs/vtk/pull/10) ([thilton-oddball](https://github.com/thilton-oddball))
|
|
61
|
+
- SOCKS On/Off Commands [\#9](https://github.com/department-of-veterans-affairs/vtk/pull/9) ([ericboehs](https://github.com/ericboehs))
|
|
64
62
|
- use system command [\#7](https://github.com/department-of-veterans-affairs/vtk/pull/7) ([LindseySaari](https://github.com/LindseySaari))
|
|
65
63
|
- Add additional module subcommands [\#6](https://github.com/department-of-veterans-affairs/vtk/pull/6) ([LindseySaari](https://github.com/LindseySaari))
|
|
66
64
|
- Check for Rails dependency [\#5](https://github.com/department-of-veterans-affairs/vtk/pull/5) ([LindseySaari](https://github.com/LindseySaari))
|
|
@@ -80,7 +78,6 @@
|
|
|
80
78
|
**Merged pull requests:**
|
|
81
79
|
|
|
82
80
|
- fixing markdown in README … [\#3](https://github.com/department-of-veterans-affairs/vtk/pull/3) ([thilton-oddball](https://github.com/thilton-oddball))
|
|
83
|
-
- Open Jenkins [\#1](https://github.com/department-of-veterans-affairs/vtk/pull/1) ([cvalarida](https://github.com/cvalarida))
|
|
84
81
|
|
|
85
82
|
## [v0.1.0](https://github.com/department-of-veterans-affairs/vtk/tree/v0.1.0) (2021-01-04)
|
|
86
83
|
|
|
@@ -94,6 +91,10 @@
|
|
|
94
91
|
|
|
95
92
|
[Full Changelog](https://github.com/department-of-veterans-affairs/vtk/compare/79143038509757799edb2bb9be2f925b7d985221...oclif)
|
|
96
93
|
|
|
94
|
+
**Merged pull requests:**
|
|
95
|
+
|
|
96
|
+
- Open Jenkins [\#1](https://github.com/department-of-veterans-affairs/vtk/pull/1) ([cvalarida](https://github.com/cvalarida))
|
|
97
|
+
|
|
97
98
|
|
|
98
99
|
|
|
99
100
|
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
|
@@ -28,35 +28,49 @@ module Vtk
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def execute(input: $stdin, output: $stdout)
|
|
31
|
-
|
|
32
|
-
@output = output
|
|
31
|
+
define_stdin_out_vars input: input, output: output
|
|
33
32
|
|
|
34
33
|
setup_ssh_config
|
|
35
34
|
check_ssh_key
|
|
36
35
|
ssh_agent_add
|
|
37
36
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
test_http_connection unless skip_test
|
|
37
|
+
unless @ssh_key_created
|
|
38
|
+
test_ssh_connection unless skip_test
|
|
39
|
+
configure_system_boot
|
|
40
|
+
configure_system_proxy
|
|
41
|
+
end
|
|
44
42
|
|
|
45
|
-
log
|
|
43
|
+
log "SOCKS setup complete. #{'Re-run `vtk socks setup` after your key is approved.' if @ssh_key_created}"
|
|
46
44
|
end
|
|
47
45
|
|
|
48
46
|
private
|
|
49
47
|
|
|
48
|
+
def define_stdin_out_vars(input:, output:)
|
|
49
|
+
@input = input
|
|
50
|
+
@output = output
|
|
51
|
+
end
|
|
52
|
+
|
|
50
53
|
def check_ssh_key
|
|
51
|
-
return true if key_exists?
|
|
54
|
+
return true if key_exists? && private_and_public_keys_match?
|
|
52
55
|
|
|
53
|
-
generate_key_and_open_key_access_request
|
|
56
|
+
@ssh_key_created = generate_key_and_open_key_access_request
|
|
54
57
|
end
|
|
55
58
|
|
|
56
59
|
def key_exists?
|
|
57
60
|
File.exist? ssh_key_path
|
|
58
61
|
end
|
|
59
62
|
|
|
63
|
+
def private_and_public_keys_match?
|
|
64
|
+
return true unless public_key_exists?
|
|
65
|
+
|
|
66
|
+
pub_key_from_private = `ssh-keygen -y -e -f #{ssh_key_path}`
|
|
67
|
+
pub_key_from_public = `ssh-keygen -y -e -f #{ssh_key_path}.pub`
|
|
68
|
+
return true if pub_key_from_private == pub_key_from_public
|
|
69
|
+
|
|
70
|
+
log "❌ ERROR: #{ssh_key_path}.pub is not the public key for #{ssh_key_path}."
|
|
71
|
+
exit 1
|
|
72
|
+
end
|
|
73
|
+
|
|
60
74
|
def public_key_exists?
|
|
61
75
|
File.exist? "#{ssh_key_path}.pub"
|
|
62
76
|
end
|
|
@@ -67,29 +81,46 @@ module Vtk
|
|
|
67
81
|
|
|
68
82
|
if prompt.yes?(copy_and_open_gh)
|
|
69
83
|
copy_key_to_clipboard
|
|
70
|
-
|
|
84
|
+
open_command access_request_template_url
|
|
71
85
|
else
|
|
72
|
-
|
|
86
|
+
key_contents = File.read "#{ssh_key_path}.pub"
|
|
87
|
+
log "Copy this key & submit into the access request form (#{access_request_template_url}):\n#{key_contents}"
|
|
73
88
|
end
|
|
74
89
|
end
|
|
75
90
|
|
|
76
91
|
def copy_key_to_clipboard
|
|
77
92
|
ssh_key_contents = File.read "#{ssh_key_path}.pub"
|
|
78
93
|
|
|
94
|
+
if copy_command
|
|
95
|
+
IO.popen(copy_command, 'w') { |f| f << ssh_key_contents }
|
|
96
|
+
elsif wsl?
|
|
97
|
+
system %(powershell.exe Set-Clipboard -Value "'#{ssh_key_contents}'")
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def copy_command
|
|
79
102
|
if macos?
|
|
80
|
-
|
|
81
|
-
elsif ubuntu_like?
|
|
103
|
+
'pbcopy'
|
|
104
|
+
elsif ubuntu_like? && !wsl?
|
|
82
105
|
system 'sudo apt-get install -y xsel' if `which xsel`.empty?
|
|
83
|
-
|
|
106
|
+
'xsel --clipboard'
|
|
84
107
|
end
|
|
108
|
+
end
|
|
85
109
|
|
|
86
|
-
|
|
110
|
+
def open_command(url)
|
|
111
|
+
if macos?
|
|
112
|
+
`open "#{url}"`
|
|
113
|
+
elsif wsl?
|
|
114
|
+
`powershell.exe Start '"#{url}"'`
|
|
115
|
+
elsif ubuntu_like?
|
|
116
|
+
`xdg-open "#{url}"`
|
|
117
|
+
end
|
|
87
118
|
end
|
|
88
119
|
|
|
89
120
|
def access_request_template_url
|
|
90
121
|
'https://github.com/department-of-veterans-affairs/va.gov-team/issues/new?' \
|
|
91
|
-
'assignees=&labels=external-request%2C+operations
|
|
92
|
-
'title=Access+for+%5Bindividual%5D'
|
|
122
|
+
'assignees=&labels=external-request%2C+operations%2C+ops-access-request&' \
|
|
123
|
+
'template=Environment-Access-Request-Template.md&title=Access+for+%5Bindividual%5D'
|
|
93
124
|
end
|
|
94
125
|
|
|
95
126
|
def copy_and_open_gh
|
|
@@ -138,6 +169,8 @@ module Vtk
|
|
|
138
169
|
ssh_config_clean_up
|
|
139
170
|
|
|
140
171
|
ssh_agent_add
|
|
172
|
+
system 'git config --global credential.helper > /dev/null || ' \
|
|
173
|
+
"git config --global credential.helper 'cache --timeout=600'"
|
|
141
174
|
cloned = system(
|
|
142
175
|
"git clone --quiet#{' --depth 1' if macos?} --no-checkout --filter=blob:none #{repo_url} '/tmp/dova-devops'"
|
|
143
176
|
)
|
|
@@ -250,16 +283,18 @@ module Vtk
|
|
|
250
283
|
|
|
251
284
|
add_ip_to_known_hosts
|
|
252
285
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
if ssh_output.include? 'This account is currently not available.'
|
|
256
|
-
output.puts ' ✅'
|
|
286
|
+
if proxy_running? || ssh_output.include?('This account is currently not available.')
|
|
287
|
+
output.puts ' ✅ DONE'
|
|
257
288
|
else
|
|
258
289
|
check_ssh_error ssh_output
|
|
259
290
|
exit 1
|
|
260
291
|
end
|
|
261
292
|
end
|
|
262
293
|
|
|
294
|
+
def ssh_output
|
|
295
|
+
`ssh -i #{ssh_key_path} -F #{ssh_config_path} -o ConnectTimeout=5 -q socks -D #{port} exit 2>&1`
|
|
296
|
+
end
|
|
297
|
+
|
|
263
298
|
def add_ip_to_known_hosts
|
|
264
299
|
jump_box_ip = `grep -A 2 'Host socks' ~/.ssh/config | grep ProxyCommand | awk '{print $6}'`.chomp
|
|
265
300
|
socks_ip = `grep -A 2 'Host socks' ~/.ssh/config | grep HostName | awk '{print $2}'`.chomp
|
|
@@ -272,8 +307,8 @@ module Vtk
|
|
|
272
307
|
|
|
273
308
|
def check_ssh_error(ssh_output)
|
|
274
309
|
if ssh_output.include? 'Permission denied (publickey)'
|
|
275
|
-
@skip_test = true
|
|
276
310
|
output.puts '⚠️ WARN: SSH key is not approved yet. Once it is, re-run `vtk socks setup`.'
|
|
311
|
+
copy_key_to_clipboard if prompt.yes? 'Would you like to copy your VA public key to your clipboard again?'
|
|
277
312
|
else
|
|
278
313
|
ssh_command = "ssh -i #{ssh_key_path} -F #{ssh_config_path} -o ConnectTimeout=5 -vvv socks -D #{port} -N"
|
|
279
314
|
output.puts ' ❌ ERROR: SSH Connection to SOCKS server unsuccessful. Error message:'
|
|
@@ -284,10 +319,39 @@ module Vtk
|
|
|
284
319
|
|
|
285
320
|
def configure_system_boot
|
|
286
321
|
log 'Configuring SOCKS tunnel to run on system boot...' do
|
|
287
|
-
|
|
322
|
+
if wsl?
|
|
323
|
+
wsl_configure_system_boot && wsl_start_socks_proxy
|
|
324
|
+
else
|
|
325
|
+
install_autossh && (install_launch_agent || install_systemd_service)
|
|
326
|
+
end
|
|
288
327
|
end
|
|
289
328
|
end
|
|
290
329
|
|
|
330
|
+
def wsl_configure_system_boot
|
|
331
|
+
return true if File.exist? socks_bat
|
|
332
|
+
|
|
333
|
+
IO.write socks_bat, 'wsl nohup bash -c "/usr/bin/ssh socks -N &" < nul > nul 2>&1', mode: 'a'
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
def socks_bat
|
|
337
|
+
"#{socks_bat_dir}/gov.va.socks.bat"
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
def socks_bat_dir
|
|
341
|
+
profile_path = `wslpath "$(wslvar USERPROFILE)"`.chomp
|
|
342
|
+
"#{profile_path}/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def wsl_start_socks_proxy
|
|
346
|
+
return true if proxy_running?
|
|
347
|
+
|
|
348
|
+
system "cd '#{socks_bat_dir}'; cmd.exe /c gov.va.socks.bat > /dev/null"
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
def proxy_running?
|
|
352
|
+
system("lsof -i:#{port}", out: '/dev/null') || system('lsof -nP | grep ssh | grep -q sock')
|
|
353
|
+
end
|
|
354
|
+
|
|
291
355
|
def launch_agent_label
|
|
292
356
|
@launch_agent_label ||= begin
|
|
293
357
|
launch_agent_label = 'gov.va.socks'
|
|
@@ -374,6 +438,8 @@ module Vtk
|
|
|
374
438
|
|
|
375
439
|
if macos?
|
|
376
440
|
mac_configure_system_proxy
|
|
441
|
+
elsif wsl?
|
|
442
|
+
wsl_configure_system_proxy
|
|
377
443
|
elsif ubuntu_like?
|
|
378
444
|
ubuntu_configure_system_proxy
|
|
379
445
|
end
|
|
@@ -398,6 +464,13 @@ module Vtk
|
|
|
398
464
|
end
|
|
399
465
|
end
|
|
400
466
|
|
|
467
|
+
def wsl_configure_system_proxy
|
|
468
|
+
log 'Configuring system proxy to use SOCKS tunnel...' do
|
|
469
|
+
reg_key = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings'
|
|
470
|
+
`powershell.exe Set-ItemProperty -path "'#{reg_key}'" AutoConfigURL -Value "'#{PROXY_URL}'"`
|
|
471
|
+
end
|
|
472
|
+
end
|
|
473
|
+
|
|
401
474
|
def mac_system_proxy_already_configured?
|
|
402
475
|
network_interfaces.map do |network_interface|
|
|
403
476
|
output = `networksetup -getautoproxyurl "#{network_interface}"`
|
|
@@ -413,25 +486,14 @@ module Vtk
|
|
|
413
486
|
end
|
|
414
487
|
end
|
|
415
488
|
|
|
416
|
-
def test_http_connection
|
|
417
|
-
output.print '----> Testing SOCKS HTTP connection...'
|
|
418
|
-
|
|
419
|
-
success = 5.times.map do
|
|
420
|
-
sleep 1
|
|
421
|
-
not_connected = system "nscurl http://grafana.vfs.va.gov 2>&1 | grep -q 'hostname could not be found'"
|
|
422
|
-
|
|
423
|
-
break [true] unless not_connected
|
|
424
|
-
end.all?
|
|
425
|
-
|
|
426
|
-
output.puts success ? ' ✅' : ' ❌ ERROR: SOCKS connection failed HTTP test. Try running setup again.'
|
|
427
|
-
|
|
428
|
-
exit 1 unless success
|
|
429
|
-
end
|
|
430
|
-
|
|
431
489
|
def macos?
|
|
432
490
|
RUBY_PLATFORM.include? 'darwin'
|
|
433
491
|
end
|
|
434
492
|
|
|
493
|
+
def wsl?
|
|
494
|
+
@wsl ||= File.exist?('/proc/version') && File.open('/proc/version').grep(/Microsoft/).size.positive?
|
|
495
|
+
end
|
|
496
|
+
|
|
435
497
|
def ubuntu_like?
|
|
436
498
|
return false if `which apt-get`.empty? && `which gsettings`.empty?
|
|
437
499
|
|
|
@@ -456,7 +518,7 @@ module Vtk
|
|
|
456
518
|
|
|
457
519
|
return_value = yield
|
|
458
520
|
|
|
459
|
-
output.puts return_value ? ' ✅' : ' ❌'
|
|
521
|
+
output.puts return_value ? ' ✅ DONE' : ' ❌ FAIL'
|
|
460
522
|
|
|
461
523
|
return_value
|
|
462
524
|
else
|
data/lib/vtk/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vtk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Eric Boehs
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: exe
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2021-08-
|
|
13
|
+
date: 2021-08-09 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: thor
|