Merge branch 'fixmultiprocessexit' of /home/user/win-merges/bare-onionr/onionr into fixmultiprocessexit

master
Kevin Froman 2020-12-03 05:24:42 +00:00
commit 968f468027
5 changed files with 37 additions and 13 deletions

View File

@ -54,7 +54,9 @@ def block_exec(event, info):
'stem/response/getinfo.py', 'stem/response/getinfo.py',
'stem/response/getconf.py', 'stem/response/getconf.py',
'stem/response/mapaddress.py', 'stem/response/mapaddress.py',
'stem/response/protocolinfo.py' 'stem/response/protocolinfo.py',
'apport/__init__.py',
'apport/report.py'
] ]
whitelisted_source = [] whitelisted_source = []
home = identifyhome.identify_home() home = identifyhome.identify_home()

View File

@ -18,6 +18,7 @@ from onionrstorage import removeblock
from onionrblocks import onionrblacklist from onionrblocks import onionrblacklist
from onionrblocks.storagecounter import StorageCounter from onionrblocks.storagecounter import StorageCounter
from etc.onionrvalues import DATABASE_LOCK_TIMEOUT from etc.onionrvalues import DATABASE_LOCK_TIMEOUT
from onionrproofs import hashMeetsDifficulty
""" """
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -44,16 +45,25 @@ def __remove_from_upload(shared_state, block_hash: str):
pass pass
def __purge_block(shared_state, block_hash, add_to_blacklist = True):
blacklist = None
removeblock.remove_block(block_hash)
onionrstorage.deleteBlock(block_hash)
__remove_from_upload(shared_state, block_hash)
if add_to_blacklist:
blacklist = onionrblacklist.OnionrBlackList()
blacklist.addToDB(block_hash)
def clean_old_blocks(shared_state): def clean_old_blocks(shared_state):
"""Delete expired blocks + old blocks if disk allocation is near full""" """Delete expired blocks + old blocks if disk allocation is near full"""
blacklist = onionrblacklist.OnionrBlackList() blacklist = onionrblacklist.OnionrBlackList()
# Delete expired blocks # Delete expired blocks
for bHash in blockmetadb.expiredblocks.get_expired_blocks(): for bHash in blockmetadb.expiredblocks.get_expired_blocks():
blacklist.addToDB(bHash) __purge_block(shared_state, bHash, add_to_blacklist=True)
removeblock.remove_block(bHash) logger.info('Deleted expired block: %s' % (bHash,))
onionrstorage.deleteBlock(bHash)
__remove_from_upload(shared_state, bHash)
logger.info('Deleted block: %s' % (bHash,))
while storage_counter.is_full(): while storage_counter.is_full():
try: try:
@ -61,11 +71,8 @@ def clean_old_blocks(shared_state):
except IndexError: except IndexError:
break break
else: else:
blacklist.addToDB(oldest) __purge_block(shared_state, bHash, add_to_blacklist=True)
removeblock.remove_block(oldest) logger.info('Deleted block because of full storage: %s' % (oldest,))
onionrstorage.deleteBlock(oldest)
__remove_from_upload(shared_state, oldest)
logger.info('Deleted block: %s' % (oldest,))
def clean_keys(): def clean_keys():
@ -88,3 +95,14 @@ def clean_keys():
conn.close() conn.close()
onionrusers.deleteExpiredKeys() onionrusers.deleteExpiredKeys()
def clean_blocks_not_meeting_pow(shared_state):
"""Clean blocks not meeting min send/rec pow. Used if config.json POW changes"""
block_list = blockmetadb.get_block_list()
for block in block_list:
if not hashMeetsDifficulty(block):
logger.warn(
f"Deleting block {block} because it was stored" +
"with a POW level smaller than current.", terminal=True)
__purge_block(shared_state, block)

View File

@ -12,6 +12,7 @@ from coredb.blockmetadb import get_block_list
from onionrblocks.blockimporter import import_block_from_data from onionrblocks.blockimporter import import_block_from_data
import onionrexceptions import onionrexceptions
from ..server import ports from ..server import ports
from onionrproofs import hashMeetsDifficulty
from threading import Thread from threading import Thread
""" """
@ -37,7 +38,7 @@ def _lan_work(peer: LANIP):
our_blocks = get_block_list() our_blocks = get_block_list()
blocks = requests.get(url + 'blist/0').text.splitlines() blocks = requests.get(url + 'blist/0').text.splitlines()
for block in blocks: for block in blocks:
if block not in our_blocks: if block not in our_blocks and hashMeetsDifficulty(block):
try: try:
import_block_from_data( import_block_from_data(
requests.get( requests.get(

View File

@ -42,6 +42,7 @@ from lan.server import LANServer
from sneakernet import sneakernet_import_thread from sneakernet import sneakernet_import_thread
from onionrstatistics.devreporting import statistics_reporter from onionrstatistics.devreporting import statistics_reporter
from setupkvvars import setup_kv from setupkvvars import setup_kv
from communicatorutils.housekeeping import clean_blocks_not_meeting_pow
from .spawndaemonthreads import spawn_client_threads from .spawndaemonthreads import spawn_client_threads
""" """
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -222,6 +223,8 @@ def daemon():
'proxyPort', net.socksPort) 'proxyPort', net.socksPort)
spawn_client_threads(shared_state) spawn_client_threads(shared_state)
clean_blocks_not_meeting_pow(shared_state)
communicator.startCommunicator(shared_state) communicator.startCommunicator(shared_state)
clean_ephemeral_services() clean_ephemeral_services()

View File

@ -55,7 +55,7 @@ If you want to update your site later you must remember the passphrase.''',
if error_encountered: if error_encountered:
sys.exit(1) sys.exit(1)
logger.info('Generating site...', terminal=True)
results = onionrsitesapi.sitefiles.create_site( results = onionrsitesapi.sitefiles.create_site(
passphrase, directory=directory) passphrase, directory=directory)
results = (results[0].replace('=', ''), results[1]) results = (results[0].replace('=', ''), results[1])