cucumber-sshd 2.0.0.pre4 → 2.1.0
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/cucumber/sshd/cucumber.rb +5 -6
- data/lib/cucumber/sshd/server.rb +44 -54
- metadata +5 -20
- data/lib/cucumber/sshd/version.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdf66c3017c8748e8500c2afd205d4933a6e4620effbb8a52c1016fad5e81371
|
4
|
+
data.tar.gz: 46a7249f56a23a5c22a6803edc2ed721bd09795b2d13e26ee94236113baa74a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae3978de0a18792dfb0fe0721e967eff7b30064eae2ea945e2b0c642999e15a5c992a54e8777b28a664d6a56a8f2d7679a06015da17d65e793e7429d78b243f8
|
7
|
+
data.tar.gz: 4f4389002a3ab1378595397e77c1b1c015334f505653284f596f55809c0423629bdf510ee4fabd96fbd23972644ece6c0deb906da2e6a423a9ed0c3cf2b66b42
|
@@ -3,12 +3,11 @@ require 'cucumber/sshd/server'
|
|
3
3
|
Before '@sshd' do
|
4
4
|
start_server = -> do
|
5
5
|
Cucumber::SSHD::Server.start \
|
6
|
-
home:
|
7
|
-
addr:
|
8
|
-
port:
|
9
|
-
debug:
|
10
|
-
persist:
|
11
|
-
wait_ready: ENV.key?('CUCUMBER_SSHD_WAIT_READY')
|
6
|
+
home: ENV.fetch('CUCUMBER_SSHD_HOME', 'tmp/home'),
|
7
|
+
addr: ENV.fetch('CUCUMBER_SSHD_LISTEN', '::1'),
|
8
|
+
port: ENV.fetch('CUCUMBER_SSHD_PORT', 2222),
|
9
|
+
debug: ENV.key?('CUCUMBER_SSHD_DEBUG'),
|
10
|
+
persist: ENV.key?('CUCUMBER_SSHD_PERSIST')
|
12
11
|
end
|
13
12
|
|
14
13
|
if !$_sshd && ENV.key?('CUCUMBER_SSHD_PERSIST')
|
data/lib/cucumber/sshd/server.rb
CHANGED
@@ -1,27 +1,29 @@
|
|
1
1
|
module Cucumber
|
2
2
|
module SSHD
|
3
3
|
class Server
|
4
|
-
HOST
|
5
|
-
HOSTNAME
|
6
|
-
COMMAND
|
7
|
-
COMMAND_ARGS
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
4
|
+
HOST = 'some_host.test'.freeze
|
5
|
+
HOSTNAME = 'localhost'.freeze
|
6
|
+
COMMAND = '/usr/sbin/sshd'.freeze
|
7
|
+
COMMAND_ARGS = '-De'.freeze
|
8
|
+
TMP_FILE_PREFIX = 'cucumber_sshd_'.freeze
|
9
|
+
WAIT_READY_DELAY = 0.005
|
10
|
+
WAIT_READY_TRIGGER = 'Server listening'.freeze
|
11
|
+
KEY_PATH = 'etc/ssh_host_rsa_key'.freeze
|
12
|
+
KEY_PUB_PATH = [KEY_PATH, '.pub'].join.freeze
|
13
|
+
SSHD_CONFIG_PATH = 'etc/sshd_config'.freeze
|
14
|
+
SSH_CONFIG_PATH = '.ssh/config'.freeze
|
15
|
+
SSH_KNOWN_HOSTS_PATH = '.ssh/known_hosts'.freeze
|
16
|
+
SFTP_SERVER_PATHS = %w[
|
15
17
|
/usr/libexec/sftp-server
|
16
18
|
/usr/lib/openssh/sftp-server
|
17
19
|
].freeze
|
18
20
|
|
19
|
-
KEY =
|
20
|
-
-----BEGIN EC PRIVATE KEY-----
|
21
|
-
MHcCAQEEIJbQy3yg9iU4xFvia9DWKWuhMzI5QGncR6OUldAOSIe7oAoGCCqGSM49
|
22
|
-
AwEHoUQDQgAEJpS8Sknl2X6PNurToQCNu5lX/scaJLr3FkiufD+p67epbwIjiyzo
|
23
|
-
qnLMVQddVitzQP7LEhXbNUuUAzEMfA6rAA==
|
24
|
-
-----END EC PRIVATE KEY-----
|
21
|
+
KEY = <<~eoh.freeze
|
22
|
+
-----BEGIN EC PRIVATE KEY-----
|
23
|
+
MHcCAQEEIJbQy3yg9iU4xFvia9DWKWuhMzI5QGncR6OUldAOSIe7oAoGCCqGSM49
|
24
|
+
AwEHoUQDQgAEJpS8Sknl2X6PNurToQCNu5lX/scaJLr3FkiufD+p67epbwIjiyzo
|
25
|
+
qnLMVQddVitzQP7LEhXbNUuUAzEMfA6rAA==
|
26
|
+
-----END EC PRIVATE KEY-----
|
25
27
|
eoh
|
26
28
|
KEY_PUB =
|
27
29
|
'ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNT' \
|
@@ -29,8 +31,8 @@ qnLMVQddVitzQP7LEhXbNUuUAzEMfA6rAA==
|
|
29
31
|
'XVYrc0D+yxIV2zVLlAMxDHwOqwA='
|
30
32
|
|
31
33
|
class << self
|
32
|
-
def start
|
33
|
-
server = new
|
34
|
+
def start options
|
35
|
+
server = new **options
|
34
36
|
server.configure
|
35
37
|
server.start
|
36
38
|
server
|
@@ -40,14 +42,14 @@ qnLMVQddVitzQP7LEhXbNUuUAzEMfA6rAA==
|
|
40
42
|
attr_reader :home
|
41
43
|
|
42
44
|
def initialize(
|
43
|
-
home:, addr:, port:, debug: false, persist: false
|
45
|
+
home:, addr:, port:, debug: false, persist: false
|
44
46
|
)
|
45
|
-
@home
|
46
|
-
@addr
|
47
|
-
@port
|
48
|
-
@debug
|
49
|
-
@persist
|
50
|
-
@
|
47
|
+
@home = home
|
48
|
+
@addr = addr
|
49
|
+
@port = port
|
50
|
+
@debug = debug
|
51
|
+
@persist = persist
|
52
|
+
@stderr = Tempfile.new TMP_FILE_PREFIX
|
51
53
|
end
|
52
54
|
|
53
55
|
def configure
|
@@ -57,18 +59,11 @@ qnLMVQddVitzQP7LEhXbNUuUAzEMfA6rAA==
|
|
57
59
|
end
|
58
60
|
|
59
61
|
def start
|
62
|
+
print_server_info if debug?
|
60
63
|
Dir.chdir home do
|
61
|
-
@pid =
|
62
|
-
$stderr.reopen '/dev/null' unless debug?
|
63
|
-
exec command
|
64
|
-
end
|
65
|
-
if debug?
|
66
|
-
sleep 0.05
|
67
|
-
fail "`#{command}` failed" if Process.waitpid pid, Process::WNOHANG
|
68
|
-
end
|
64
|
+
@pid = spawn *command, err: @stderr
|
69
65
|
end
|
70
|
-
|
71
|
-
wait_ready! if wait_ready?
|
66
|
+
wait_ready
|
72
67
|
end
|
73
68
|
|
74
69
|
def stop
|
@@ -78,23 +73,23 @@ qnLMVQddVitzQP7LEhXbNUuUAzEMfA6rAA==
|
|
78
73
|
|
79
74
|
private
|
80
75
|
|
81
|
-
attr_reader :addr, :port, :debug, :persist, :
|
76
|
+
attr_reader :addr, :port, :debug, :persist, :pid
|
82
77
|
|
83
78
|
def command
|
84
79
|
[
|
85
80
|
COMMAND,
|
86
81
|
'-f',
|
87
82
|
SSHD_CONFIG_PATH,
|
88
|
-
|
89
|
-
]
|
83
|
+
COMMAND_ARGS
|
84
|
+
]
|
90
85
|
end
|
91
86
|
|
92
87
|
def configure_client
|
93
88
|
write_file_secure SSH_CONFIG_PATH, <<-eoh
|
94
|
-
Host
|
95
|
-
HostName
|
96
|
-
Port
|
97
|
-
UserKnownHostsFile
|
89
|
+
Host #{HOST}
|
90
|
+
HostName #{HOSTNAME}
|
91
|
+
Port #{port}
|
92
|
+
UserKnownHostsFile #{File.expand_path home}/#{SSH_KNOWN_HOSTS_PATH}
|
98
93
|
eoh
|
99
94
|
write_file_secure SSH_KNOWN_HOSTS_PATH, "[#{HOSTNAME}]:2222 #{KEY_PUB}"
|
100
95
|
end
|
@@ -108,7 +103,6 @@ ListenAddress #{addr}
|
|
108
103
|
Protocol 2
|
109
104
|
HostKey #{File.expand_path home}/#{KEY_PATH}
|
110
105
|
PidFile /dev/null
|
111
|
-
UsePrivilegeSeparation no
|
112
106
|
Subsystem sftp #{sftp_server_path}
|
113
107
|
ForceCommand HOME=#{File.expand_path home} sh -c "cd ~; [ -f .ssh/rc ] && . .ssh/rc; $SSH_ORIGINAL_COMMAND"
|
114
108
|
eoh
|
@@ -132,7 +126,7 @@ CUCUMBER SSHD STARTING ---------------------------------------------------------
|
|
132
126
|
HOME: #{home}
|
133
127
|
LISTEN: #{addr}:#{port}
|
134
128
|
PERSIST: #{persist}
|
135
|
-
|
129
|
+
COMMAND: #{command.join ' '}
|
136
130
|
--------------------------------------------------------------------------------
|
137
131
|
eoh
|
138
132
|
end
|
@@ -141,15 +135,11 @@ WAIT_READY: #{wait_ready}
|
|
141
135
|
SFTP_SERVER_PATHS.detect { |e| File.exist? e }
|
142
136
|
end
|
143
137
|
|
144
|
-
def wait_ready
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
end
|
150
|
-
|
151
|
-
def wait_ready?
|
152
|
-
!!wait_ready
|
138
|
+
def wait_ready
|
139
|
+
loop do
|
140
|
+
break if (IO.read @stderr.path).include? WAIT_READY_TRIGGER
|
141
|
+
sleep WAIT_READY_DELAY
|
142
|
+
end
|
153
143
|
end
|
154
144
|
|
155
145
|
def write_file_secure path, content
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber-sshd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thibault Jouan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: childprocess
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: cucumber
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,7 +61,6 @@ files:
|
|
75
61
|
- lib/cucumber/sshd.rb
|
76
62
|
- lib/cucumber/sshd/cucumber.rb
|
77
63
|
- lib/cucumber/sshd/server.rb
|
78
|
-
- lib/cucumber/sshd/version.rb
|
79
64
|
homepage: https://rubygems.org/gems/cucumber-sshd
|
80
65
|
licenses:
|
81
66
|
- BSD-3-Clause
|
@@ -91,11 +76,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
91
76
|
version: '0'
|
92
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
78
|
requirements:
|
94
|
-
- - "
|
79
|
+
- - ">="
|
95
80
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
81
|
+
version: '0'
|
97
82
|
requirements: []
|
98
|
-
rubygems_version: 3.
|
83
|
+
rubygems_version: 3.3.14
|
99
84
|
signing_key:
|
100
85
|
specification_version: 4
|
101
86
|
summary: Cucumber sshd helpers
|