producer-core 0.1.17 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Guardfile +2 -2
- data/features/support/{env_aruba.rb → env.rb} +2 -0
- data/features/tests/{has_dir.feature → dir.feature} +2 -2
- data/features/tests/{has_env.feature → env.feature} +3 -3
- data/features/tests/{has_executable.feature → executable.feature} +3 -3
- data/features/tests/{has_file.feature → file.feature} +2 -2
- data/features/tests/negated_test.feature +4 -4
- data/lib/producer/core/condition/dsl.rb +4 -4
- data/lib/producer/core/version.rb +1 -1
- data/producer-core.gemspec +5 -4
- data/spec/producer/core/condition/dsl_spec.rb +4 -4
- data/spec/support/net_ssh_story_helpers.rb +17 -2
- metadata +45 -17
- checksums.yaml +0 -7
- data/features/support/ssh.rb +0 -107
data/Guardfile
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
guard :cucumber, cli: '--format pretty --quiet' do
|
1
|
+
guard :cucumber, cli: '--format pretty --quiet', all_on_start: false do
|
2
2
|
watch(%r{\Afeatures/.+\.feature\z})
|
3
3
|
watch(%r{\Afeatures/support/.+\.rb\z}) { 'features' }
|
4
4
|
watch(%r{\Afeatures/step_definitions/.+_steps\.rb\z}) { 'features' }
|
5
5
|
end
|
6
6
|
|
7
|
-
guard :rspec, cmd: 'rspec -f doc' do
|
7
|
+
guard :rspec, cmd: 'bundle exec rspec -f doc' do
|
8
8
|
watch(%r{\Aspec/.+_spec\.rb\z})
|
9
9
|
watch(%r{\Alib/(.+)\.rb\z}) { |m| "spec/#{m[1]}_spec.rb" }
|
10
10
|
watch('spec/spec_helper.rb') { 'spec' }
|
@@ -1,5 +1,5 @@
|
|
1
1
|
@sshd
|
2
|
-
Feature: `
|
2
|
+
Feature: `dir?' condition keyword
|
3
3
|
|
4
4
|
Background:
|
5
5
|
Given a recipe with:
|
@@ -7,7 +7,7 @@ Feature: `has_dir' condition keyword
|
|
7
7
|
target 'some_host.test'
|
8
8
|
|
9
9
|
task :testing_directory_existence do
|
10
|
-
condition {
|
10
|
+
condition { dir? 'some_directory' }
|
11
11
|
|
12
12
|
echo 'evaluated'
|
13
13
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
@sshd
|
2
|
-
Feature: `
|
2
|
+
Feature: `env?' condition keyword
|
3
3
|
|
4
4
|
Scenario: succeeds when remote environment variable is defined
|
5
5
|
Given a recipe with:
|
@@ -7,7 +7,7 @@ Feature: `has_env' condition keyword
|
|
7
7
|
target 'some_host.test'
|
8
8
|
|
9
9
|
task :testing_env_var_definition do
|
10
|
-
condition {
|
10
|
+
condition { env? :shell }
|
11
11
|
|
12
12
|
echo 'evaluated'
|
13
13
|
end
|
@@ -21,7 +21,7 @@ Feature: `has_env' condition keyword
|
|
21
21
|
target 'some_host.test'
|
22
22
|
|
23
23
|
task :testing_env_var_definition do
|
24
|
-
condition {
|
24
|
+
condition { env? :inexistent_var }
|
25
25
|
|
26
26
|
echo 'evaluated'
|
27
27
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
@sshd
|
2
|
-
Feature: `
|
2
|
+
Feature: `executable?' condition keyword
|
3
3
|
|
4
4
|
Scenario: succeeds when remote executable is available
|
5
5
|
Given a recipe with:
|
@@ -7,7 +7,7 @@ Feature: `has_executable' condition keyword
|
|
7
7
|
target 'some_host.test'
|
8
8
|
|
9
9
|
task :testing_executable_availability do
|
10
|
-
condition {
|
10
|
+
condition { executable? 'true' }
|
11
11
|
|
12
12
|
echo 'evaluated'
|
13
13
|
end
|
@@ -21,7 +21,7 @@ Feature: `has_executable' condition keyword
|
|
21
21
|
target 'some_host.test'
|
22
22
|
|
23
23
|
task :testing_executable_availability do
|
24
|
-
condition {
|
24
|
+
condition { executable? 'some_non_existent_executable' }
|
25
25
|
|
26
26
|
echo 'evaluated'
|
27
27
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
@sshd
|
2
|
-
Feature: `
|
2
|
+
Feature: `file?' condition keyword
|
3
3
|
|
4
4
|
Background:
|
5
5
|
Given a recipe with:
|
@@ -7,7 +7,7 @@ Feature: `has_file' condition keyword
|
|
7
7
|
target 'some_host.test'
|
8
8
|
|
9
9
|
task :testing_file_existence do
|
10
|
-
condition {
|
10
|
+
condition { file? 'some_file' }
|
11
11
|
|
12
12
|
echo 'evaluated'
|
13
13
|
end
|
@@ -7,13 +7,13 @@ Feature: negated test prefix (no_)
|
|
7
7
|
target 'some_host.test'
|
8
8
|
|
9
9
|
task :successful_test do
|
10
|
-
condition {
|
10
|
+
condition { env? :shell }
|
11
11
|
|
12
12
|
echo 'successful_test'
|
13
13
|
end
|
14
14
|
|
15
15
|
task :negated_test do
|
16
|
-
condition {
|
16
|
+
condition { no_env? :shell }
|
17
17
|
|
18
18
|
echo 'negated_test'
|
19
19
|
end
|
@@ -28,13 +28,13 @@ Feature: negated test prefix (no_)
|
|
28
28
|
target 'some_host.test'
|
29
29
|
|
30
30
|
task :failing_test do
|
31
|
-
condition {
|
31
|
+
condition { env? :inexistent_var }
|
32
32
|
|
33
33
|
echo 'failing_test'
|
34
34
|
end
|
35
35
|
|
36
36
|
task :negated_test do
|
37
|
-
condition {
|
37
|
+
condition { no_env? :inexistent_var }
|
38
38
|
|
39
39
|
echo 'negated_test'
|
40
40
|
end
|
@@ -16,10 +16,10 @@ module Producer
|
|
16
16
|
define_test :`, Tests::ShellCommandStatus
|
17
17
|
define_test :sh, Tests::ShellCommandStatus
|
18
18
|
define_test :file_contains, Tests::FileContains
|
19
|
-
define_test :
|
20
|
-
define_test :
|
21
|
-
define_test :
|
22
|
-
define_test :
|
19
|
+
define_test :env?, Tests::HasEnv
|
20
|
+
define_test :executable?, Tests::HasExecutable
|
21
|
+
define_test :dir?, Tests::HasDir
|
22
|
+
define_test :file?, Tests::HasFile
|
23
23
|
|
24
24
|
attr_reader :block, :env, :tests
|
25
25
|
|
data/producer-core.gemspec
CHANGED
@@ -20,8 +20,9 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.add_dependency 'net-ssh', '~> 2.7'
|
21
21
|
s.add_dependency 'net-sftp', '~> 2.1'
|
22
22
|
|
23
|
-
s.add_development_dependency 'rspec',
|
24
|
-
s.add_development_dependency 'cucumber',
|
25
|
-
s.add_development_dependency 'aruba',
|
26
|
-
s.add_development_dependency '
|
23
|
+
s.add_development_dependency 'rspec', '~> 2.14'
|
24
|
+
s.add_development_dependency 'cucumber', '~> 1.3'
|
25
|
+
s.add_development_dependency 'aruba', '~> 0.5'
|
26
|
+
s.add_development_dependency 'cucumber-sshd', '~> 0.1'
|
27
|
+
s.add_development_dependency 'rake', '~> 10.1'
|
27
28
|
end
|
@@ -1,6 +1,21 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'net/ssh/test'
|
2
|
+
|
3
|
+
if Net::SSH::Version::CURRENT >= Net::SSH::Version[2, 8, 0]
|
4
|
+
module Net
|
5
|
+
module SSH
|
6
|
+
module Test
|
7
|
+
class Socket
|
8
|
+
def open(host, port, connections_options = nil)
|
9
|
+
@host, @port = host, port
|
10
|
+
self
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
3
17
|
|
18
|
+
module NetSSHStoryHelpers
|
4
19
|
include Net::SSH::Test
|
5
20
|
|
6
21
|
def story_with_new_channel
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: producer-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Thibault Jouan
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-04-23 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: net-ssh
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - "~>"
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: net-sftp
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - "~>"
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - "~>"
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: rspec
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - "~>"
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,6 +62,7 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: cucumber
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - "~>"
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - "~>"
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -69,6 +78,7 @@ dependencies:
|
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: aruba
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - "~>"
|
74
84
|
- !ruby/object:Gem::Version
|
@@ -76,13 +86,31 @@ dependencies:
|
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
91
|
- - "~>"
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '0.5'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: cucumber-sshd
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - "~>"
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0.1'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0.1'
|
83
110
|
- !ruby/object:Gem::Dependency
|
84
111
|
name: rake
|
85
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
86
114
|
requirements:
|
87
115
|
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
@@ -90,6 +118,7 @@ dependencies:
|
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
93
122
|
requirements:
|
94
123
|
- - "~>"
|
95
124
|
- !ruby/object:Gem::Version
|
@@ -126,17 +155,16 @@ files:
|
|
126
155
|
- features/steps/recipe_steps.rb
|
127
156
|
- features/steps/remote_steps.rb
|
128
157
|
- features/steps/ssh_steps.rb
|
129
|
-
- features/support/
|
158
|
+
- features/support/env.rb
|
130
159
|
- features/support/env_cucumber-doc_string.rb
|
131
|
-
- features/support/ssh.rb
|
132
160
|
- features/tasks/condition.feature
|
133
161
|
- features/tasks/evaluation.feature
|
134
162
|
- features/tasks/registry.feature
|
163
|
+
- features/tests/dir.feature
|
164
|
+
- features/tests/env.feature
|
165
|
+
- features/tests/executable.feature
|
166
|
+
- features/tests/file.feature
|
135
167
|
- features/tests/file_contains.feature
|
136
|
-
- features/tests/has_dir.feature
|
137
|
-
- features/tests/has_env.feature
|
138
|
-
- features/tests/has_executable.feature
|
139
|
-
- features/tests/has_file.feature
|
140
168
|
- features/tests/negated_test.feature
|
141
169
|
- features/tests/shell_command_status.feature
|
142
170
|
- lib/producer/core.rb
|
@@ -212,26 +240,27 @@ files:
|
|
212
240
|
- spec/support/test_env_helpers.rb
|
213
241
|
homepage: https://rubygems.org/gems/producer-core
|
214
242
|
licenses: []
|
215
|
-
metadata: {}
|
216
243
|
post_install_message:
|
217
244
|
rdoc_options: []
|
218
245
|
require_paths:
|
219
246
|
- lib
|
220
247
|
required_ruby_version: !ruby/object:Gem::Requirement
|
248
|
+
none: false
|
221
249
|
requirements:
|
222
250
|
- - ">="
|
223
251
|
- !ruby/object:Gem::Version
|
224
252
|
version: '0'
|
225
253
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
254
|
+
none: false
|
226
255
|
requirements:
|
227
256
|
- - ">="
|
228
257
|
- !ruby/object:Gem::Version
|
229
258
|
version: '0'
|
230
259
|
requirements: []
|
231
260
|
rubyforge_project:
|
232
|
-
rubygems_version:
|
261
|
+
rubygems_version: 1.8.29
|
233
262
|
signing_key:
|
234
|
-
specification_version:
|
263
|
+
specification_version: 3
|
235
264
|
summary: Provisioning tool
|
236
265
|
test_files:
|
237
266
|
- features/actions/echo.feature
|
@@ -252,17 +281,16 @@ test_files:
|
|
252
281
|
- features/steps/recipe_steps.rb
|
253
282
|
- features/steps/remote_steps.rb
|
254
283
|
- features/steps/ssh_steps.rb
|
255
|
-
- features/support/
|
284
|
+
- features/support/env.rb
|
256
285
|
- features/support/env_cucumber-doc_string.rb
|
257
|
-
- features/support/ssh.rb
|
258
286
|
- features/tasks/condition.feature
|
259
287
|
- features/tasks/evaluation.feature
|
260
288
|
- features/tasks/registry.feature
|
289
|
+
- features/tests/dir.feature
|
290
|
+
- features/tests/env.feature
|
291
|
+
- features/tests/executable.feature
|
292
|
+
- features/tests/file.feature
|
261
293
|
- features/tests/file_contains.feature
|
262
|
-
- features/tests/has_dir.feature
|
263
|
-
- features/tests/has_env.feature
|
264
|
-
- features/tests/has_executable.feature
|
265
|
-
- features/tests/has_file.feature
|
266
294
|
- features/tests/negated_test.feature
|
267
295
|
- features/tests/shell_command_status.feature
|
268
296
|
- spec/fixtures/recipes/empty.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 30fb89006ff65ccf133c3ba8169115217d1331f3
|
4
|
-
data.tar.gz: 5ca30ada198418333e91f5d7b5eabf7c13d95e9f
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 494eedfa740e3628b1b7d145dd7bfbfa96fb3f055661d243f0069b36e0b53bdb19282f1c93284dcd5fd3244af5e686fbac9b82592b45d81541a1970793e3adae
|
7
|
-
data.tar.gz: 1639982191a5860d744055dabb87192e800ad93fc450cb392492d355a9be1781da3e41e43040ba279aa3a689f53323a8c59c3b3c6291897064c4fc888b822c5d
|
data/features/support/ssh.rb
DELETED
@@ -1,107 +0,0 @@
|
|
1
|
-
# FIXME: should be extracted as a separate gem `cucumber-sshd?'.
|
2
|
-
class SSHServer
|
3
|
-
include Aruba::Api
|
4
|
-
|
5
|
-
DEFAULT_LISTEN_PORT = 2222
|
6
|
-
KEY_PATH = 'etc/ssh_host_rsa_key'
|
7
|
-
KEY_PUB_PATH = KEY_PATH.dup << '.pub'
|
8
|
-
SSHD_CONFIG_PATH = 'etc/sshd_config'
|
9
|
-
SSH_CONFIG_PATH = '.ssh/config'
|
10
|
-
|
11
|
-
attr_accessor :listen_port
|
12
|
-
|
13
|
-
def initialize(base_path)
|
14
|
-
@base_path = base_path
|
15
|
-
@listen_port = ENV['PRODUCER_TEST_SSHD_PORT'] ?
|
16
|
-
ENV['PRODUCER_TEST_SSHD_PORT'] :
|
17
|
-
DEFAULT_LISTEN_PORT
|
18
|
-
end
|
19
|
-
|
20
|
-
def start
|
21
|
-
in_current_dir do
|
22
|
-
@pid = fork do
|
23
|
-
$stderr.reopen '/dev/null'
|
24
|
-
exec "/usr/sbin/sshd -f etc/sshd_config -Deq"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def stop
|
30
|
-
Process.kill('TERM', @pid)
|
31
|
-
Process.wait(@pid)
|
32
|
-
end
|
33
|
-
|
34
|
-
def make_env
|
35
|
-
%w[etc .ssh].map { |e| create_dir e }
|
36
|
-
|
37
|
-
write_file KEY_PATH, <<-eoh
|
38
|
-
-----BEGIN RSA PRIVATE KEY-----
|
39
|
-
MIIEpAIBAAKCAQEA7EVDKeM7NYCGGVJw0wWLGCoptMFSR7DobhbEx2bAQbWDLFBF
|
40
|
-
7S9bXpW/ddebFA4GBkHVriNPwu/IGjIgO3tivVcy6iguNKdYRABlSfpeAs+OdCzK
|
41
|
-
hyEWhmKnFMZs2MhPiJg/KUep2gFZLoEcs9vkk37+cLcuUVkXVOSPXlYCuHjgkwaN
|
42
|
-
9ij/KvCcLP4tw83H3Pyh1Wn/Y4k1+3nWN2S3RgRHF9RjEx7nm2FmXcZq1wygPe5G
|
43
|
-
2bQNvZKykL+wlKIHwKiM4AWpVClczOiljNv9KROhGWanIZNNBIDTnikxFvY0FyoP
|
44
|
-
1qvRrE8BlqxNeyG/vYNmXsv8xpO0MOF65z3d2QIDAQABAoIBAHL8dmZxX0R3i0vR
|
45
|
-
knUwsnQNOQTuPPQFBelmDViaCiEwjGlJm+6F6KrMqERarO+Cr63l5m98YfoWJkWR
|
46
|
-
dZxdPT22rWHGMk6PzuYxZxoszgoCJ2skzWAcW1EFvBjhROHwAr0Qk1Ssut4NX/DB
|
47
|
-
B04FS2X5HS2QCOuwNymqnpejtmk+A2hv9bGVzj0X614gX3h5+0dImGrYE0Lu+Abf
|
48
|
-
5fvWhN5nxgK5CVlU7WM09WxyHj9lBXI+W2dgTl6w3QJfBBQTkarLmDpwIeErq9xc
|
49
|
-
al2qHj60nYC+RdFopuLfJWKiObdKRFpuPFYKbTA9nJz9T61zAF+LaDZ1mvdTuQmz
|
50
|
-
jJEJ0nECgYEA+o2uJcDOCD2LBp2LqeQcGk1PrFLpSQ5921B10SxDWhygs2+UlBCW
|
51
|
-
7t/qurqjEUZ91l3TAlUM7ViB/EkXk/xWJRJCzlmWRXfht9LPQTWlnDox/w8uSV2g
|
52
|
-
3VwPx1xpju2PHO7Vsk6dsQsyoro14qNhYa9m1lBHA1TtJ/RLWauvnmUCgYEA8WgZ
|
53
|
-
MthPXi/clDg2DlROGOEWd7WgaErEz578HWnegcMrHb8RV/XW21CO2UegHykzUlxz
|
54
|
-
vJxAqhQeKJbP7T8uzuCZnkZqBqPh5PJT1XqxZibTeQvqYLzbIiKqmDrZWuRJvbLL
|
55
|
-
kPxwYEG8R8nl9Dk1tLHuTQWWa5Q49he1cDss4GUCgYEA7WMBRZnIW3xb1Xe9VMjg
|
56
|
-
a3cmbqHbj7FgQ0OXbQigA6euBnRIdITHTCnxDtw4Fe0Q2uLoQoRsjA/YkDx8T2S8
|
57
|
-
BcGodDPjMYxk2rKsVR9L+poUtpEejLpd6H0KIhwHkzi26HXNGHRt6ckvP4hn94RO
|
58
|
-
hqwWJiXHMnvrenh2T85fxRUCgYEA7m06NhWejhAHc/zwpsZtO/VUE3e3rknqiIUl
|
59
|
-
zIc71D3G3+JOZunQA1xVOhSb+SrgHYBibu6Ej3a/MqeBRXkZ6gm6r7AsF9LU0SLl
|
60
|
-
2fsMKzA9vVgfbNwaMmS6yQ+WjUbb7hghJlmtQ+So6N5n2AaJHKaADmJuZmJGwAg6
|
61
|
-
k1ZexGECgYAFc+GjjFOPxC+Qg6z8261PnDffBK0o+0/EIq3cGA7Cp5pEo/hhMjDl
|
62
|
-
W7CLjAGkok9W+rr9XwwXWCBuJmPh2jYeNaQljrHt9hIAOAxoYdbweb9oSo5SkcHv
|
63
|
-
iDjcFK8S1e5vnlZAh9xH1WMCEsaz1WNqWm7CZOayN2LFn6Ed9seYYg==
|
64
|
-
-----END RSA PRIVATE KEY-----
|
65
|
-
eoh
|
66
|
-
|
67
|
-
write_file KEY_PUB_PATH, <<-eoh
|
68
|
-
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsRUMp4zs1gIYZUnDTBYsYKim0wVJHsOhuFsTHZsBBtYMsUEXtL1telb9115sUDgYGQdWuI0/C78gaMiA7e2K9VzLqKC40p1hEAGVJ+l4Cz450LMqHIRaGYqcUxmzYyE+ImD8pR6naAVkugRyz2+STfv5wty5RWRdU5I9eVgK4eOCTBo32KP8q8Jws/i3Dzcfc/KHVaf9jiTX7edY3ZLdGBEcX1GMTHuebYWZdxmrXDKA97kbZtA29krKQv7CUogfAqIzgBalUKVzM6KWM2/0pE6EZZqchk00EgNOeKTEW9jQXKg/Wq9GsTwGWrE17Ib+9g2Zey/zGk7Qw4XrnPd3Z
|
69
|
-
eoh
|
70
|
-
|
71
|
-
write_file SSHD_CONFIG_PATH, <<-eoh
|
72
|
-
Port #{listen_port}
|
73
|
-
ListenAddress ::1
|
74
|
-
|
75
|
-
Protocol 2
|
76
|
-
HostKey #{File.expand_path @base_path}/#{KEY_PATH}
|
77
|
-
PidFile /dev/null
|
78
|
-
UsePrivilegeSeparation no
|
79
|
-
Subsystem sftp /usr/lib/openssh/sftp-server
|
80
|
-
ForceCommand HOME=#{File.expand_path @base_path} sh -c "cd ~; $SSH_ORIGINAL_COMMAND"
|
81
|
-
eoh
|
82
|
-
|
83
|
-
write_file SSH_CONFIG_PATH, <<-eoh
|
84
|
-
Host some_host.test
|
85
|
-
HostName localhost
|
86
|
-
Port #{listen_port}
|
87
|
-
eoh
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
|
92
|
-
Before('@sshd') do
|
93
|
-
@_sshd = SSHServer.new(current_dir)
|
94
|
-
@_sshd.make_env
|
95
|
-
@_sshd.start
|
96
|
-
|
97
|
-
ENV['HOME'] = File.expand_path current_dir
|
98
|
-
|
99
|
-
# FIXME: we might need to wait until sshd accepts connections, polling isn't
|
100
|
-
# really acceptable, another workaround might be to execute sshd with
|
101
|
-
# LD_PRELOAD and a hook, so we could block here until the hook release the
|
102
|
-
# blocking call.
|
103
|
-
end
|
104
|
-
|
105
|
-
After('@sshd') do
|
106
|
-
@_sshd.stop
|
107
|
-
end
|