publish_to_web 2.3.0 → 2.4.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/publish_to_web.rb +10 -3
- data/lib/publish_to_web/config.rb +23 -1
- data/lib/publish_to_web/directory.rb +40 -3
- data/lib/publish_to_web/version.rb +1 -1
- data/publish_to_web.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f4db33296b70fcd1d9d12c67673c57b2d65fcff
|
4
|
+
data.tar.gz: edb2dad4f8c146eb9a7fd6c788926e912de1ad52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c02c078adae039427353534023a9ffab730c37b84913961d26c4fde3b08fdec95bc919b907e53cd483108f5de36c28fb690a6b018f4a4fb93cbec7519a59e4e7
|
7
|
+
data.tar.gz: 42bb86b062e59ecf95f7079242fed975e297e86cfd0e9481319760a62da1684b80073e359b745d8cb374898acf98e5ab5b4d297b75483ff05bd33747967b7712
|
data/lib/publish_to_web.rb
CHANGED
@@ -59,6 +59,7 @@ class PublishToWeb
|
|
59
59
|
def check_local_endpoint
|
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
|
+
logger.info " ✔ Local backend is available!"
|
62
63
|
|
63
64
|
rescue Errno::ECONNREFUSED
|
64
65
|
logger.warn "Local backend is not available (yet?) - waiting for it to become available"
|
@@ -78,6 +79,7 @@ class PublishToWeb
|
|
78
79
|
directory.set_version
|
79
80
|
directory.public_key
|
80
81
|
|
82
|
+
logger.info "Updating SMTP configuration"
|
81
83
|
directory.smtp_config.tap do |smtp|
|
82
84
|
config.smtp_host = smtp["host"]
|
83
85
|
config.smtp_sender = smtp["sender"]
|
@@ -85,7 +87,15 @@ class PublishToWeb
|
|
85
87
|
config.smtp_pass = smtp["password"]
|
86
88
|
end
|
87
89
|
|
90
|
+
logger.info "Updating limits configuration"
|
91
|
+
if limits = directory.limits
|
92
|
+
config.account_limit = limits["accounts"]
|
93
|
+
end
|
94
|
+
|
95
|
+
directory.report_usage
|
96
|
+
|
88
97
|
config.success = 'directory_configured'
|
98
|
+
|
89
99
|
rescue PublishToWeb::Directory::HttpResponseError => err
|
90
100
|
logger.warn "#{err.class}: #{err}"
|
91
101
|
logger.warn "Failed to interact with directory, will try again in a bit"
|
@@ -129,7 +139,6 @@ class PublishToWeb
|
|
129
139
|
retry
|
130
140
|
|
131
141
|
rescue PublishToWeb::Directory::HttpResponseError
|
132
|
-
|
133
142
|
# already handled by #prepare_directory, we just need to wait and retry...
|
134
143
|
|
135
144
|
sleep 30
|
@@ -140,8 +149,6 @@ class PublishToWeb
|
|
140
149
|
logger.error error.message
|
141
150
|
logger.error error.backtrace.join("\n")
|
142
151
|
|
143
|
-
abort error.message
|
144
|
-
|
145
152
|
end
|
146
153
|
|
147
154
|
private
|
@@ -22,7 +22,7 @@ class PublishToWeb
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def enabled?
|
25
|
-
!!store.get('ptw/enabled')
|
25
|
+
!!store.get('ptw/control/enabled')
|
26
26
|
end
|
27
27
|
|
28
28
|
config_attribute :hardware_id, "ptw/hardware_id"
|
@@ -37,5 +37,27 @@ class PublishToWeb
|
|
37
37
|
config_attribute :smtp_sender, "smtp/sender"
|
38
38
|
config_attribute :smtp_user, "smtp/username"
|
39
39
|
config_attribute :smtp_pass, "smtp/password"
|
40
|
+
|
41
|
+
config_attribute :account_limit, "soul/account_limit"
|
42
|
+
|
43
|
+
def active_accounts
|
44
|
+
store.get 'soul/active_accounts'
|
45
|
+
end
|
46
|
+
|
47
|
+
def support_identifier
|
48
|
+
identifier = store.get('system/support_identifier')
|
49
|
+
if identifier.kind_of?(String) and identifier.strip.length > 0
|
50
|
+
identifier
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def system_version
|
55
|
+
parts = [store.get('system/channel'), store.get('system/release_number')]
|
56
|
+
if parts.all? {|p| p.kind_of?(String) and p.strip.length > 0 }
|
57
|
+
parts.join("/")
|
58
|
+
else
|
59
|
+
"unknown"
|
60
|
+
end
|
61
|
+
end
|
40
62
|
end
|
41
63
|
end
|
@@ -54,7 +54,7 @@ class PublishToWeb
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def version
|
57
|
-
|
57
|
+
config.system_version
|
58
58
|
end
|
59
59
|
|
60
60
|
def set_node_name(node_name)
|
@@ -71,7 +71,12 @@ class PublishToWeb
|
|
71
71
|
|
72
72
|
def set_version
|
73
73
|
logger.info "Setting version at directory to #{version}"
|
74
|
-
|
74
|
+
payload = {
|
75
|
+
license_key: license_key,
|
76
|
+
version: Shellwords.shellescape(version),
|
77
|
+
support_identifier: config.support_identifier
|
78
|
+
}
|
79
|
+
response = HTTP.post url_for('set_version'), form: payload
|
75
80
|
if (200..299).include? response.status
|
76
81
|
true
|
77
82
|
else
|
@@ -79,6 +84,24 @@ class PublishToWeb
|
|
79
84
|
end
|
80
85
|
end
|
81
86
|
|
87
|
+
def report_usage
|
88
|
+
if active_accounts = config.active_accounts
|
89
|
+
logger.info "Reporting usage to directory"
|
90
|
+
payload = {
|
91
|
+
license_key: license_key,
|
92
|
+
active_accounts: active_accounts
|
93
|
+
}
|
94
|
+
response = HTTP.post url_for('usage'), form: payload
|
95
|
+
if (200..299).include? response.status
|
96
|
+
true
|
97
|
+
else
|
98
|
+
raise HttpResponseError.new("Failed to submit usage to directory", response)
|
99
|
+
end
|
100
|
+
else
|
101
|
+
logger.info "Not reporting usage as no data is available"
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
82
105
|
def smtp_config
|
83
106
|
logger.info "Retrieving SMTP configuration from directory"
|
84
107
|
response = HTTP.get url_for('smtp_config'), params: { license_key: license_key }
|
@@ -89,6 +112,16 @@ class PublishToWeb
|
|
89
112
|
end
|
90
113
|
end
|
91
114
|
|
115
|
+
def limits
|
116
|
+
logger.info "Retrieving limits from directory"
|
117
|
+
response = HTTP.get url_for('limits'), params: { license_key: license_key }
|
118
|
+
if (200..299).include? response.status
|
119
|
+
JSON.parse(response.body)
|
120
|
+
else
|
121
|
+
raise HttpResponseError.new("Failed to retrieve limits from directory", response)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
92
125
|
private
|
93
126
|
|
94
127
|
def public_key_ok?
|
@@ -123,7 +156,11 @@ class PublishToWeb
|
|
123
156
|
logger.info "Retrieving connection info from directory #{host}"
|
124
157
|
response = HTTP.get(url_for('info'), params: { license_key: license_key })
|
125
158
|
if response.status == 200
|
126
|
-
JSON.load(response.body)
|
159
|
+
data = JSON.load(response.body)
|
160
|
+
data.each do |key, value|
|
161
|
+
logger.info " #{key} = #{value}"
|
162
|
+
end
|
163
|
+
data
|
127
164
|
else
|
128
165
|
raise HttpResponseError.new("Failed to get connection info from directory", response)
|
129
166
|
end
|
data/publish_to_web.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_runtime_dependency "net-ssh", "~> 3.0"
|
24
24
|
spec.add_runtime_dependency "http", "~> 1.0"
|
25
25
|
spec.add_runtime_dependency "sshkey", "~> 1.8.0"
|
26
|
-
spec.add_runtime_dependency "platform-skvs", "~> 0.
|
26
|
+
spec.add_runtime_dependency "platform-skvs", "~> 0.4.0"
|
27
27
|
spec.add_runtime_dependency "rainbow", "~> 2.0"
|
28
28
|
|
29
29
|
spec.add_development_dependency "bundler", "~> 1.11"
|
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.
|
4
|
+
version: 2.4.0
|
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-
|
11
|
+
date: 2016-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-ssh
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.4.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.4.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rainbow
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|