zold 0.10.19 → 0.10.20
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/.rubocop.yml +0 -7
- data/.rultor.yml +1 -1
- data/lib/zold.rb +0 -1
- data/lib/zold/http.rb +1 -1
- data/lib/zold/node/farm.rb +3 -2
- data/lib/zold/node/front.rb +8 -10
- data/lib/zold/version.rb +1 -1
- data/test/commands/test_calculate.rb +1 -1
- data/test/commands/test_clean.rb +1 -1
- data/test/commands/test_create.rb +1 -1
- data/test/commands/test_diff.rb +2 -2
- data/test/commands/test_fetch.rb +2 -2
- data/test/commands/test_invoice.rb +1 -1
- data/test/commands/test_list.rb +1 -1
- data/test/commands/test_merge.rb +4 -4
- data/test/commands/test_node.rb +3 -3
- data/test/commands/test_pay.rb +3 -3
- data/test/commands/test_push.rb +1 -1
- data/test/commands/test_remote.rb +1 -1
- data/test/commands/test_show.rb +1 -1
- data/test/commands/test_taxes.rb +1 -1
- data/test/node/test_emission.rb +1 -1
- data/test/node/test_entrance.rb +2 -2
- data/test/node/test_farm.rb +2 -2
- data/test/node/test_front.rb +36 -2
- data/test/support/logs.rb +6 -0
- data/test/test__helper.rb +8 -2
- data/test/test_remotes.rb +1 -0
- data/test/test_zold.rb +1 -1
- data/zold.gemspec +11 -10
- metadata +81 -66
- data/html/map.html +0 -139
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c87fbfc264dd92de42cde13930a908289aacf563
|
4
|
+
data.tar.gz: 8e6f525f6b0018704d1e716aa5e47bb3c8914862
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4b2c011d7a787548881a49e89178fd03615eaaddeb50caf682ea66cf9e561c826a13610a40cc2af14568d989a56ce63e14b9a07abcb91db54dfc9cca65eaeec
|
7
|
+
data.tar.gz: 47b372309318e42bef1dbc69ad53ce7d8a33e1166c433e11e06c1a99fef524e97e3e1c008a9e4a0f9557a8eb14b5032392b22164e23b30b3b5076c9f71c55e1d
|
data/.rubocop.yml
CHANGED
@@ -31,10 +31,3 @@ Style/MultilineBlockChain:
|
|
31
31
|
Enabled: false
|
32
32
|
Layout/MultilineOperationIndentation:
|
33
33
|
Enabled: false
|
34
|
-
|
35
|
-
# @todo #64:30min Let's get rid of this and find a way to pass that
|
36
|
-
# $log global variable to all tests. Now it's defined inside test__helper.rb,
|
37
|
-
# but there should be a better solution. I posted a question about it:
|
38
|
-
# https://stackoverflow.com/questions/50418822
|
39
|
-
Style/GlobalVars:
|
40
|
-
Enabled: false
|
data/.rultor.yml
CHANGED
data/lib/zold.rb
CHANGED
data/lib/zold/http.rb
CHANGED
@@ -98,7 +98,7 @@ module Zold
|
|
98
98
|
'Connection': 'close'
|
99
99
|
}
|
100
100
|
headers[Http::VERSION_HEADER] = VERSION
|
101
|
-
headers[Http::SCORE_HEADER] = @score.reduced(4).to_text if @score.valid? && !@score.expired?
|
101
|
+
headers[Http::SCORE_HEADER] = @score.reduced(4).to_text if @score.valid? && !@score.expired? && @score.value > 3
|
102
102
|
headers
|
103
103
|
end
|
104
104
|
end
|
data/lib/zold/node/farm.rb
CHANGED
@@ -61,6 +61,7 @@ module Zold
|
|
61
61
|
@best << Score.new(Time.now, host, port, @invoice, strength: strength)
|
62
62
|
@scores = Queue.new
|
63
63
|
history.each { |s| @scores << s }
|
64
|
+
@log.debug("#{@scores.size} scores pre-loaded") unless @scores.size.zero?
|
64
65
|
@threads = (1..threads).map do |t|
|
65
66
|
Thread.new do
|
66
67
|
VerboseThread.new(@log).run do
|
@@ -103,12 +104,12 @@ module Zold
|
|
103
104
|
private
|
104
105
|
|
105
106
|
def save(score)
|
106
|
-
File.write(@cache, (history
|
107
|
+
File.write(@cache, (history + [score]).map(&:to_s).join("\n"))
|
107
108
|
end
|
108
109
|
|
109
110
|
def history
|
110
111
|
if File.exist?(@cache)
|
111
|
-
File.readlines(@cache).map { |t| Score.parse(t) }
|
112
|
+
File.readlines(@cache).map { |t| Score.parse(t) }.reject(&:expired?)
|
112
113
|
else
|
113
114
|
[]
|
114
115
|
end
|
data/lib/zold/node/front.rb
CHANGED
@@ -61,10 +61,7 @@ module Zold
|
|
61
61
|
before do
|
62
62
|
name = "HTTP-#{Http::SCORE_HEADER}".upcase.tr('-', '_')
|
63
63
|
header = request.env[name]
|
64
|
-
unless header
|
65
|
-
settings.log.debug("#{request.url}: HTTP header #{Http::SCORE_HEADER} is absent (#{name})")
|
66
|
-
return
|
67
|
-
end
|
64
|
+
return unless header
|
68
65
|
if settings.remotes.all.empty?
|
69
66
|
settings.log.debug("#{request.url}: we are in standalone mode, won't update remotes")
|
70
67
|
end
|
@@ -94,7 +91,13 @@ module Zold
|
|
94
91
|
end
|
95
92
|
|
96
93
|
get '/favicon.ico' do
|
97
|
-
|
94
|
+
if score.value >= 16
|
95
|
+
redirect 'https://www.zold.io/images/logo-green.png'
|
96
|
+
elsif score.value >= 4
|
97
|
+
redirect 'https://www.zold.io/images/logo-orange.png'
|
98
|
+
else
|
99
|
+
redirect 'https://www.zold.io/images/logo-red.png'
|
100
|
+
end
|
98
101
|
end
|
99
102
|
|
100
103
|
get '/' do
|
@@ -151,11 +154,6 @@ module Zold
|
|
151
154
|
)
|
152
155
|
end
|
153
156
|
|
154
|
-
get %r{/(?<page>.+\.html)} do
|
155
|
-
content_type 'text/html'
|
156
|
-
File.read(File.join(settings.root, "html/#{params[:page]}"))
|
157
|
-
end
|
158
|
-
|
159
157
|
not_found do
|
160
158
|
status 404
|
161
159
|
content_type 'text/plain'
|
data/lib/zold/version.rb
CHANGED
@@ -29,7 +29,7 @@ require_relative '../../lib/zold/commands/calculate'
|
|
29
29
|
# License:: MIT
|
30
30
|
class TestCalculate < Minitest::Test
|
31
31
|
def test_calculates_score
|
32
|
-
score = Zold::Calculate.new(log:
|
32
|
+
score = Zold::Calculate.new(log: log).run(
|
33
33
|
['score', '--strength=2', '--max=8', '--invoice=NOSUFFIX@ffffffffffffffff']
|
34
34
|
)
|
35
35
|
assert(score.valid?)
|
data/test/commands/test_clean.rb
CHANGED
@@ -36,7 +36,7 @@ class TestClean < Minitest::Test
|
|
36
36
|
copies = home.copies(wallet)
|
37
37
|
copies.add('a1', 'host-1', 80, 1, Time.now - 26 * 60 * 60)
|
38
38
|
copies.add('a2', 'host-2', 80, 2, Time.now - 26 * 60 * 60)
|
39
|
-
Zold::Clean.new(wallets: home.wallets, copies: copies.root, log:
|
39
|
+
Zold::Clean.new(wallets: home.wallets, copies: copies.root, log: log).run(['clean', wallet.id.to_s])
|
40
40
|
assert(copies.all.empty?)
|
41
41
|
end
|
42
42
|
end
|
@@ -32,7 +32,7 @@ require_relative '../../lib/zold/commands/create'
|
|
32
32
|
class TestCreate < Minitest::Test
|
33
33
|
def test_creates_wallet
|
34
34
|
Dir.mktmpdir 'test' do |dir|
|
35
|
-
wallet = Zold::Create.new(wallets: Zold::Wallets.new(dir), log:
|
35
|
+
wallet = Zold::Create.new(wallets: Zold::Wallets.new(dir), log: log).run(
|
36
36
|
['create', '--public-key=fixtures/id_rsa.pub']
|
37
37
|
)
|
38
38
|
assert wallet.balance.zero?
|
data/test/commands/test_diff.rb
CHANGED
@@ -44,13 +44,13 @@ class TestDiff < Minitest::Test
|
|
44
44
|
File.write(first.path, File.read(wallet.path))
|
45
45
|
second = home.create_wallet
|
46
46
|
File.write(second.path, File.read(wallet.path))
|
47
|
-
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log:
|
47
|
+
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: log).run(
|
48
48
|
['pay', wallet.id.to_s, second.id.to_s, '14.95', '--force', '--private-key=fixtures/id_rsa']
|
49
49
|
)
|
50
50
|
copies = home.copies(wallet)
|
51
51
|
copies.add(File.read(first.path), 'host-1', 80, 5)
|
52
52
|
copies.add(File.read(second.path), 'host-2', 80, 5)
|
53
|
-
diff = Zold::Diff.new(wallets: home.wallets, copies: copies.root, log:
|
53
|
+
diff = Zold::Diff.new(wallets: home.wallets, copies: copies.root, log: log).run(
|
54
54
|
['diff', wallet.id.to_s]
|
55
55
|
)
|
56
56
|
assert(diff.include?('-0001;'))
|
data/test/commands/test_fetch.rb
CHANGED
@@ -59,7 +59,7 @@ class TestFetch < Minitest::Test
|
|
59
59
|
remotes.add('fake-1', 80)
|
60
60
|
remotes.add('fake-2', 80)
|
61
61
|
copies = Zold::Copies.new(File.join(dir, "copies/#{id}"))
|
62
|
-
Zold::Fetch.new(wallets: wallets, copies: copies.root, remotes: remotes, log:
|
62
|
+
Zold::Fetch.new(wallets: wallets, copies: copies.root, remotes: remotes, log: log).run(
|
63
63
|
['fetch', '--ignore-score-weakness', id.to_s]
|
64
64
|
)
|
65
65
|
assert_equal(copies.all[0][:name], '1')
|
@@ -83,7 +83,7 @@ class TestFetch < Minitest::Test
|
|
83
83
|
remotes.add('fake-1', 80)
|
84
84
|
copies = Zold::Copies.new(File.join(dir, "copies/#{id}"))
|
85
85
|
Zold::Fetch.new(
|
86
|
-
wallets: wallets, copies: copies.root, remotes: remotes, log:
|
86
|
+
wallets: wallets, copies: copies.root, remotes: remotes, log: log
|
87
87
|
).run(['fetch', id.to_s])
|
88
88
|
assert_equal(copies.all[0][:name], '1')
|
89
89
|
assert_equal(copies.all[0][:score], 0)
|
@@ -38,7 +38,7 @@ class TestInvoice < Minitest::Test
|
|
38
38
|
wallets = Zold::Wallets.new(dir)
|
39
39
|
source = wallets.find(id)
|
40
40
|
source.init(id, Zold::Key.new(file: 'fixtures/id_rsa.pub'))
|
41
|
-
invoice = Zold::Invoice.new(wallets: wallets, log:
|
41
|
+
invoice = Zold::Invoice.new(wallets: wallets, log: log).run(
|
42
42
|
['invoice', id.to_s, '--length=16']
|
43
43
|
)
|
44
44
|
assert_equal(33, invoice.length)
|
data/test/commands/test_list.rb
CHANGED
@@ -37,7 +37,7 @@ class TestList < Minitest::Test
|
|
37
37
|
wallets = Zold::Wallets.new(dir)
|
38
38
|
wallet = wallets.find(id)
|
39
39
|
wallet.init(Zold::Id.new, Zold::Key.new(file: 'fixtures/id_rsa.pub'))
|
40
|
-
Zold::List.new(wallets: wallets, log:
|
40
|
+
Zold::List.new(wallets: wallets, log: log).run
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
data/test/commands/test_merge.rb
CHANGED
@@ -45,13 +45,13 @@ class TestMerge < Minitest::Test
|
|
45
45
|
File.write(first.path, File.read(wallet.path))
|
46
46
|
second = home.create_wallet
|
47
47
|
File.write(second.path, File.read(wallet.path))
|
48
|
-
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log:
|
48
|
+
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: log).run(
|
49
49
|
['pay', wallet.id.to_s, second.id.to_s, '14.95', '--force', '--private-key=fixtures/id_rsa']
|
50
50
|
)
|
51
51
|
copies = home.copies(wallet)
|
52
52
|
copies.add(File.read(first.path), 'host-1', 80, 5)
|
53
53
|
copies.add(File.read(second.path), 'host-2', 80, 5)
|
54
|
-
modified = Zold::Merge.new(wallets: home.wallets, copies: copies.root, log:
|
54
|
+
modified = Zold::Merge.new(wallets: home.wallets, copies: copies.root, log: log).run(
|
55
55
|
['merge', wallet.id.to_s]
|
56
56
|
)
|
57
57
|
assert(1, modified.count)
|
@@ -66,13 +66,13 @@ class TestMerge < Minitest::Test
|
|
66
66
|
File.write(first.path, File.read(wallet.path))
|
67
67
|
second = home.create_wallet
|
68
68
|
File.write(second.path, File.read(wallet.path))
|
69
|
-
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log:
|
69
|
+
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: log).run(
|
70
70
|
['pay', wallet.id.to_s, second.id.to_s, '14.95', '--force', '--private-key=fixtures/id_rsa']
|
71
71
|
)
|
72
72
|
copies = home.copies(wallet)
|
73
73
|
copies.add(File.read(first.path), 'host-1', 80, 5)
|
74
74
|
copies.add(File.read(second.path), 'host-2', 80, 5)
|
75
|
-
modified = Zold::Merge.new(wallets: home.wallets, copies: copies.root, log:
|
75
|
+
modified = Zold::Merge.new(wallets: home.wallets, copies: copies.root, log: log).run(
|
76
76
|
['merge', wallet.id.to_s]
|
77
77
|
)
|
78
78
|
assert(1, modified.count)
|
data/test/commands/test_node.rb
CHANGED
@@ -38,7 +38,7 @@ require_relative '../node/fake_node'
|
|
38
38
|
# License:: MIT
|
39
39
|
class TestNode < Minitest::Test
|
40
40
|
def test_push_and_fetch
|
41
|
-
FakeNode.new(log:
|
41
|
+
FakeNode.new(log: log).run do |port|
|
42
42
|
Dir.mktmpdir 'test' do |dir|
|
43
43
|
id = Zold::Id.new
|
44
44
|
wallets = Zold::Wallets.new(dir)
|
@@ -47,10 +47,10 @@ class TestNode < Minitest::Test
|
|
47
47
|
remotes = Zold::Remotes.new(File.join(dir, 'remotes.csv'))
|
48
48
|
remotes.clean
|
49
49
|
remotes.add('localhost', port)
|
50
|
-
Zold::Push.new(wallets: wallets, remotes: remotes, log:
|
50
|
+
Zold::Push.new(wallets: wallets, remotes: remotes, log: log).run(['push', '--sync'])
|
51
51
|
Zold::Fetch.new(
|
52
52
|
wallets: wallets, copies: File.join(dir, 'copies'),
|
53
|
-
remotes: remotes, log:
|
53
|
+
remotes: remotes, log: log
|
54
54
|
).run(['fetch'])
|
55
55
|
copies = Zold::Copies.new(File.join(dir, "copies/#{id}"))
|
56
56
|
assert_equal(1, copies.all.count)
|
data/test/commands/test_pay.rb
CHANGED
@@ -37,7 +37,7 @@ class TestPay < Minitest::Test
|
|
37
37
|
source = home.create_wallet
|
38
38
|
target = home.create_wallet
|
39
39
|
amount = Zold::Amount.new(zld: 14.95)
|
40
|
-
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log:
|
40
|
+
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: log).run(
|
41
41
|
[
|
42
42
|
'pay', '--force', '--private-key=fixtures/id_rsa',
|
43
43
|
source.id.to_s, target.id.to_s, amount.to_zld, 'For the car'
|
@@ -52,7 +52,7 @@ class TestPay < Minitest::Test
|
|
52
52
|
source = home.create_wallet(Zold::Id::ROOT)
|
53
53
|
target = home.create_wallet
|
54
54
|
amount = Zold::Amount.new(zld: 14.95)
|
55
|
-
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log:
|
55
|
+
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: log).run(
|
56
56
|
[
|
57
57
|
'pay', '--private-key=fixtures/id_rsa',
|
58
58
|
source.id.to_s, target.id.to_s, amount.to_zld, 'For the car'
|
@@ -73,7 +73,7 @@ class TestPay < Minitest::Test
|
|
73
73
|
'NOPREFIX', Zold::Id.new, '-'
|
74
74
|
)
|
75
75
|
)
|
76
|
-
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log:
|
76
|
+
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: log).run(
|
77
77
|
[
|
78
78
|
'pay', '--private-key=fixtures/id_rsa',
|
79
79
|
source.id.to_s, target.id.to_s, amount.to_zld, 'here is the refund'
|
data/test/commands/test_push.rb
CHANGED
@@ -38,7 +38,7 @@ class TestPush < Minitest::Test
|
|
38
38
|
FakeHome.new.run do |home|
|
39
39
|
wallet = home.create_wallet
|
40
40
|
stub_request(:put, "http://fake-1/wallet/#{wallet.id}").to_return(status: 304)
|
41
|
-
Zold::Push.new(wallets: home.wallets, remotes: home.remotes, log:
|
41
|
+
Zold::Push.new(wallets: home.wallets, remotes: home.remotes, log: log).run(
|
42
42
|
['--ignore-this-stupid-option', 'push', wallet.id.to_s]
|
43
43
|
)
|
44
44
|
end
|
@@ -59,7 +59,7 @@ class TestRemote < Minitest::Test
|
|
59
59
|
stub_request(:get, 'http://localhost:999/remotes').to_return(
|
60
60
|
status: 404
|
61
61
|
)
|
62
|
-
cmd = Zold::Remote.new(remotes: remotes, log:
|
62
|
+
cmd = Zold::Remote.new(remotes: remotes, log: log)
|
63
63
|
cmd.run(%w[remote clean])
|
64
64
|
cmd.run(['remote', 'add', zero.host, zero.port.to_s])
|
65
65
|
cmd.run(%w[remote add localhost 2])
|
data/test/commands/test_show.rb
CHANGED
@@ -38,7 +38,7 @@ class TestShow < Minitest::Test
|
|
38
38
|
wallets = Zold::Wallets.new(dir)
|
39
39
|
wallet = wallets.find(id)
|
40
40
|
wallet.init(Zold::Id.new, Zold::Key.new(file: 'fixtures/id_rsa.pub'))
|
41
|
-
balance = Zold::Show.new(wallets: wallets, log:
|
41
|
+
balance = Zold::Show.new(wallets: wallets, log: log).run(['show', id.to_s])
|
42
42
|
assert_equal(Zold::Amount::ZERO, balance)
|
43
43
|
end
|
44
44
|
end
|
data/test/commands/test_taxes.rb
CHANGED
@@ -59,7 +59,7 @@ class TestTaxes < Minitest::Test
|
|
59
59
|
}.to_json
|
60
60
|
)
|
61
61
|
Zold::Taxes.new(
|
62
|
-
wallets: wallets, remotes: remotes, log:
|
62
|
+
wallets: wallets, remotes: remotes, log: log
|
63
63
|
).run(['taxes', '--private-key=fixtures/id_rsa', id.to_s])
|
64
64
|
assert_equal(Zold::Amount.new(coins: 85_856_396_247), wallet.balance)
|
65
65
|
end
|
data/test/node/test_emission.rb
CHANGED
@@ -36,7 +36,7 @@ class EmissionTest < Minitest::Test
|
|
36
36
|
'NOPREFIX', Zold::Id::ROOT, '-'
|
37
37
|
)
|
38
38
|
)
|
39
|
-
|
39
|
+
log.info("Year: #{year}, Quota: #{(Zold::Emission.new(wallet).quota * 100).round(2)}%, \
|
40
40
|
Limit: #{Zold::Emission.new(wallet).limit}")
|
41
41
|
end
|
42
42
|
end
|
data/test/node/test_entrance.rb
CHANGED
@@ -40,7 +40,7 @@ class TestEntrance < Minitest::Test
|
|
40
40
|
body = FakeHome.new.run do |home|
|
41
41
|
source = home.create_wallet(sid)
|
42
42
|
target = home.create_wallet(tid)
|
43
|
-
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log:
|
43
|
+
Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: log).run(
|
44
44
|
[
|
45
45
|
'pay', '--force', '--private-key=fixtures/id_rsa',
|
46
46
|
source.id.to_s, target.id.to_s, '19.99', 'testing'
|
@@ -51,7 +51,7 @@ class TestEntrance < Minitest::Test
|
|
51
51
|
FakeHome.new.run do |home|
|
52
52
|
source = home.create_wallet(sid)
|
53
53
|
home.create_wallet(tid)
|
54
|
-
modified = Zold::Entrance.new(home.wallets, home.remotes, home.copies(source).root, 'x', log:
|
54
|
+
modified = Zold::Entrance.new(home.wallets, home.remotes, home.copies(source).root, 'x', log: log).push(
|
55
55
|
source.id, body
|
56
56
|
)
|
57
57
|
assert_equal(2, modified.count)
|
data/test/node/test_farm.rb
CHANGED
@@ -28,7 +28,7 @@ require_relative '../../lib/zold/node/farm'
|
|
28
28
|
class FarmTest < Minitest::Test
|
29
29
|
def test_makes_best_score_in_background
|
30
30
|
Dir.mktmpdir 'test' do |dir|
|
31
|
-
farm = Zold::Farm.new('NOPREFIX@ffffffffffffffff', File.join(dir, 'f'), log:
|
31
|
+
farm = Zold::Farm.new('NOPREFIX@ffffffffffffffff', File.join(dir, 'f'), log: log)
|
32
32
|
farm.start('localhost', 80, threads: 4, strength: 2)
|
33
33
|
sleep 0.1 while farm.best.empty? || farm.best[0].value.zero?
|
34
34
|
assert(farm.best[0].value > 0)
|
@@ -38,7 +38,7 @@ class FarmTest < Minitest::Test
|
|
38
38
|
|
39
39
|
def test_correct_score_from_empty_farm
|
40
40
|
Dir.mktmpdir 'test' do |dir|
|
41
|
-
farm = Zold::Farm.new('NOPREFIX@cccccccccccccccc', File.join(dir, 'f'), log:
|
41
|
+
farm = Zold::Farm.new('NOPREFIX@cccccccccccccccc', File.join(dir, 'f'), log: log)
|
42
42
|
farm.start('example.com', 8080, threads: 0, strength: 1)
|
43
43
|
score = farm.best[0]
|
44
44
|
assert_equal(0, score.value)
|
data/test/node/test_front.rb
CHANGED
@@ -27,12 +27,11 @@ require_relative '../../lib/zold/score'
|
|
27
27
|
|
28
28
|
class FrontTest < Minitest::Test
|
29
29
|
def test_renders_public_pages
|
30
|
-
FakeNode.new(log:
|
30
|
+
FakeNode.new(log: log).run(['--ignore-score-weakness']) do |port|
|
31
31
|
{
|
32
32
|
'200' => [
|
33
33
|
'/robots.txt',
|
34
34
|
'/',
|
35
|
-
'/map.html',
|
36
35
|
'/remotes'
|
37
36
|
],
|
38
37
|
'404' => [
|
@@ -59,4 +58,39 @@ class FrontTest < Minitest::Test
|
|
59
58
|
assert(json['all'].find { |r| r['host'] == 'localhost' })
|
60
59
|
end
|
61
60
|
end
|
61
|
+
|
62
|
+
def test_different_logos
|
63
|
+
{
|
64
|
+
'0' => 'https://www.zold.io/images/logo-red.png',
|
65
|
+
'4' => 'https://www.zold.io/images/logo-orange.png',
|
66
|
+
'16' => 'https://www.zold.io/images/logo-green.png'
|
67
|
+
}.each do |num, path|
|
68
|
+
log.info("Calculating score #{num}...")
|
69
|
+
score = Zold::Score.new(
|
70
|
+
Time.now, 'localhost', 999,
|
71
|
+
'NOPREFIX@ffffffffffffffff',
|
72
|
+
strength: 1
|
73
|
+
)
|
74
|
+
num.to_i.times do
|
75
|
+
score = score.next
|
76
|
+
end
|
77
|
+
log.info("Score #{num} calculated.")
|
78
|
+
if score.value >= 16
|
79
|
+
assert_equal(
|
80
|
+
path, 'https://www.zold.io/images/logo-green.png',
|
81
|
+
"Expected #{path} for score #{score.value}"
|
82
|
+
)
|
83
|
+
elsif score.value >= 4
|
84
|
+
assert_equal(
|
85
|
+
path, 'https://www.zold.io/images/logo-orange.png',
|
86
|
+
"Expected #{path} for score #{score.value}"
|
87
|
+
)
|
88
|
+
else
|
89
|
+
assert_equal(
|
90
|
+
path, 'https://www.zold.io/images/logo-red.png',
|
91
|
+
"Expected #{path} for score #{score.value}"
|
92
|
+
)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
62
96
|
end
|
data/test/test__helper.rb
CHANGED
@@ -30,11 +30,17 @@ if ENV['CI'] == 'true'
|
|
30
30
|
end
|
31
31
|
|
32
32
|
require_relative '../lib/zold/log'
|
33
|
-
# $log = Zold::Log::Quiet.new
|
34
|
-
$log = Zold::Log::Verbose.new
|
35
33
|
|
36
34
|
require 'minitest/autorun'
|
37
35
|
require_relative '../lib/zold'
|
38
36
|
|
39
37
|
gem 'openssl'
|
40
38
|
require 'openssl'
|
39
|
+
|
40
|
+
require_relative 'support/logs'
|
41
|
+
|
42
|
+
module Minitest
|
43
|
+
class Test
|
44
|
+
include Logs
|
45
|
+
end
|
46
|
+
end
|
data/test/test_remotes.rb
CHANGED
data/test/test_zold.rb
CHANGED
data/zold.gemspec
CHANGED
@@ -42,21 +42,22 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.test_files = s.files.grep(%r{^(test|spec|features|wp)/})
|
43
43
|
s.rdoc_options = ['--charset=UTF-8']
|
44
44
|
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
45
|
-
s.add_runtime_dependency 'concurrent-ruby', '1.0.5'
|
46
|
-
s.add_runtime_dependency '
|
47
|
-
s.add_runtime_dependency '
|
48
|
-
s.add_runtime_dependency 'openssl', '2.
|
45
|
+
s.add_runtime_dependency 'concurrent-ruby', '~>1.0.5'
|
46
|
+
s.add_runtime_dependency 'diffy', '~>3.2.0'
|
47
|
+
s.add_runtime_dependency 'json', '~>1.8.6'
|
48
|
+
s.add_runtime_dependency 'openssl', '~>2.1.1'
|
49
49
|
s.add_runtime_dependency 'rainbow', '~>3.0'
|
50
|
-
s.add_runtime_dependency '
|
51
|
-
s.add_runtime_dependency 'rubocop', '~>0.52.0'
|
52
|
-
s.add_runtime_dependency 'rubocop-rspec', '1.5.1'
|
53
|
-
s.add_runtime_dependency 'semantic', '~>1.5.0'
|
50
|
+
s.add_runtime_dependency 'semantic', '~>1.6.1'
|
54
51
|
s.add_runtime_dependency 'sinatra', '~>2.0.1'
|
55
52
|
s.add_runtime_dependency 'slop', '~>4.4'
|
56
53
|
s.add_runtime_dependency 'xcop', '~>0.5'
|
57
54
|
s.add_development_dependency 'codecov', '0.1.10'
|
58
|
-
s.add_development_dependency '
|
55
|
+
s.add_development_dependency 'cucumber', '3.1.1'
|
56
|
+
s.add_development_dependency 'minitest', '5.11.3'
|
57
|
+
s.add_development_dependency 'rake', '12.3.1'
|
59
58
|
s.add_development_dependency 'rdoc', '4.2.0'
|
60
59
|
s.add_development_dependency 'rspec-rails', '3.1.0'
|
61
|
-
s.add_development_dependency '
|
60
|
+
s.add_development_dependency 'rubocop', '0.52.0'
|
61
|
+
s.add_development_dependency 'rubocop-rspec'
|
62
|
+
s.add_development_dependency 'webmock', '3.4.2'
|
62
63
|
end
|
metadata
CHANGED
@@ -1,141 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.0.5
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.0.5
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: cucumber
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.3.17
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 1.3.17
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: diffy
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- -
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
33
|
version: 3.2.0
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- -
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: 3.2.0
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - '='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 2.0.1
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - '='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 2.0.1
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rainbow
|
42
|
+
name: json
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
45
|
- - "~>"
|
74
46
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
47
|
+
version: 1.8.6
|
76
48
|
type: :runtime
|
77
49
|
prerelease: false
|
78
50
|
version_requirements: !ruby/object:Gem::Requirement
|
79
51
|
requirements:
|
80
52
|
- - "~>"
|
81
53
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
54
|
+
version: 1.8.6
|
83
55
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - '='
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 12.0.0
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - '='
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 12.0.0
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rubocop
|
56
|
+
name: openssl
|
99
57
|
requirement: !ruby/object:Gem::Requirement
|
100
58
|
requirements:
|
101
59
|
- - "~>"
|
102
60
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
61
|
+
version: 2.1.1
|
104
62
|
type: :runtime
|
105
63
|
prerelease: false
|
106
64
|
version_requirements: !ruby/object:Gem::Requirement
|
107
65
|
requirements:
|
108
66
|
- - "~>"
|
109
67
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
68
|
+
version: 2.1.1
|
111
69
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
70
|
+
name: rainbow
|
113
71
|
requirement: !ruby/object:Gem::Requirement
|
114
72
|
requirements:
|
115
|
-
- -
|
73
|
+
- - "~>"
|
116
74
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
75
|
+
version: '3.0'
|
118
76
|
type: :runtime
|
119
77
|
prerelease: false
|
120
78
|
version_requirements: !ruby/object:Gem::Requirement
|
121
79
|
requirements:
|
122
|
-
- -
|
80
|
+
- - "~>"
|
123
81
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
82
|
+
version: '3.0'
|
125
83
|
- !ruby/object:Gem::Dependency
|
126
84
|
name: semantic
|
127
85
|
requirement: !ruby/object:Gem::Requirement
|
128
86
|
requirements:
|
129
87
|
- - "~>"
|
130
88
|
- !ruby/object:Gem::Version
|
131
|
-
version: 1.
|
89
|
+
version: 1.6.1
|
132
90
|
type: :runtime
|
133
91
|
prerelease: false
|
134
92
|
version_requirements: !ruby/object:Gem::Requirement
|
135
93
|
requirements:
|
136
94
|
- - "~>"
|
137
95
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.
|
96
|
+
version: 1.6.1
|
139
97
|
- !ruby/object:Gem::Dependency
|
140
98
|
name: sinatra
|
141
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,20 +150,48 @@ dependencies:
|
|
192
150
|
- - '='
|
193
151
|
- !ruby/object:Gem::Version
|
194
152
|
version: 0.1.10
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: cucumber
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 3.1.1
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 3.1.1
|
195
167
|
- !ruby/object:Gem::Dependency
|
196
168
|
name: minitest
|
197
169
|
requirement: !ruby/object:Gem::Requirement
|
198
170
|
requirements:
|
199
171
|
- - '='
|
200
172
|
- !ruby/object:Gem::Version
|
201
|
-
version: 5.
|
173
|
+
version: 5.11.3
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - '='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 5.11.3
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rake
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - '='
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 12.3.1
|
202
188
|
type: :development
|
203
189
|
prerelease: false
|
204
190
|
version_requirements: !ruby/object:Gem::Requirement
|
205
191
|
requirements:
|
206
192
|
- - '='
|
207
193
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
194
|
+
version: 12.3.1
|
209
195
|
- !ruby/object:Gem::Dependency
|
210
196
|
name: rdoc
|
211
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -234,20 +220,48 @@ dependencies:
|
|
234
220
|
- - '='
|
235
221
|
- !ruby/object:Gem::Version
|
236
222
|
version: 3.1.0
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: rubocop
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - '='
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: 0.52.0
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - '='
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: 0.52.0
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: rubocop-rspec
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
237
251
|
- !ruby/object:Gem::Dependency
|
238
252
|
name: webmock
|
239
253
|
requirement: !ruby/object:Gem::Requirement
|
240
254
|
requirements:
|
241
255
|
- - '='
|
242
256
|
- !ruby/object:Gem::Version
|
243
|
-
version: 3.4.
|
257
|
+
version: 3.4.2
|
244
258
|
type: :development
|
245
259
|
prerelease: false
|
246
260
|
version_requirements: !ruby/object:Gem::Requirement
|
247
261
|
requirements:
|
248
262
|
- - '='
|
249
263
|
- !ruby/object:Gem::Version
|
250
|
-
version: 3.4.
|
264
|
+
version: 3.4.2
|
251
265
|
description: Non-blockchain cryptocurrency
|
252
266
|
email: yegor256@gmail.com
|
253
267
|
executables:
|
@@ -291,7 +305,6 @@ files:
|
|
291
305
|
- fixtures/scripts/calculate-scores.sh
|
292
306
|
- fixtures/scripts/print-helps.sh
|
293
307
|
- fixtures/scripts/push-and-pull.sh
|
294
|
-
- html/map.html
|
295
308
|
- lib/zold.rb
|
296
309
|
- lib/zold/amount.rb
|
297
310
|
- lib/zold/commands/args.rb
|
@@ -353,6 +366,7 @@ files:
|
|
353
366
|
- test/node/test_entrance.rb
|
354
367
|
- test/node/test_farm.rb
|
355
368
|
- test/node/test_front.rb
|
369
|
+
- test/support/logs.rb
|
356
370
|
- test/test__helper.rb
|
357
371
|
- test/test_amount.rb
|
358
372
|
- test/test_copies.rb
|
@@ -422,6 +436,7 @@ test_files:
|
|
422
436
|
- test/node/test_entrance.rb
|
423
437
|
- test/node/test_farm.rb
|
424
438
|
- test/node/test_front.rb
|
439
|
+
- test/support/logs.rb
|
425
440
|
- test/test__helper.rb
|
426
441
|
- test/test_amount.rb
|
427
442
|
- test/test_copies.rb
|
data/html/map.html
DELETED
@@ -1,139 +0,0 @@
|
|
1
|
-
<?xml version="1.0"?>
|
2
|
-
<!--
|
3
|
-
(The MIT License)
|
4
|
-
|
5
|
-
Copyright (c) 2018 Yegor Bugayenko
|
6
|
-
|
7
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
-
of this software and associated documentation files (the 'Software'), to deal
|
9
|
-
in the Software without restriction, including without limitation the rights
|
10
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11
|
-
copies of the Software, and to permit persons to whom the Software is
|
12
|
-
furnished to do so, subject to the following conditions:
|
13
|
-
|
14
|
-
The above copyright notice and this permission notice shall be included in all
|
15
|
-
copies or substantial portions of the Software.
|
16
|
-
|
17
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
23
|
-
SOFTWARE.
|
24
|
-
-->
|
25
|
-
<!DOCTYPE html>
|
26
|
-
<html>
|
27
|
-
<head>
|
28
|
-
<meta charset="utf-8"/>
|
29
|
-
<title>Zold nodes map</title>
|
30
|
-
<meta name="description" content="Full map of visible Zold nodes"/>
|
31
|
-
<meta name="keywords" content="zerocracy, management, robotocracy, meritocracy"/>
|
32
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
33
|
-
<link rel="shortcut icon" href="https://www.zold.io/logo.png"/>
|
34
|
-
<script src="https://maps.google.com/maps/api/js?key=AIzaSyArj6RePmR3DAAF7Tx9nK9UvO5exPStHu8">
|
35
|
-
// Should be empty
|
36
|
-
</script>
|
37
|
-
<script src="https://code.jquery.com/jquery-3.3.1.min.js">
|
38
|
-
// Should be empty
|
39
|
-
</script>
|
40
|
-
<style>
|
41
|
-
* { box-sizing: border-box; margin: 0; padding: 0; font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; }
|
42
|
-
html { height: 100% }
|
43
|
-
body { height: 100%; }
|
44
|
-
#container { width: 100%; height: 100% }
|
45
|
-
#map { width: 80%; height: 100%; display: inline-block; }
|
46
|
-
#nodes { width: 20%; height: 100%; background-color: #f5f5f5; float: right; padding: 1em; }
|
47
|
-
#logo { position: absolute; bottom: 1em; right: 1em; width: 48px; height: 48px; }
|
48
|
-
#remotes { margin-top: 1em; }
|
49
|
-
#remotes li { list-style: none; }
|
50
|
-
</style>
|
51
|
-
<script>
|
52
|
-
function put_marker_by_ip(map, coords, ip, port) {
|
53
|
-
$.getJSON('http://www.geoplugin.net/json.gp?ip=' + ip, function(json) {
|
54
|
-
var lat = parseFloat(json['geoplugin_latitude']), lon = parseFloat(json['geoplugin_longitude']);
|
55
|
-
console.log(ip + ' located at ' + lat + '/' + lon);
|
56
|
-
new google.maps.Marker({
|
57
|
-
position: { lat: lat, lng: lon },
|
58
|
-
map: map,
|
59
|
-
title: coords
|
60
|
-
});
|
61
|
-
console.log('Marker set for ' + coords + ' at ' + lat + '/' + lon);
|
62
|
-
}).fail(function() { console.log('Failed to find geo-location for ' + ip) });
|
63
|
-
}
|
64
|
-
function put_marker_by_host(map, coords, host, port) {
|
65
|
-
$.getJSON('https://api.exana.io/dns/' + host + '/a', function(json) {
|
66
|
-
ip = $.grep(json['answer'], function (a, i) { return a['type'] == 'A'; })[0]['rdata'];
|
67
|
-
console.log('Host ' + host + ' resolved to ' + ip);
|
68
|
-
put_marker_by_ip(map, coords, ip, port);
|
69
|
-
}).fail(function() { console.log('Failed to find IP for ' + host) });
|
70
|
-
}
|
71
|
-
function put_markers(map, remotes) {
|
72
|
-
$.each(remotes, function (i, r) {
|
73
|
-
var host = r['host'], port = r['port'];
|
74
|
-
var coords = host + ':' + port;
|
75
|
-
var items = $('#remotes li[data-coords="' + coords + '"]');
|
76
|
-
if (items.length) {
|
77
|
-
var li = items.first();
|
78
|
-
$.getJSON('http://' + coords + '/', function(json) {
|
79
|
-
li.html(coords + ': ' + json['score']['value'] + '/' + json['wallets'] + ' (' + json['version'] + ')');
|
80
|
-
if (host.match(/^[0-9\.]+$/)) {
|
81
|
-
put_marker_by_ip(map, host + ':' + port, host, port);
|
82
|
-
} else {
|
83
|
-
put_marker_by_host(map, host + ':' + port, host, port);
|
84
|
-
}
|
85
|
-
}).done(function() { li.css('color', 'darkgreen'); }).fail(function() { li.css('color', 'red'); });
|
86
|
-
} else {
|
87
|
-
$('#remotes').append('<li data-coords="' + coords + '">' + coords + '</li>')
|
88
|
-
}
|
89
|
-
});
|
90
|
-
}
|
91
|
-
function refresh_list(map) {
|
92
|
-
$.getJSON('http://b1.zold.io/remotes', function(data) {
|
93
|
-
var remotes = data['all'];
|
94
|
-
console.log(remotes.length + ' remote nodes found');
|
95
|
-
put_markers(map, remotes);
|
96
|
-
});
|
97
|
-
}
|
98
|
-
function refresh(map) {
|
99
|
-
$.getJSON('http://b1.zold.io/', function(data) {
|
100
|
-
$('#header').html(
|
101
|
-
'Version: ' + data['version'] + '<br/>' +
|
102
|
-
'Host: ' + data['score']['host'] + ':' + data['score']['port'] + '<br/>' +
|
103
|
-
'Score: ' + data['score']['value'] + '<br/>' +
|
104
|
-
'Wallets: ' + data['wallets']
|
105
|
-
);
|
106
|
-
refresh_list(map);
|
107
|
-
window.setTimeout(refresh, 10000);
|
108
|
-
});
|
109
|
-
}
|
110
|
-
function init() {
|
111
|
-
var map = new google.maps.Map(
|
112
|
-
document.getElementById("map"),
|
113
|
-
{
|
114
|
-
center: new google.maps.LatLng(55.751244, 37.618423),
|
115
|
-
mapTypeId: google.maps.MapTypeId.ROADMAP,
|
116
|
-
zoom: 3
|
117
|
-
}
|
118
|
-
);
|
119
|
-
refresh(map);
|
120
|
-
};
|
121
|
-
</script>
|
122
|
-
</head>
|
123
|
-
<body onload="init();">
|
124
|
-
<div id="container">
|
125
|
-
<div id="map">
|
126
|
-
<!-- Empty on start -->
|
127
|
-
</div>
|
128
|
-
<div id="nodes">
|
129
|
-
<div id="header">
|
130
|
-
<!-- Empty on start -->
|
131
|
-
</div>
|
132
|
-
<ul id="remotes">
|
133
|
-
<!-- Empty on start -->
|
134
|
-
</ul>
|
135
|
-
</div>
|
136
|
-
<img id="logo" src="https://www.zold.io/logo.svg"/>
|
137
|
-
</div>
|
138
|
-
</body>
|
139
|
-
</html>
|