Merge branch 'fixmultiprocessexit' of /home/user/win-merges/bare-onionr/onionr into fixmultiprocessexit
This commit is contained in:
		
						commit
						968f468027
					
				
					 5 changed files with 37 additions and 13 deletions
				
			
		|  | @ -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() | ||||||
|  |  | ||||||
|  | @ -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) | ||||||
|  |  | ||||||
|  | @ -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( | ||||||
|  |  | ||||||
|  | @ -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() | ||||||
|  |  | ||||||
|  | @ -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]) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue