zold 0.11.18 → 0.11.19

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 169a0ce80fa0bdabfba606230c2b12f918688457
4
- data.tar.gz: 582eac190a1f5d87daf92195379c6c755d83dded
3
+ metadata.gz: 816289bc1a553b8d68c87fddbc146e3762b51647
4
+ data.tar.gz: 7cdfbeaa949af0c811e51bc5e7a2b60ab7e9cca5
5
5
  SHA512:
6
- metadata.gz: f9313dd0f6b72d3745a3cf4768fd8617c4d098beb5eeb075b9873ac08ba118dfc0154d20daf00dd6d22a8050361e7ada151b1d2d46f645f53efca5d0b5866eee
7
- data.tar.gz: cb64a87a705868388b46a8ca0c9636cb9cc4510b6f0750df388bc693bdb0f08c9145b09335f4cfd30932c2a76f6c88913cd514259e5c2373a774abcf373653a1
6
+ metadata.gz: 00d3ad3ca4ff95d6fe8166580d3fe91105778c55024d50480ce23934af42972a6509656f8a4a741b16cde8cc0dda0ee7358bfbf1b8111452f7aca3d4fda7e351
7
+ data.tar.gz: 321040ab95feda603ea6b6a2af005b79268a4242b87d843c2ea52072a182e3c1c11eeca7426bc7a508c842567e881a5c534933979c9b369b188c4dd4209b14f8
data/bin/zold-nohup CHANGED
@@ -55,7 +55,7 @@ end
55
55
 
56
56
  def exec(cmd)
57
57
  Open3.popen2e(cmd) do |stdin, stdout, thr|
58
- log("Started: #{cmd}")
58
+ log("Started: #{cmd}\n")
59
59
  stdin.close
60
60
  loop do
61
61
  line = stdout.gets
@@ -63,7 +63,7 @@ def exec(cmd)
63
63
  log(line)
64
64
  end
65
65
  code = thr.value.exitstatus
66
- log("Exit code is #{code}: #{cmd}")
66
+ log("Exit code is #{code}: #{cmd}\n")
67
67
  raise "Exit code #{code} (non zero)" unless code.zero?
68
68
  end
69
69
  end
@@ -72,10 +72,10 @@ File.delete($opts['log-file']) if File.exist?($opts['log-file']) && !$opts['skip
72
72
 
73
73
  $pid = fork do
74
74
  Signal.trap('HUP') do
75
- print('Received HUP, ignoring...')
75
+ log('Received HUP, ignoring...')
76
76
  end
77
77
  Signal.trap('TERM') do
78
- print('Received TERM, terminating...')
78
+ log('Received TERM, terminating...')
79
79
  exit(-1)
80
80
  end
81
81
  loop do
@@ -27,6 +27,7 @@ require_relative '../verbose_thread'
27
27
  require_relative '../node/entrance'
28
28
  require_relative '../node/front'
29
29
  require_relative '../node/farm'
30
+ require_relative 'pull'
30
31
  require_relative 'push'
31
32
  require_relative 'pay'
32
33
 
@@ -52,8 +53,8 @@ module Zold
52
53
  o.integer '--bind-port',
53
54
  "TCP port to listen on (default: #{Remotes::PORT})",
54
55
  default: Remotes::PORT
55
- o.string '--host', 'Host name (default: 127.0.0.1)',
56
- default: '127.0.0.1'
56
+ o.string '--host', "Host name (default: #{ip})",
57
+ default: ip
57
58
  o.string '--home', 'Home directory (default: .)',
58
59
  default: Dir.pwd
59
60
  o.integer '--strength',
@@ -128,7 +129,7 @@ module Zold
128
129
  threads: opts[:threads], strength: opts[:strength]
129
130
  )
130
131
  Front.set(:farm, farm)
131
- routines = routines(wallets, remotes, farm, opts)
132
+ routines = routines(wallets, remotes, copies, farm, opts)
132
133
  @log.debug("Starting up the web front at http://#{opts[:host]}:#{opts[:port]}...")
133
134
  begin
134
135
  Front.run!
@@ -140,7 +141,7 @@ module Zold
140
141
 
141
142
  private
142
143
 
143
- def routines(wallets, remotes, farm, opts)
144
+ def routines(wallets, remotes, copies, farm, opts)
144
145
  routines = Routines.new(@log)
145
146
  routines.add do
146
147
  require_relative 'remote'
@@ -151,7 +152,7 @@ module Zold
151
152
  )
152
153
  end
153
154
  if opts['bonus-wallet']
154
- routines.add do
155
+ routines.add(60) do
155
156
  require_relative 'remote'
