Module src.communicatorutils.housekeeping
Onionr - Private P2P Communication
Cleanup old Onionr blocks and forward secrecy keys using the communicator. Ran from a timer usually
Expand source code
'''
    Onionr - Private P2P Communication
    Cleanup old Onionr blocks and forward secrecy keys using the communicator. Ran from a timer usually
'''
'''
    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
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
'''
import sqlite3
import logger
from onionrusers import onionrusers
from onionrutils import epoch
from coredb import blockmetadb, dbfiles
import onionrstorage
from onionrstorage import removeblock
from onionrblocks import onionrblacklist
def __remove_from_upload(comm_inst, block_hash: str):
    try:
        comm_inst.blocksToUpload.remove(block_hash)
    except ValueError:
        pass
def clean_old_blocks(comm_inst):
    '''Delete old blocks if our disk allocation is full/near full, and also expired blocks'''
    blacklist = onionrblacklist.OnionrBlackList()
    # Delete expired blocks
    for bHash in blockmetadb.expiredblocks.get_expired_blocks():
        blacklist.addToDB(bHash)
        removeblock.remove_block(bHash)
        onionrstorage.deleteBlock(bHash)
        __remove_from_upload(comm_inst, bHash)
        logger.info('Deleted block: %s' % (bHash,))
    while comm_inst.storage_counter.is_full():
        oldest = blockmetadb.get_block_list()[0]
        blacklist.addToDB(oldest)
        removeblock.remove_block(oldest)
        onionrstorage.deleteBlock(oldest)
        __remove_from_upload.remove(comm_inst, oldest)
        logger.info('Deleted block: %s' % (oldest,))
    comm_inst.decrementThreadCount('clean_old_blocks')
def clean_keys(comm_inst):
    '''Delete expired forward secrecy keys'''
    conn = sqlite3.connect(dbfiles.user_id_info_db, timeout=10)
    c = conn.cursor()
    time = epoch.get_epoch()
    deleteKeys = []
    for entry in c.execute("SELECT * FROM forwardKeys WHERE expire <= ?", (time,)):
        logger.debug('Forward key: %s' % entry[1])
        deleteKeys.append(entry[1])
    for key in deleteKeys:
        logger.debug('Deleting forward key %s' % key)
        c.execute("DELETE from forwardKeys where forwardKey = ?", (key,))
    conn.commit()
    conn.close()
    onionrusers.deleteExpiredKeys()
    comm_inst.decrementThreadCount('clean_keys')Functions
- def clean_keys(comm_inst)
- 
Delete expired forward secrecy keys Expand source codedef clean_keys(comm_inst): '''Delete expired forward secrecy keys''' conn = sqlite3.connect(dbfiles.user_id_info_db, timeout=10) c = conn.cursor() time = epoch.get_epoch() deleteKeys = [] for entry in c.execute("SELECT * FROM forwardKeys WHERE expire <= ?", (time,)): logger.debug('Forward key: %s' % entry[1]) deleteKeys.append(entry[1]) for key in deleteKeys: logger.debug('Deleting forward key %s' % key) c.execute("DELETE from forwardKeys where forwardKey = ?", (key,)) conn.commit() conn.close() onionrusers.deleteExpiredKeys() comm_inst.decrementThreadCount('clean_keys')
- def clean_old_blocks(comm_inst)
- 
Delete old blocks if our disk allocation is full/near full, and also expired blocks Expand source codedef clean_old_blocks(comm_inst): '''Delete old blocks if our disk allocation is full/near full, and also expired blocks''' blacklist = onionrblacklist.OnionrBlackList() # Delete expired blocks for bHash in blockmetadb.expiredblocks.get_expired_blocks(): blacklist.addToDB(bHash) removeblock.remove_block(bHash) onionrstorage.deleteBlock(bHash) __remove_from_upload(comm_inst, bHash) logger.info('Deleted block: %s' % (bHash,)) while comm_inst.storage_counter.is_full(): oldest = blockmetadb.get_block_list()[0] blacklist.addToDB(oldest) removeblock.remove_block(oldest) onionrstorage.deleteBlock(oldest) __remove_from_upload.remove(comm_inst, oldest) logger.info('Deleted block: %s' % (oldest,)) comm_inst.decrementThreadCount('clean_old_blocks')