cucumber-sshd 2.0.0.pre1 → 2.0.0.pre5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f66c6692ec00c796550a364e5979acb85e9543c1
4
- data.tar.gz: 07bbd717fa000609bc99079929ed82aced1fa9ef
2
+ SHA256:
3
+ metadata.gz: c4fc1f7d9977497a8e980b168f4fd208711ce56ffe64b32d276aeebc1b9baabb
4
+ data.tar.gz: 943a900e9f029576fe9d9954129c6926b8c5f893eda6ad6eee44f3b699d01517
5
5
  SHA512:
6
- metadata.gz: 7b6c63aaada973bbd9f65b7d76bc612d61c4be85f12a586ea4a8d3ee37bbc223e76a91a09c8a8815da24c0ed3d8ead4b2991aadbabf7cb761383a65643816d72
7
- data.tar.gz: ac924a78406ec0ddbe5f6a6080e7073343ee35cd2621415bd4c1aeb30d304e99457a499fb2e8be1e541eb764272bfe92173fa19ea3ac5a91195849f82844dbbd
6
+ metadata.gz: b32c97654027cbe8c7cebeacaf992d7a382a014c4c182e7adc1f2bc523ca999cc837dfb49addab9bd2090b7e4b5dff1bfb73ae0010dee4daa8414e6a5b821f16
7
+ data.tar.gz: 034c163a3488953f71227f5597dadf354992bcde25ab90523b3256a43a3c156ae40d38badfafdc43a9b78ce3cf3820070e9cd8fbad41a69aa0f34b4b8e92bc10
@@ -1,21 +1,27 @@
1
1
  require 'cucumber/sshd/server'
2
2
 
3
3
  Before '@sshd' do
4
- start_server = -> home do
5
- Cucumber::SSHD::Server.start home, wait_ready: @_sshd_wait_ready
4
+ start_server = -> do
5
+ Cucumber::SSHD::Server.start \
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'),
11
+ wait_ready: ENV.key?('CUCUMBER_SSHD_WAIT_READY')
6
12
  end
7
13
 
8
- if @_sshd_fast && !$_sshd
9
- unless $_sshd
10
- $_sshd = start_server.call @_sshd_home
11
- at_exit { $_sshd.stop }
12
- end
13
- @_sshd = $_sshd
14
+ if !$_sshd && ENV.key?('CUCUMBER_SSHD_PERSIST')
15
+ $_sshd = start_server.call
16
+ at_exit { $_sshd.stop }
17
+ elsif !$_sshd
18
+ $_sshd = start_server.call
14
19
  else
15
- @_sshd = start_server.call @_sshd_home
20
+ $_sshd.configure
21
+ $_sshd.start unless ENV.key? 'CUCUMBER_SSHD_PERSIST'
16
22
  end
17
23
  end
18
24
 
19
25
  After '@sshd' do
20
- @_sshd.stop unless @_sshd_fast
26
+ $_sshd.stop unless ENV.key? 'CUCUMBER_SSHD_PERSIST'
21
27
  end
@@ -1,18 +1,16 @@
1
1
  module Cucumber
2
2
  module SSHD
3
3
  class Server
4
- BASE_PATH = 'tmp/home'.freeze
5
4
  HOST = 'some_host.test'.freeze
6
5
  HOSTNAME = 'localhost'.freeze
7
- LISTEN_ADDR = '::1'.freeze
8
- PORT = 2222
9
6
  COMMAND = '/usr/sbin/sshd'.freeze
10
7
  COMMAND_ARGS = '-Deq'.freeze
8
+ COMMAND_ARGS_DEBUG = '-De'.freeze
11
9
  KEY_PATH = 'etc/ssh_host_rsa_key'.freeze
12
10
  KEY_PUB_PATH = [KEY_PATH, '.pub'].join.freeze
13
11
  SSHD_CONFIG_PATH = 'etc/sshd_config'.freeze
14
12
  SSH_CONFIG_PATH = '.ssh/config'.freeze
