From f0cd2fb2b919eb596d2c825368eaf530ebe8143d Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Mon, 2 Nov 2020 01:31:11 +0000 Subject: [PATCH] moved blockmetadata to onionrblocks --- .../downloadblocks/__init__.py | 2 +- src/coredb/blockmetadb/add.py | 10 +++-- src/onionrblocks/blockdecrypt.py | 11 ++++++ src/onionrblocks/blockimporter.py | 2 +- .../blockmetadata/__init__.py | 0 .../blockmetadata/fromdata.py | 0 .../blockmetadata/hasblock.py | 29 +++++++------- .../blockmetadata/process.py | 38 +++++++++---------- src/onionrblocks/insert/main.py | 3 +- src/onionrblocks/onionrblockapi.py | 28 -------------- src/onionrstorage/setdata.py | 4 +- src/onionrutils/importnewblocks.py | 2 +- 12 files changed, 56 insertions(+), 73 deletions(-) create mode 100644 src/onionrblocks/blockdecrypt.py rename src/{onionrutils => onionrblocks}/blockmetadata/__init__.py (100%) rename src/{onionrutils => onionrblocks}/blockmetadata/fromdata.py (100%) rename src/{onionrutils => onionrblocks}/blockmetadata/hasblock.py (82%) rename src/{onionrutils => onionrblocks}/blockmetadata/process.py (90%) diff --git a/src/communicatorutils/downloadblocks/__init__.py b/src/communicatorutils/downloadblocks/__init__.py index 7752418b..6f944096 100755 --- a/src/communicatorutils/downloadblocks/__init__.py +++ b/src/communicatorutils/downloadblocks/__init__.py @@ -17,7 +17,7 @@ import onionrpeers from communicator import peeraction from communicator import onlinepeers -from onionrutils import blockmetadata +from onionrblocks import blockmetadata from onionrutils import validatemetadata from coredb import blockmetadb from onionrutils.localcommand import local_command diff --git a/src/coredb/blockmetadb/add.py b/src/coredb/blockmetadb/add.py index 682d3be4..ec1ab861 100644 --- a/src/coredb/blockmetadb/add.py +++ b/src/coredb/blockmetadb/add.py @@ -2,10 +2,10 @@ Add an entry to the block metadata database """ -import os import sqlite3 import secrets -from onionrutils import epoch, blockmetadata +from onionrutils import epoch +from onionrblocks import blockmetadata from etc import onionrvalues from .. import dbfiles from onionrexceptions import BlockMetaEntryExists @@ -34,7 +34,8 @@ def add_to_block_DB(newHash, selfInsert=False, dataSaved=False): if blockmetadata.has_block(newHash): raise BlockMetaEntryExists - conn = sqlite3.connect(dbfiles.block_meta_db, timeout=onionrvalues.DATABASE_LOCK_TIMEOUT) + conn = sqlite3.connect( + dbfiles.block_meta_db, timeout=onionrvalues.DATABASE_LOCK_TIMEOUT) c = conn.cursor() currentTime = epoch.get_epoch() + secrets.randbelow(61) if selfInsert or dataSaved: @@ -42,6 +43,7 @@ def add_to_block_DB(newHash, selfInsert=False, dataSaved=False): else: selfInsert = 0 data = (newHash, currentTime, '', selfInsert) - c.execute('INSERT INTO hashes (hash, dateReceived, dataType, dataSaved) VALUES(?, ?, ?, ?);', data) + c.execute( + 'INSERT INTO hashes (hash, dateReceived, dataType, dataSaved) VALUES(?, ?, ?, ?);', data) conn.commit() conn.close() diff --git a/src/onionrblocks/blockdecrypt.py b/src/onionrblocks/blockdecrypt.py new file mode 100644 index 00000000..5a3aad73 --- /dev/null +++ b/src/onionrblocks/blockdecrypt.py @@ -0,0 +1,11 @@ +import ujson +import nacl.utils +from nacl.public import PrivateKey, SealedBox + +from .blockmetadata import get_block_metadata_from_data + +def block_decrypt(raw_block) -> DecryptedBlock: + block_header, user_meta, block_data = get_block_metadata_from_data( + raw_block) + + diff --git a/src/onionrblocks/blockimporter.py b/src/onionrblocks/blockimporter.py index 0226147e..29fde84f 100755 --- a/src/onionrblocks/blockimporter.py +++ b/src/onionrblocks/blockimporter.py @@ -8,9 +8,9 @@ from onionrexceptions import InvalidProof from onionrexceptions import InvalidMetadata import logger from onionrutils import validatemetadata -from onionrutils import blockmetadata from onionrutils import bytesconverter from coredb import blockmetadb +from onionrblocks import blockmetadata import onionrstorage import onionrcrypto as crypto from . import onionrblacklist diff --git a/src/onionrutils/blockmetadata/__init__.py b/src/onionrblocks/blockmetadata/__init__.py similarity index 100% rename from src/onionrutils/blockmetadata/__init__.py rename to src/onionrblocks/blockmetadata/__init__.py diff --git a/src/onionrutils/blockmetadata/fromdata.py b/src/onionrblocks/blockmetadata/fromdata.py similarity index 100% rename from src/onionrutils/blockmetadata/fromdata.py rename to src/onionrblocks/blockmetadata/fromdata.py diff --git a/src/onionrutils/blockmetadata/hasblock.py b/src/onionrblocks/blockmetadata/hasblock.py similarity index 82% rename from src/onionrutils/blockmetadata/hasblock.py rename to src/onionrblocks/blockmetadata/hasblock.py index 9ee59134..72b6d6eb 100644 --- a/src/onionrutils/blockmetadata/hasblock.py +++ b/src/onionrblocks/blockmetadata/hasblock.py @@ -1,9 +1,13 @@ -''' - Onionr - Private P2P Communication +"""Onionr - Private P2P Communication. - Returns a bool if a block is in the block metadata db or not -''' -''' +Return a bool if a block is in the block metadata db or not +""" +import sqlite3 +from coredb import dbfiles +import onionrexceptions +from onionrutils import stringvalidators +from etc import onionrvalues +""" 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 @@ -16,18 +20,13 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . -''' -import sqlite3 -from coredb import dbfiles -import onionrexceptions -from .. import stringvalidators -from etc import onionrvalues +""" + def has_block(hash: str) -> bool: - ''' - Check for new block in the block meta db - ''' - conn = sqlite3.connect(dbfiles.block_meta_db, + """Check for new block in the block meta db.""" + conn = sqlite3.connect( + dbfiles.block_meta_db, timeout=onionrvalues.DATABASE_LOCK_TIMEOUT) c = conn.cursor() if not stringvalidators.validate_hash(hash): diff --git a/src/onionrutils/blockmetadata/process.py b/src/onionrblocks/blockmetadata/process.py similarity index 90% rename from src/onionrutils/blockmetadata/process.py rename to src/onionrblocks/blockmetadata/process.py index 5a2333d4..fe094977 100644 --- a/src/onionrutils/blockmetadata/process.py +++ b/src/onionrblocks/blockmetadata/process.py @@ -1,9 +1,17 @@ -''' - Onionr - Private P2P Communication +"""Onionr - Private P2P Communication. - Process block metadata with relevant actions -''' -''' +Process block metadata with relevant actions +""" +from etc import onionrvalues +from onionrblocks import onionrblockapi +from onionrutils import epoch, bytesconverter +from coredb import blockmetadb +import logger +from onionrplugins import onionrevents +import onionrexceptions +from onionrusers import onionrusers +from onionrutils import updater +""" 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 @@ -16,25 +24,15 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . -''' +""" -from etc import onionrvalues -from onionrblocks import onionrblockapi -from .. import epoch, bytesconverter -from coredb import blockmetadb -import logger -from onionrplugins import onionrevents -import onionrexceptions -from onionrusers import onionrusers -from onionrutils import updater -from gevent import sleep def process_block_metadata(blockHash: str): - ''' - Read metadata from a block and cache it to the block database + """ + Read metadata from a block and cache it to the block database. - blockHash -> sha3_256 hex formatted hash of Onionr block - ''' + blockHash -> sha3_256 hex formatted hash of Onionr block + """ curTime = epoch.get_rounded_epoch(roundS=60) myBlock = onionrblockapi.Block(blockHash) if myBlock.isEncrypted: diff --git a/src/onionrblocks/insert/main.py b/src/onionrblocks/insert/main.py index 971ac1f5..77acf276 100644 --- a/src/onionrblocks/insert/main.py +++ b/src/onionrblocks/insert/main.py @@ -17,7 +17,8 @@ import config import onionrcrypto as crypto import onionrexceptions from onionrusers import onionrusers -from onionrutils import localcommand, blockmetadata, stringvalidators +from onionrutils import localcommand, stringvalidators +from .. import blockmetadata import coredb from onionrproofs import subprocesspow import logger diff --git a/src/onionrblocks/onionrblockapi.py b/src/onionrblocks/onionrblockapi.py index 7d00cd9f..875d8faf 100755 --- a/src/onionrblocks/onionrblockapi.py +++ b/src/onionrblocks/onionrblockapi.py @@ -2,7 +2,6 @@ OnionrBlocks class for abstraction of blocks """ -import binascii import datetime import onionrstorage @@ -207,33 +206,6 @@ class Block: return False - def save(self, sign = False, recreate = True): - """ - Saves a block to file and imports it into Onionr - - Inputs: - - sign (bool): whether or not to sign the block before saving - - recreate (bool): if the block already exists, whether or not to recreate the block and save under a new hash - - Outputs: - - (bool): whether or not the operation was successful - """ - - try: - if self.isValid() is True: - - self.hash = onionrblocks.insert(self.getRaw(), header = self.getType(), sign = sign, meta = self.getMetadata(), expire = self.getExpire()) - if self.hash != False: - self.update() - - return self.getHash() - else: - logger.warn('Not writing block; it is invalid.') - except Exception as e: - logger.error('Failed to save block.', error = e, timestamp = False) - - return False - # getters def getExpire(self): diff --git a/src/onionrstorage/setdata.py b/src/onionrstorage/setdata.py index 652b40f3..456276f5 100644 --- a/src/onionrstorage/setdata.py +++ b/src/onionrstorage/setdata.py @@ -9,9 +9,9 @@ import onionrstorage import onionrexceptions import onionrcrypto as crypto import filepaths -from onionrblocks import storagecounter +from onionrblocks import storagecounter, blockmetadata from coredb import dbfiles -from onionrutils import blockmetadata, bytesconverter +from onionrutils import bytesconverter from etc.onionrvalues import DATABASE_LOCK_TIMEOUT from onionrtypes import BlockHash """ diff --git a/src/onionrutils/importnewblocks.py b/src/onionrutils/importnewblocks.py index 7e6bec58..11ae89c5 100644 --- a/src/onionrutils/importnewblocks.py +++ b/src/onionrutils/importnewblocks.py @@ -5,7 +5,7 @@ import new blocks from disk, providing transport agnosticism import glob import logger -from onionrutils import blockmetadata +from onionrblocks import blockmetadata from coredb import blockmetadb import filepaths import onionrcrypto as crypto