publish_to_web 2.2.3 → 2.2.4
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/publish_to_web.rb +28 -19
- data/lib/publish_to_web/tunnel.rb +7 -1
- data/lib/publish_to_web/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af20d39a6389731ea92171a36742afcfe9d8463e
|
4
|
+
data.tar.gz: d6f36d48e84d510f2cb22f8c08ff37ccc607bca9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f4da0373aacaca26d89457a39658fa3d744b44a35d1d71015fa764e45c35e77c9d9a3f2001a4676a2ca17a6bb498e980129a87780ca8356d38a3fddfd417b47
|
7
|
+
data.tar.gz: b1da80d1eec22a95212c34bd1a86f6d1268a3a99373c2ddf9eb50f9351a913c677888587b5746ef70a318e1a33b06b41c70aa34b03eda637ca9be64b915f58e8
|
data/lib/publish_to_web.rb
CHANGED
@@ -60,13 +60,15 @@ class PublishToWeb
|
|
60
60
|
logger.info "Checking if local backend is available at #{bind_host}:#{forward_port}"
|
61
61
|
TCPSocket.new(bind_host, forward_port).close
|
62
62
|
|
63
|
-
rescue Errno::ECONNREFUSED
|
63
|
+
rescue Errno::ECONNREFUSED
|
64
64
|
logger.warn "Local backend is not available (yet?) - waiting for it to become available"
|
65
65
|
sleep 5
|
66
66
|
check_local_endpoint
|
67
67
|
end
|
68
68
|
|
69
|
-
def prepare_directory
|
69
|
+
def prepare_directory(fail_gracefully = true)
|
70
|
+
config.success = config.error = nil
|
71
|
+
|
70
72
|
if node_name = config.node_name
|
71
73
|
unless ["#{node_name}", "#{node_name}.protonet.info"].include? directory.node_name
|
72
74
|
directory.set_node_name node_name
|
@@ -74,39 +76,46 @@ class PublishToWeb
|
|
74
76
|
end
|
75
77
|
directory.set_version
|
76
78
|
directory.public_key
|
79
|
+
|
80
|
+
config.success = 'directory_configured'
|
81
|
+
rescue PublishToWeb::Directory::HttpResponseError => err
|
82
|
+
logger.warn "#{err.class}: #{err}"
|
83
|
+
logger.warn "Failed to interact with directory, will try again in a bit"
|
84
|
+
|
85
|
+
# Write out that we have an issue since the directory might refuse
|
86
|
+
# our license, our chosen node name might be in conflict and so on
|
87
|
+
config.error = "directory_failure.#{err.response.status.to_i}"
|
88
|
+
|
89
|
+
raise unless fail_gracefully
|
77
90
|
end
|
78
91
|
|
79
|
-
def
|
80
|
-
|
92
|
+
def stop_tunnel
|
93
|
+
tunnel.stop
|
94
|
+
@thread.try :join
|
95
|
+
end
|
81
96
|
|
82
|
-
|
83
|
-
|
97
|
+
def start_tunnel(blocking = true)
|
98
|
+
unless blocking
|
99
|
+
@thread = Thread.new start_tunnel true
|
100
|
+
return
|
101
|
+
end
|
84
102
|
|
103
|
+
prepare_directory false
|
85
104
|
check_local_endpoint
|
86
105
|
|
87
106
|
logger.info "Starting tunnel to #{proxy_host} as #{directory.node_name}"
|
88
|
-
tunnel.start
|
89
|
-
config.success = "connection_established"
|
90
|
-
end
|
107
|
+
tunnel.start { config.success = "connection_established" }
|
91
108
|
|
92
109
|
rescue Net::SSH::AuthenticationFailed => err
|
93
110
|
logger.warn "#{err.class}: #{err}"
|
94
111
|
logger.warn "Probably the SSH key is not deployed on the proxy server yet, retrying in a bit"
|
95
112
|
|
96
113
|
sleep 30
|
97
|
-
|
114
|
+
retry
|
98
115
|
|
99
116
|
rescue PublishToWeb::Directory::HttpResponseError => err
|
100
|
-
logger.warn "#{err.class}: #{err}"
|
101
|
-
logger.warn "Failed to interact with directory, will try again in a bit"
|
102
|
-
|
103
|
-
# Write out that we have an issue since the directory might refuse
|
104
|
-
# our license, our chosen node name might be in conflict and so on
|
105
|
-
config.success = nil
|
106
|
-
config.error = "directory_failure.#{err.response.status.to_i}"
|
107
|
-
|
108
117
|
sleep 30
|
109
|
-
|
118
|
+
retry
|
110
119
|
end
|
111
120
|
|
112
121
|
private
|
@@ -40,6 +40,10 @@ class PublishToWeb
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
def stop
|
44
|
+
@running = false
|
45
|
+
end
|
46
|
+
|
43
47
|
def start
|
44
48
|
Net::SSH.start proxy_host, proxy_user, ssh_options do |ssh|
|
45
49
|
ssh.forward.remote forward_port, bind_host, remote_port do |real_remote_port|
|
@@ -53,7 +57,9 @@ class PublishToWeb
|
|
53
57
|
end
|
54
58
|
|
55
59
|
logger.info "Entering keepalive loop"
|
56
|
-
|
60
|
+
|
61
|
+
@running = true
|
62
|
+
ssh.loop { @running }
|
57
63
|
end
|
58
64
|
end
|
59
65
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: publish_to_web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christoph Olszowka
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-ssh
|