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