15
- SSH_KNOWN_HOSTS_PATH = '.ssh/known_host'.freeze
13
+ SSH_KNOWN_HOSTS_PATH = '.ssh/known_hosts'.freeze
16
14
  SFTP_SERVER_PATHS = %w[
17
15
  /usr/libexec/sftp-server
18
16
  /usr/lib/openssh/sftp-server
@@ -31,22 +29,24 @@ qnLMVQddVitzQP7LEhXbNUuUAzEMfA6rAA==
31
29
  'XVYrc0D+yxIV2zVLlAMxDHwOqwA='
32
30
 
33
31
  class << self
34
- def start *args
35
- server = new args.shift, *args
32
+ def start options
33
+ server = new **options
36
34
  server.configure
37
35
  server.start
38
36
  server
39
37
  end
40
38
  end
41
39
 
42
- attr_accessor :base_path, :host, :addr, :port, :pid
40
+ attr_reader :home
43
41
 
44
- def initialize base_path, wait_ready: false
45
- @base_path = base_path || BASE_PATH
46
- @host = HOST
47
- @addr = ENV.fetch 'CUCUMBER_SSHD_LISTEN', LISTEN_ADDR
48
- @port = ENV.fetch 'CUCUMBER_SSHD_PORT', PORT
49
- @pid = nil
42
+ def initialize(
43
+ home:, addr:, port:, debug: false, persist: false, wait_ready: false
44
+ )
45
+ @home = home
46
+ @addr = addr
47
+ @port = port
48
+ @debug = debug
49
+ @persist = persist
50
50
  @wait_ready = wait_ready
51
51
  end
52
52
 
@@ -57,17 +57,17 @@ qnLMVQddVitzQP7LEhXbNUuUAzEMfA6rAA==
57
57
  end
58
58
 
59
59
  def start
60
- Dir.chdir base_path do
60
+ Dir.chdir home do
61
61
  @pid = fork do
62
- $stderr.reopen '/dev/null' unless ENV.key? 'CUCUMBER_SSHD_DEBUG'
62
+ $stderr.reopen '/dev/null' unless debug?
63
63
  exec command
64
64
  end
65
- if ENV.key? 'CUCUMBER_SSHD_DEBUG'
65
+ if debug?
66
66
  sleep 0.05
67
67
  fail "`#{command}` failed" if Process.waitpid pid, Process::WNOHANG
68
68
  end
69
69
  end
70
-
70
+ print_server_info if debug?
71
71
  wait_ready! if wait_ready?
72
72
  end
73
73
 
@@ -78,21 +78,23 @@ qnLMVQddVitzQP7LEhXbNUuUAzEMfA6rAA==
78
78
 
79
79
  private
80
80
 
81
+ attr_reader :addr, :port, :debug, :persist, :wait_ready, :pid
82
+
81
83
  def command
82
84
  [
83
85
  COMMAND,
84
86
  '-f',
85
87
  SSHD_CONFIG_PATH,
86
- COMMAND_ARGS
88
+ (debug? ? COMMAND_ARGS_DEBUG : COMMAND_ARGS)
87
89
  ].join ' '
88
90
  end
89
91
 
90
92
  def configure_client
91
93
  write_file_secure SSH_CONFIG_PATH, <<-eoh
92
- Host #{host}
94
+ Host #{HOST}
93
95
  HostName #{HOSTNAME}
94
96
  Port #{port}
95
- UserKnownHostsFile #{File.expand_path base_path}/#{SSH_KNOWN_HOSTS_PATH}
97
+ UserKnownHostsFile #{File.expand_path home}/#{SSH_KNOWN_HOSTS_PATH}
96
98
  eoh
97
99
  write_file_secure SSH_KNOWN_HOSTS_PATH, "[#{HOSTNAME}]:2222 #{KEY_PUB}"
98
100
  end
@@ -104,16 +106,35 @@ Host #{host}
104
106
  Port #{port}
105
107
  ListenAddress #{addr}
106
108
  Protocol 2
107
- HostKey #{File.expand_path base_path}/#{KEY_PATH}
109
+ HostKey #{File.expand_path home}/#{KEY_PATH}
108
110
  PidFile /dev/null
109
111
  UsePrivilegeSeparation no
110
112
  Subsystem sftp #{sftp_server_path}
111
- ForceCommand HOME=#{File.expand_path base_path} sh -c "cd ~; [ -f .ssh/rc ] && . .ssh/rc; $SSH_ORIGINAL_COMMAND"
113
+ ForceCommand HOME=#{File.expand_path home} sh -c "cd ~; [ -f .ssh/rc ] && . .ssh/rc; $SSH_ORIGINAL_COMMAND"
112
114
  eoh
113
115
  end
114
116
 
115
117
  def create_dir_secure path
116
- FileUtils.mkdir_p File.join(base_path, path), mode: 0700
118
+ FileUtils.mkdir_p File.join(home, path), mode: 0700
119
+ end
120
+
121
+ def debug?
122
+ !!debug
123
+ end
124
+
125
+ def persist?
126
+ !!persist
127
+ end
128
+
129
+ def print_server_info
130
+ puts <<-eoh
131
+ CUCUMBER SSHD STARTING ---------------------------------------------------------
132
+ HOME: #{home}
133
+ LISTEN: #{addr}:#{port}
134
+ PERSIST: #{persist}
135
+ WAIT_READY: #{wait_ready}
136
+ --------------------------------------------------------------------------------
137
+ eoh
117
138
  end
118
139
 
119
140
  def sftp_server_path
@@ -128,11 +149,11 @@ ForceCommand HOME=#{File.expand_path base_path} sh -c "cd ~; [ -f .ssh/rc ] && .
128
149
  end
129
150
 
130
151
  def wait_ready?
131
- !!@wait_ready
152
+ !!wait_ready
132
153
  end
133
154
 
134
155
  def write_file_secure path, content
135
- File.open File.join(base_path, path), ?w, 0600 do |file|
156
+ File.open File.join(home, path), ?w, 0600 do |file|
136
157
  file.write content
137
158
  end
138
159
  end
@@ -1,5 +1,5 @@
1
1
  module Cucumber
2
2
  module SSHD
3
- VERSION = '2.0.0.pre1'.freeze
3
+ VERSION = '2.0.0.pre5'.freeze
4
4
  end
5
5
  end
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.0.0.pre1
4
+ version: 2.0.0.pre5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thibault Jouan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-20 00:00:00.000000000 Z
11
+ date: 2021-10-17 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
@@ -80,7 +66,7 @@ homepage: https://rubygems.org/gems/cucumber-sshd
80
66
  licenses:
81
67
  - BSD-3-Clause
82
68
  metadata: {}
83
- post_install_message:
69
+ post_install_message:
84
70
  rdoc_options: []
85
71
  require_paths:
86
72
  - lib
@@ -95,9 +81,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
81
  - !ruby/object:Gem::Version
96
82
  version: 1.3.1
97
83
  requirements: []
98
- rubyforge_project:
99
- rubygems_version: 2.6.14
100
- signing_key:
84
+ rubygems_version: 3.2.29
85
+ signing_key:
101
86
  specification_version: 4
102
87
  summary: Cucumber sshd helpers
103
88
  test_files: []