pipe2me-client 0.2.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 +7 -0
- data/README.mdown +96 -0
- data/bin/pipe2me +21 -0
- data/lib/pipe2me.rb +9 -0
- data/lib/pipe2me/cli-foreman.rb +21 -0
- data/lib/pipe2me/cli-monit.rb +62 -0
- data/lib/pipe2me/cli.rb +29 -0
- data/lib/pipe2me/config.rb +7 -0
- data/lib/pipe2me/ext/file_ext.rb +16 -0
- data/lib/pipe2me/ext/http.rb +213 -0
- data/lib/pipe2me/ext/shell_format.rb +69 -0
- data/lib/pipe2me/ext/sys.rb +38 -0
- data/lib/pipe2me/tunnel.rb +78 -0
- data/lib/pipe2me/tunnel/commands.rb +68 -0
- data/lib/pipe2me/tunnel/echo/http +56 -0
- data/lib/pipe2me/tunnel/echo/https +18 -0
- data/lib/pipe2me/tunnel/openssl.conf +351 -0
- data/lib/pipe2me/tunnel/openssl.rb +29 -0
- data/lib/pipe2me/tunnel/ssh.rb +16 -0
- data/lib/pipe2me/version.rb +4 -0
- data/test/000-roundup-test.sh +7 -0
- data/test/auth-token-test.sh +12 -0
- data/test/env-test.sh +23 -0
- data/test/foreman-test.sh +11 -0
- data/test/monitrc-test.sh +23 -0
- data/test/opensslkey-test.sh +25 -0
- data/test/redirection-test.sh +12 -0
- data/test/setup-test.sh +18 -0
- data/test/sshkey-test.sh +13 -0
- data/test/testhelper.debug +2 -0
- data/test/testhelper.inc +24 -0
- data/test/testhelper.release +2 -0
- data/test/version-test.sh +9 -0
- metadata +131 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
module Pipe2me::Tunnel::OpenSSL
|
2
|
+
HTTP = Pipe2me::HTTP
|
3
|
+
|
4
|
+
SSL_KEY = Pipe2me::Tunnel::SSL_KEY
|
5
|
+
SSL_CERT = Pipe2me::Tunnel::SSL_CERT
|
6
|
+
|
7
|
+
def openssl_conf
|
8
|
+
File.join(File.dirname(__FILE__), "openssl.conf")
|
9
|
+
end
|
10
|
+
|
11
|
+
# create openssl private key and cert signing request.
|
12
|
+
def ssl_keygen
|
13
|
+
sys! "openssl",
|
14
|
+
"req", "-config", openssl_conf,
|
15
|
+
"-new", "-nodes",
|
16
|
+
"-keyout", SSL_KEY,
|
17
|
+
"-out", "#{SSL_KEY}.csr",
|
18
|
+
"-subj", "/C=de/ST=ne/L=Berlin/O=pipe2me/CN=#{config.fqdn}",
|
19
|
+
"-days", "7300"
|
20
|
+
end
|
21
|
+
|
22
|
+
# send cert signing request to server and receive certificate
|
23
|
+
def ssl_certsign
|
24
|
+
cert = HTTP.post!("#{url}/cert.pem", File.read("#{SSL_KEY}.csr"), {'Content-Type' =>'text/plain'})
|
25
|
+
UI.debug "received certificate:\n#{cert}"
|
26
|
+
|
27
|
+
File.atomic_write SSL_CERT, cert
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Pipe2me::Tunnel::SSH
|
2
|
+
HTTP = Pipe2me::HTTP
|
3
|
+
|
4
|
+
SSH_PUBKEY = Pipe2me::Tunnel::SSH_PUBKEY
|
5
|
+
SSH_PRIVKEY = Pipe2me::Tunnel::SSH_PRIVKEY
|
6
|
+
|
7
|
+
def ssh_keygen
|
8
|
+
sh! "ssh-keygen -t rsa -N '' -C #{config.fqdn} -f pipe2me.id_rsa >&2"
|
9
|
+
sh! "chmod 600 pipe2me.id_rsa*"
|
10
|
+
HTTP.post!("#{url}/id_rsa.pub", File.read(SSH_PUBKEY), {'Content-Type' =>'text/plain'})
|
11
|
+
rescue
|
12
|
+
FileUtils.rm_rf SSH_PRIVKEY
|
13
|
+
FileUtils.rm_rf SSH_PUBKEY
|
14
|
+
raise
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env roundup
|
2
|
+
describe "fails on invalid and missing auth"
|
3
|
+
|
4
|
+
. $(dirname $1)/testhelper.inc
|
5
|
+
|
6
|
+
it_fails_on_invalid_auth() {
|
7
|
+
! $pipe2me setup --server $pipe2me_server --auth $pipe2me_token.invalid
|
8
|
+
}
|
9
|
+
|
10
|
+
it_fails_on_missing_auth_token() {
|
11
|
+
! $pipe2me setup --server $pipe2me_server
|
12
|
+
}
|
data/test/env-test.sh
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env roundup
|
2
|
+
describe "show pipe2me environment"
|
3
|
+
|
4
|
+
. $(dirname $1)/testhelper.inc
|
5
|
+
|
6
|
+
it_start_a_tunnel() {
|
7
|
+
fqdn=$($pipe2me setup --server $pipe2me_server --auth $pipe2me_token)
|
8
|
+
$pipe2me env > env
|
9
|
+
echo "== env is ============="
|
10
|
+
cat env
|
11
|
+
echo "== env done ============="
|
12
|
+
|
13
|
+
cat env | grep PIPE2ME_SERVER
|
14
|
+
cat env | grep PIPE2ME_TOKEN
|
15
|
+
cat env | grep PIPE2ME_FQDN
|
16
|
+
cat env | grep PIPE2ME_URLS_0
|
17
|
+
cat env | grep PIPE2ME_TUNNEL
|
18
|
+
! (cat env | grep PIPE2ME_URLS_1)
|
19
|
+
|
20
|
+
# can we source the env?
|
21
|
+
eval $($pipe2me env)
|
22
|
+
echo $PIPE2ME_URLS_0 | grep http
|
23
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env roundup
|
2
|
+
describe "setup and starts tunnels in foreman mode"
|
3
|
+
|
4
|
+
. $(dirname $1)/testhelper.inc
|
5
|
+
|
6
|
+
it_works_with_monitrc() {
|
7
|
+
false [TODO] It setup and starts tunnels in monitrc mode
|
8
|
+
# i.e. pipe2me setup
|
9
|
+
# pipe2me monitrc
|
10
|
+
# pipe2me monit start all
|
11
|
+
# ...
|
12
|
+
}
|
13
|
+
|
14
|
+
it_creates_a_monitrc_file() {
|
15
|
+
! [ -e pipe2me.monitrc ]
|
16
|
+
fqdn=$($pipe2me setup --server $pipe2me_server --auth $pipe2me_token)
|
17
|
+
|
18
|
+
$pipe2me monitrc
|
19
|
+
[ -e pipe2me.monitrc ]
|
20
|
+
|
21
|
+
# The file is 0600
|
22
|
+
ls -l pipe2me.monitrc | grep -e "-rw-------"
|
23
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env roundup
|
2
|
+
describe "openssl tests"
|
3
|
+
|
4
|
+
. $(dirname $1)/testhelper.inc
|
5
|
+
|
6
|
+
# setup creates and signs openssl credentials
|
7
|
+
it_sets_up_openssl_certs() {
|
8
|
+
fqdn=$($pipe2me setup --server $pipe2me_server --auth $pipe2me_token)
|
9
|
+
test -f pipe2me.openssl.priv
|
10
|
+
cat pipe2me.openssl.priv | grep "BEGIN RSA PRIVATE KEY"
|
11
|
+
|
12
|
+
test -f pipe2me.openssl.cert
|
13
|
+
cat pipe2me.openssl.cert | grep "BEGIN CERTIFICATE"
|
14
|
+
|
15
|
+
# verify cert name
|
16
|
+
openssl x509 -in pipe2me.openssl.cert -text | grep CN=$fqdn
|
17
|
+
}
|
18
|
+
|
19
|
+
it_cannot_sign_other_certs() {
|
20
|
+
false [TODO] A certificate cannot be used to sign other certificates
|
21
|
+
}
|
22
|
+
|
23
|
+
it_cannot_sign_fake_certs() {
|
24
|
+
false [TODO] A client cannot ask the server to sign certs with different names
|
25
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env roundup
|
2
|
+
describe 'a HTTP(s) connection to subdomain.$pipe2me_server redirects to subdomain.$pipe2me_server:port'
|
3
|
+
|
4
|
+
. $(dirname $1)/testhelper.inc
|
5
|
+
|
6
|
+
it_redirects_https_connections() {
|
7
|
+
false [TODO] 'redirects https://subdomain.$pipe2me_server to https://subdomain.$pipe2me_server:port'
|
8
|
+
}
|
9
|
+
|
10
|
+
it_redirects_http_connections() {
|
11
|
+
false [TODO] 'redirects http://subdomain.$pipe2me_server to http://subdomain.$pipe2me_server:port'
|
12
|
+
}
|
data/test/setup-test.sh
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env roundup
|
2
|
+
describe "tunnel setup"
|
3
|
+
|
4
|
+
. $(dirname $1)/testhelper.inc
|
5
|
+
|
6
|
+
# setup a tunnel
|
7
|
+
it_sets_up_tunnels() {
|
8
|
+
fqdn=$($pipe2me setup --server $pipe2me_server --auth $pipe2me_token)
|
9
|
+
|
10
|
+
# pipe2me setup --server $pipe2me_server returns the fqdn of the subdomain and nothing else
|
11
|
+
test 1 -eq $(echo $fqdn | wc -l)
|
12
|
+
|
13
|
+
# The subdomain is actually a subdomain.
|
14
|
+
echo $fqdn | grep \.pipe2\.dev
|
15
|
+
|
16
|
+
# Cannot setup a second tunnel in the same directory.
|
17
|
+
! $pipe2me setup --server $pipe2me_server --auth $pipe2me_token
|
18
|
+
}
|
data/test/sshkey-test.sh
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env roundup
|
2
|
+
describe "ssh key creation"
|
3
|
+
|
4
|
+
. $(dirname $1)/testhelper.inc
|
5
|
+
|
6
|
+
it_sets_up_ssh_identity() {
|
7
|
+
fqdn=$($pipe2me setup --server $pipe2me_server --auth $pipe2me_token)
|
8
|
+
test -f pipe2me.id_rsa.pub
|
9
|
+
test -f pipe2me.id_rsa
|
10
|
+
|
11
|
+
# identity must contain $fqdn
|
12
|
+
cat pipe2me.id_rsa.pub | grep $fqdn
|
13
|
+
}
|
data/test/testhelper.inc
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# The pipe2me binary to test
|
2
|
+
pipe2me=$(cd $(dirname $1)/../bin && pwd)/pipe2me
|
3
|
+
# pipe2me_server=http://test.pipe2.me:8080
|
4
|
+
|
5
|
+
# Load test scenario settings
|
6
|
+
echo "Load $TEST_ENV test settings"
|
7
|
+
if [ -z "$TEST_ENV" ]; then
|
8
|
+
TEST_ENV=debug
|
9
|
+
fi
|
10
|
+
|
11
|
+
. $(dirname $1)/testhelper.${TEST_ENV}
|
12
|
+
|
13
|
+
# A temporary workspace to run tests.
|
14
|
+
scrub=$(cd $(dirname $1)/../tmp && pwd)/scrub
|
15
|
+
|
16
|
+
before() {
|
17
|
+
mkdir -p $scrub
|
18
|
+
cd $scrub
|
19
|
+
}
|
20
|
+
|
21
|
+
after() {
|
22
|
+
cd ..
|
23
|
+
rm -rf $scrub
|
24
|
+
}
|
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pipe2me-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- radiospiel
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rack
|
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
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: foreman
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simple-ui
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: pipe2.me command line client V0.2.0; (c) The kink team, 2013, 2014.
|
70
|
+
email: contact@kinko.me
|
71
|
+
executables:
|
72
|
+
- pipe2me
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- README.mdown
|
77
|
+
- bin/pipe2me
|
78
|
+
- lib/pipe2me.rb
|
79
|
+
- lib/pipe2me/cli-foreman.rb
|
80
|
+
- lib/pipe2me/cli-monit.rb
|
81
|
+
- lib/pipe2me/cli.rb
|
82
|
+
- lib/pipe2me/config.rb
|
83
|
+
- lib/pipe2me/ext/file_ext.rb
|
84
|
+
- lib/pipe2me/ext/http.rb
|
85
|
+
- lib/pipe2me/ext/shell_format.rb
|
86
|
+
- lib/pipe2me/ext/sys.rb
|
87
|
+
- lib/pipe2me/tunnel.rb
|
88
|
+
- lib/pipe2me/tunnel/commands.rb
|
89
|
+
- lib/pipe2me/tunnel/echo/http
|
90
|
+
- lib/pipe2me/tunnel/echo/https
|
91
|
+
- lib/pipe2me/tunnel/openssl.conf
|
92
|
+
- lib/pipe2me/tunnel/openssl.rb
|
93
|
+
- lib/pipe2me/tunnel/ssh.rb
|
94
|
+
- lib/pipe2me/version.rb
|
95
|
+
- test/000-roundup-test.sh
|
96
|
+
- test/auth-token-test.sh
|
97
|
+
- test/env-test.sh
|
98
|
+
- test/foreman-test.sh
|
99
|
+
- test/monitrc-test.sh
|
100
|
+
- test/opensslkey-test.sh
|
101
|
+
- test/redirection-test.sh
|
102
|
+
- test/setup-test.sh
|
103
|
+
- test/sshkey-test.sh
|
104
|
+
- test/testhelper.debug
|
105
|
+
- test/testhelper.inc
|
106
|
+
- test/testhelper.release
|
107
|
+
- test/version-test.sh
|
108
|
+
homepage: https://github.com/kinko/pipe2me-client
|
109
|
+
licenses: []
|
110
|
+
metadata: {}
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
requirements: []
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 2.2.1
|
128
|
+
signing_key:
|
129
|
+
specification_version: 4
|
130
|
+
summary: pipe2.me command line client V0.2.0; (c) The kink team, 2013, 2014.
|
131
|
+
test_files: []
|