156
157
  winners = Remote.new(remotes: remotes, log: @log, farm: farm).run(
157
158
  ['remote', 'elect', opts['bonus-wallet'], '--private-key', opts['private-key']]
@@ -160,6 +161,9 @@ module Zold
160
161
  @log.info('No winners elected, won\'t pay any bonuses')
161
162
  else
162
163
  winners.each do |score|
164
+ Pull.new(wallets: wallets, remotes: remotes, copies: copies, log: @log).run(
165
+ ['pull', opts['bonus-wallet']]
166
+ )
163
167
  Pay.new(wallets: wallets, remotes: remotes, log: @log).run(
164
168
  [
165
169
  'pay', opts['bonus-wallet'], score.invoice, opts['bonus-amount'],
@@ -177,6 +181,13 @@ module Zold
177
181
  routines
178
182
  end
179
183
 
184
+ def ip
185
+ addr = Socket.ip_address_list.detect do |i|
186
+ i.ipv4? && !i.ipv4_loopback? && !i.ipv4_multicast? && !i.ipv4_private?
187
+ end
188
+ addr.nil? ? '127.0.0.1' : addr.ip_address
189
+ end
190
+
180
191
  # Fake logging facility for Webrick
181
192
  class WebrickLog
182
193
  def initialize(log)
@@ -21,6 +21,8 @@
21
21
  require 'slop'
22
22
  require 'rainbow'
23
23
  require_relative 'args'
24
+ require_relative '../id'
25
+ require_relative '../amount'
24
26
  require_relative '../log'
25
27
 
26
28
  # PAY command.
@@ -55,6 +57,9 @@ Available options:"
55
57
  o.bool '--dont-pay-taxes',
56
58
  'Don\'t pay taxes even if the wallet is in debt',
57
59
  default: false
60
+ o.bool '--dont-propagate',
61
+ 'Don\'t propagate the paying wallet after successful pay',
62
+ default: false
58
63
  o.bool '--help', 'Print instructions'
59
64
  end
60
65
  mine = Args.new(opts, @log).take || return
@@ -72,10 +77,15 @@ Available options:"
72
77
  amount = Amount.new(zld: mine[2].to_f)
73
78
  details = mine[3] || '-'
74
79
  if Tax.new(from).in_debt? && !opts['dont-pay-taxes']
80
+ require_relative 'taxes'
75
81
  Taxes.new(wallets: @wallets, remotes: @remotes, log: @log).run(
76
82
  ['taxes', "--private-key=#{opts['private-key']}", id.to_s]
77
83
  )
78
84
  end
85
+ unless opts['dont-propagate']
86
+ require_relative 'propagate'
87
+ Propagate.new(wallets: @wallets, log: @log).run(['propagate', id.to_s])
88
+ end
79
89
  pay(from, invoice, amount, details, opts)
80
90
  end
81
91
 
@@ -185,10 +185,15 @@ Available options:"
185
185
  r.assert_score_ownership(score)
186
186
  r.assert_score_strength(score) unless opts['ignore-score-weakness']
187
187
  @remotes.rescore(score.host, score.port, score.value)
188
- if opts['reboot'] && Semantic::Version.new(VERSION) < Semantic::Version.new(json['version'])
189
- @log.info("#{r}: their version #{json['version']} is higher than mine #{VERSION}, reboot! \
188
+ if Semantic::Version.new(VERSION) < Semantic::Version.new(json['version'])
189
+ if opts['reboot']
190
+ @log.info("#{r}: their version #{json['version']} is higher than mine #{VERSION}, reboot! \
190
191
  (use --never-reboot to avoid this from happening)")
191
- exit(0)
192
+ exit(0)
193
+ else
194
+ @log.info("#{r}: their version #{json['version']} is higher than mine #{VERSION}, \
195
+ it's recommended to reboot, but I don't do it because of --never-reboot")
196
+ end
192
197
  end
193
198
  if deep
194
199
  json['all'].each do |s|
data/lib/zold/routines.rb CHANGED
@@ -33,13 +33,13 @@ module Zold
33
33
  @threads = []
34
34
  end
35
35
 
36
- def add(seconds = 60)
36
+ def add(minutes = 1)
37
37
  @threads << Thread.start do
38
38
  VerboseThread.new(@log).run(true) do
39
39
  Thread.current.name = 'routines'
40
40
  count = 0
41
41
  loop do
42
- sleep(seconds)
42
+ sleep(minutes * 60)
43
43
  yield count
44
44
  count += 1
45
45
  end
data/lib/zold/version.rb CHANGED
@@ -23,5 +23,5 @@
23
23
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
24
24
  # License:: MIT
25
25
  module Zold
26
- VERSION = '0.11.18'.freeze
26
+ VERSION = '0.11.19'.freeze
27
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.18
4
+ version: 0.11.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko