refactor downloadblocks, removed old main.js, correct replay protection check
This commit is contained in:
parent
873740c5ad
commit
bcc475dc61
@ -21,6 +21,21 @@ import communicator, onionrexceptions
|
|||||||
import logger, onionrpeers
|
import logger, onionrpeers
|
||||||
from onionrutils import blockmetadata, stringvalidators, validatemetadata
|
from onionrutils import blockmetadata, stringvalidators, validatemetadata
|
||||||
|
|
||||||
|
def _should_download(comm_inst, block_hash):
|
||||||
|
ret_data = True
|
||||||
|
if block_hash in comm_inst._core.getBlockList():
|
||||||
|
#logger.debug('Block %s is already saved.' % (blockHash,))
|
||||||
|
ret_data = False
|
||||||
|
else:
|
||||||
|
if comm_inst._core._blacklist.inBlacklist(blockHash):
|
||||||
|
ret_data = False
|
||||||
|
if ret_data is False:
|
||||||
|
try:
|
||||||
|
del comm_inst.blockQueue[blockHash]
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
return ret_data
|
||||||
|
|
||||||
def download_blocks_from_communicator(comm_inst):
|
def download_blocks_from_communicator(comm_inst):
|
||||||
assert isinstance(comm_inst, communicator.OnionrCommunicatorDaemon)
|
assert isinstance(comm_inst, communicator.OnionrCommunicatorDaemon)
|
||||||
for blockHash in list(comm_inst.blockQueue):
|
for blockHash in list(comm_inst.blockQueue):
|
||||||
@ -32,24 +47,18 @@ def download_blocks_from_communicator(comm_inst):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
blockPeers = []
|
blockPeers = []
|
||||||
removeFromQueue = True
|
removeFromQueue = True
|
||||||
if comm_inst.shutdown or not comm_inst.isOnline:
|
|
||||||
# Exit loop if shutting down or offline
|
if _should_download(comm_inst, blockHash):
|
||||||
|
continue
|
||||||
|
|
||||||
|
if comm_inst.shutdown or not comm_inst.isOnline or comm_inst._core.storage_counter.isFull():
|
||||||
|
# Exit loop if shutting down or offline, or disk allocation reached
|
||||||
break
|
break
|
||||||
# Do not download blocks being downloaded or that are already saved (edge cases)
|
# Do not download blocks being downloaded or that are already saved (edge cases)
|
||||||
if blockHash in comm_inst.currentDownloading:
|
if blockHash in comm_inst.currentDownloading:
|
||||||
#logger.debug('Already downloading block %s...' % blockHash)
|
#logger.debug('Already downloading block %s...' % blockHash)
|
||||||
continue
|
continue
|
||||||
if blockHash in comm_inst._core.getBlockList():
|
|
||||||
#logger.debug('Block %s is already saved.' % (blockHash,))
|
|
||||||
try:
|
|
||||||
del comm_inst.blockQueue[blockHash]
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
continue
|
|
||||||
if comm_inst._core._blacklist.inBlacklist(blockHash):
|
|
||||||
continue
|
|
||||||
if comm_inst._core.storage_counter.isFull():
|
|
||||||
break
|
|
||||||
comm_inst.currentDownloading.append(blockHash) # So we can avoid concurrent downloading in other threads of same block
|
comm_inst.currentDownloading.append(blockHash) # So we can avoid concurrent downloading in other threads of same block
|
||||||
if len(blockPeers) == 0:
|
if len(blockPeers) == 0:
|
||||||
peerUsed = comm_inst.pickOnlinePeer()
|
peerUsed = comm_inst.pickOnlinePeer()
|
||||||
|
@ -68,6 +68,7 @@ class PublicEndpoints:
|
|||||||
|
|
||||||
@public_endpoints_bp.route('/announce', methods=['post'])
|
@public_endpoints_bp.route('/announce', methods=['post'])
|
||||||
def accept_announce():
|
def accept_announce():
|
||||||
|
'''Accept announcements with pow token to prevent spam'''
|
||||||
resp = announce.handle_announce(client_API, request)
|
resp = announce.handle_announce(client_API, request)
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ class Block:
|
|||||||
|
|
||||||
# Check for replay attacks
|
# Check for replay attacks
|
||||||
try:
|
try:
|
||||||
if epoch.get_epoch() - self.core.getBlockDate(self.hash) < 60:
|
if epoch.get_epoch() - self.core.getBlockDate(self.hash) > 60:
|
||||||
assert self.core._crypto.replayTimestampValidation(self.bmetadata['rply'])
|
assert self.core._crypto.replayTimestampValidation(self.bmetadata['rply'])
|
||||||
except (AssertionError, KeyError, TypeError) as e:
|
except (AssertionError, KeyError, TypeError) as e:
|
||||||
if not self.bypassReplayCheck:
|
if not self.bypassReplayCheck:
|
||||||
|
753
onionr/static-data/www/ui/dist/js/main.js
vendored
753
onionr/static-data/www/ui/dist/js/main.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user