diff --git a/docs/dev/blockio-keys.txt b/docs/dev/blockio-keys.txt index 46dd0a5e..86ea16de 100644 --- a/docs/dev/blockio-keys.txt +++ b/docs/dev/blockio-keys.txt @@ -2,5 +2,5 @@ Blockio wraps safedb, the new key value database module This is how the keys are setup and what they are for: -bl-{type}: list of hashes for blocks for every stored block type +bl-{type}: bytes of hashes for each block type {block hash}: block data diff --git a/scripts/block-spammer.py b/scripts/block-spammer.py index 51ae6b37..629b3805 100755 --- a/scripts/block-spammer.py +++ b/scripts/block-spammer.py @@ -11,7 +11,7 @@ import os if not os.path.exists('onionr.sh'): os.chdir('../') sys.path.append("src/") -import onionrblocks +import oldblocks amount = int(input("Number of blocks:")) @@ -24,8 +24,8 @@ else: for i in range(amount): if expire: - print(onionrblocks.insert(data=os.urandom(32), expire=expire)) + print(oldblocks.insert(data=os.urandom(32), expire=expire)) else: - print(onionrblocks.insert(data=os.urandom(32))) + print(oldblocks.insert(data=os.urandom(32))) print(i, "done") diff --git a/scripts/show-blocks.py b/scripts/show-blocks.py index cfb3f5e3..e93ce2d4 100644 --- a/scripts/show-blocks.py +++ b/scripts/show-blocks.py @@ -6,7 +6,7 @@ if not os.path.exists('onionr.sh'): os.chdir('../') sys.path.append("src/") from coredb.blockmetadb import get_block_list -from onionrblocks.onionrblockapi import Block +from oldblocks.onionrblockapi import Block for bl in get_block_list(): bl_obj = Block(bl, decrypt=False) diff --git a/scripts/testblock.py b/scripts/testblock.py index f0085641..9967409b 100755 --- a/scripts/testblock.py +++ b/scripts/testblock.py @@ -5,8 +5,8 @@ import os if not os.path.exists('onionr.sh'): os.chdir('../') sys.path.append("src/") -import onionrblocks +import oldblocks expire = 600 -print(onionrblocks.insert(data=os.urandom(32), expire=expire)) +print(oldblocks.insert(data=os.urandom(32), expire=expire)) diff --git a/src/__init__.py b/src/__init__.py index 7ee2fd0e..c78a7478 100755 --- a/src/__init__.py +++ b/src/__init__.py @@ -70,7 +70,7 @@ createdirs.create_dirs() import bigbrother # noqa from onionrcommands import parser # noqa from onionrplugins import onionrevents as events # noqa -from onionrblocks.deleteplaintext import delete_plaintext_no_blacklist # noqa +from oldblocks.deleteplaintext import delete_plaintext_no_blacklist # noqa setup.setup_config() diff --git a/src/blockio/store/__init__.py b/src/blockio/store/__init__.py index 101a8bc9..251b361e 100644 --- a/src/blockio/store/__init__.py +++ b/src/blockio/store/__init__.py @@ -2,7 +2,13 @@ Store blocks and cache meta info such as block type """ -import safedb +from typing import TYPE_CHECKING, Union, NewType + +from safedb import DBProtectionOpeningModeError + +if TYPE_CHECKING: + from kasten import Kasten + from safedb import SafeDB """ 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 @@ -18,9 +24,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ +RawBlock = NewType('RawBlock', bytes) -def store_block(block_data): - # If Onionr daemon is running, we should use the client - # API server to store blocks, if not we can +def store_block(block: Kasten, safe_db: SafeDB): + + safe_db.put(block.id, block.get_packed()) diff --git a/src/communicatorutils/deniableinserts.py b/src/communicatorutils/deniableinserts.py index 26c34163..aff6e2b2 100755 --- a/src/communicatorutils/deniableinserts.py +++ b/src/communicatorutils/deniableinserts.py @@ -5,7 +5,7 @@ Use the communicator to insert fake mail messages import secrets from etc import onionrvalues -import onionrblocks +import oldblocks """ 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 @@ -30,6 +30,6 @@ def insert_deniable_block(): # This assumes on the libsodium primitives to have key-privacy fakePeer = onionrvalues.DENIABLE_PEER_ADDRESS data = secrets.token_hex(secrets.randbelow(5120) + 1) - onionrblocks.insert(data, header='pm', encryptType='asym', + oldblocks.insert(data, header='pm', encryptType='asym', asymPeer=fakePeer, disableForward=True, meta={'subject': 'foo'}) diff --git a/src/communicatorutils/downloadblocks/__init__.py b/src/communicatorutils/downloadblocks/__init__.py index 08cf9a1e..9be16770 100755 --- a/src/communicatorutils/downloadblocks/__init__.py +++ b/src/communicatorutils/downloadblocks/__init__.py @@ -17,14 +17,14 @@ import onionrpeers from communicator import peeraction from communicator import onlinepeers -from onionrblocks import blockmetadata +from oldblocks import blockmetadata from onionrutils import validatemetadata from coredb import blockmetadb from onionrutils.localcommand import local_command import onionrcrypto import onionrstorage -from onionrblocks import onionrblacklist -from onionrblocks import storagecounter +from oldblocks import onionrblacklist +from oldblocks import storagecounter from . import shoulddownload """ This program is free software: you can redistribute it and/or modify diff --git a/src/communicatorutils/downloadblocks/shoulddownload.py b/src/communicatorutils/downloadblocks/shoulddownload.py index ddf11624..cd1282de 100644 --- a/src/communicatorutils/downloadblocks/shoulddownload.py +++ b/src/communicatorutils/downloadblocks/shoulddownload.py @@ -4,7 +4,7 @@ Check if a block should be downloaded (if we already have it or its blacklisted or not) """ from coredb import blockmetadb -from onionrblocks import onionrblacklist +from oldblocks import onionrblacklist """ 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 diff --git a/src/communicatorutils/housekeeping.py b/src/communicatorutils/housekeeping.py index a36f8556..212ca259 100755 --- a/src/communicatorutils/housekeeping.py +++ b/src/communicatorutils/housekeeping.py @@ -15,8 +15,8 @@ from onionrutils import epoch from coredb import blockmetadb, dbfiles import onionrstorage from onionrstorage import removeblock -from onionrblocks import onionrblacklist -from onionrblocks.storagecounter import StorageCounter +from oldblocks import onionrblacklist +from oldblocks.storagecounter import StorageCounter from etc.onionrvalues import DATABASE_LOCK_TIMEOUT from onionrproofs import hashMeetsDifficulty """ @@ -103,6 +103,6 @@ def clean_blocks_not_meeting_pow(shared_state): for block in block_list: if not hashMeetsDifficulty(block): logger.warn( - f"Deleting block {block} because it was stored" + + f"Deleting block {block} because it was stored" + "with a POW level smaller than current.", terminal=True) __purge_block(shared_state, block) diff --git a/src/communicatorutils/lookupblocks.py b/src/communicatorutils/lookupblocks.py index 99574b89..d8f73635 100755 --- a/src/communicatorutils/lookupblocks.py +++ b/src/communicatorutils/lookupblocks.py @@ -15,11 +15,11 @@ from onionrutils import stringvalidators, epoch from communicator import peeraction, onlinepeers from coredb.blockmetadb import get_block_list from utils import reconstructhash -from onionrblocks import onionrblacklist +from oldblocks import onionrblacklist import onionrexceptions import config from etc import onionrvalues -from onionrblocks.storagecounter import StorageCounter +from oldblocks.storagecounter import StorageCounter """ 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 diff --git a/src/communicatorutils/uploadblocks/__init__.py b/src/communicatorutils/uploadblocks/__init__.py index 8bf23be6..31db2955 100755 --- a/src/communicatorutils/uploadblocks/__init__.py +++ b/src/communicatorutils/uploadblocks/__init__.py @@ -13,8 +13,8 @@ from onionrtypes import UserID import logger from communicatorutils import proxypicker import onionrexceptions -from onionrblocks import onionrblockapi as block -from onionrblocks.blockmetadata.fromdata import get_block_metadata_from_data +from oldblocks import onionrblockapi as block +from oldblocks.blockmetadata.fromdata import get_block_metadata_from_data from onionrutils import stringvalidators, basicrequests from onionrutils.validatemetadata import validate_metadata from communicator import onlinepeers diff --git a/src/communicatorutils/uploadblocks/mixmate/__init__.py b/src/communicatorutils/uploadblocks/mixmate/__init__.py index 3e63ea99..9b235455 100644 --- a/src/communicatorutils/uploadblocks/mixmate/__init__.py +++ b/src/communicatorutils/uploadblocks/mixmate/__init__.py @@ -6,7 +6,7 @@ import time from typing import List import onionrtypes -from onionrblocks import onionrblockapi +from oldblocks import onionrblockapi from .pool import UploadPool from .pool import PoolFullException diff --git a/src/coredb/blockmetadb/add.py b/src/coredb/blockmetadb/add.py index ec1ab861..71194b4b 100644 --- a/src/coredb/blockmetadb/add.py +++ b/src/coredb/blockmetadb/add.py @@ -5,7 +5,7 @@ Add an entry to the block metadata database import sqlite3 import secrets from onionrutils import epoch -from onionrblocks import blockmetadata +from oldblocks import blockmetadata from etc import onionrvalues from .. import dbfiles from onionrexceptions import BlockMetaEntryExists diff --git a/src/httpapi/apiutils/getblockdata.py b/src/httpapi/apiutils/getblockdata.py index 9da1ee59..74988138 100644 --- a/src/httpapi/apiutils/getblockdata.py +++ b/src/httpapi/apiutils/getblockdata.py @@ -1,6 +1,6 @@ import ujson as json -from onionrblocks import onionrblockapi +from oldblocks import onionrblockapi from onionrutils import bytesconverter, stringvalidators import onionrexceptions class GetBlockData: diff --git a/src/httpapi/insertblock.py b/src/httpapi/insertblock.py index bafe41e1..db12d6ee 100644 --- a/src/httpapi/insertblock.py +++ b/src/httpapi/insertblock.py @@ -11,7 +11,7 @@ from flask import Blueprint, Response, request, g if TYPE_CHECKING: from deadsimplekv import DeadSimpleKV -import onionrblocks +import oldblocks from onionrcrypto import hashers from onionrutils import bytesconverter from onionrutils import mnemonickeys @@ -84,7 +84,7 @@ def client_api_insert_block(): disable_forward_secrecy = False threading.Thread( - target=onionrblocks.insert, args=(message,), + target=oldblocks.insert, args=(message,), kwargs={'header': bType, 'encryptType': encrypt_type, 'sign': sign, 'asymPeer': to, 'meta': meta, 'disableForward': disable_forward_secrecy}).start() diff --git a/src/httpapi/miscclientapi/getblocks.py b/src/httpapi/miscclientapi/getblocks.py index 4e7fd58e..18f4fc9f 100644 --- a/src/httpapi/miscclientapi/getblocks.py +++ b/src/httpapi/miscclientapi/getblocks.py @@ -18,7 +18,7 @@ along with this program. If not, see . ''' from flask import Blueprint, Response, abort -from onionrblocks import onionrblockapi +from oldblocks import onionrblockapi from .. import apiutils from onionrutils import stringvalidators from coredb import blockmetadb diff --git a/src/httpapi/miscclientapi/motd/__init__.py b/src/httpapi/miscclientapi/motd/__init__.py index ad57b91a..c467d097 100644 --- a/src/httpapi/miscclientapi/motd/__init__.py +++ b/src/httpapi/miscclientapi/motd/__init__.py @@ -3,7 +3,7 @@ from flask import Response import unpaddedbase32 from coredb import blockmetadb -import onionrblocks +import oldblocks from etc import onionrvalues import config from onionrutils import bytesconverter @@ -18,7 +18,7 @@ def get_motd()->Response: newest_time = 0 message = "No MOTD currently present." for x in motds: - bl = onionrblocks.onionrblockapi.Block(x) + bl = oldblocks.onionrblockapi.Block(x) if not bl.verifySig() or bl.signer != bytesconverter.bytes_to_str(unpaddedbase32.repad(bytesconverter.str_to_bytes(signer))): continue if not bl.isSigner(signer): continue if bl.claimedTime > newest_time: diff --git a/src/httpapi/miscpublicapi/getblocks.py b/src/httpapi/miscpublicapi/getblocks.py index cc64e6c9..95efc34f 100755 --- a/src/httpapi/miscpublicapi/getblocks.py +++ b/src/httpapi/miscpublicapi/getblocks.py @@ -8,8 +8,8 @@ import config from onionrutils import bytesconverter, stringvalidators from coredb import blockmetadb from utils import reconstructhash -from onionrblocks import BlockList -from onionrblocks.onionrblockapi import Block +from oldblocks import BlockList +from oldblocks.onionrblockapi import Block from .. import apiutils """ This program is free software: you can redistribute it and/or modify diff --git a/src/httpapi/miscpublicapi/upload.py b/src/httpapi/miscpublicapi/upload.py index 9e57f1e4..6535d624 100755 --- a/src/httpapi/miscpublicapi/upload.py +++ b/src/httpapi/miscpublicapi/upload.py @@ -10,7 +10,7 @@ from flask import abort from flask import g from onionrutils import localcommand -from onionrblocks import blockimporter +from oldblocks import blockimporter import onionrexceptions import logger import config diff --git a/src/httpapi/onionrsitesapi/__init__.py b/src/httpapi/onionrsitesapi/__init__.py index 9526aa76..2b431ce6 100644 --- a/src/httpapi/onionrsitesapi/__init__.py +++ b/src/httpapi/onionrsitesapi/__init__.py @@ -10,7 +10,7 @@ import unpaddedbase32 from flask import Blueprint, Response, request, abort -from onionrblocks import onionrblockapi +from oldblocks import onionrblockapi import onionrexceptions from onionrutils import stringvalidators from onionrutils import mnemonickeys diff --git a/src/httpapi/onionrsitesapi/findsite.py b/src/httpapi/onionrsitesapi/findsite.py index 6811ae4c..454d0131 100644 --- a/src/httpapi/onionrsitesapi/findsite.py +++ b/src/httpapi/onionrsitesapi/findsite.py @@ -10,7 +10,7 @@ import onionrexceptions from onionrutils import mnemonickeys from onionrutils import stringvalidators from coredb import blockmetadb -from onionrblocks.onionrblockapi import Block +from oldblocks.onionrblockapi import Block from onionrtypes import BlockHash """ diff --git a/src/httpapi/onionrsitesapi/sitefiles.py b/src/httpapi/onionrsitesapi/sitefiles.py index f9171926..c43fd897 100644 --- a/src/httpapi/onionrsitesapi/sitefiles.py +++ b/src/httpapi/onionrsitesapi/sitefiles.py @@ -10,8 +10,8 @@ import os import unpaddedbase32 from coredb import blockmetadb -from onionrblocks import onionrblockapi -from onionrblocks import insert +from oldblocks import onionrblockapi +from oldblocks import insert # Import types. Just for type hiting from onionrtypes import UserID, DeterministicKeyPassphrase, BlockHash diff --git a/src/httpapi/sse/private/__init__.py b/src/httpapi/sse/private/__init__.py index 4213fd4f..625ec89f 100644 --- a/src/httpapi/sse/private/__init__.py +++ b/src/httpapi/sse/private/__init__.py @@ -9,7 +9,7 @@ from gevent import sleep import gevent import ujson -from onionrblocks.onionrblockapi import Block +from oldblocks.onionrblockapi import Block from coredb.dbfiles import block_meta_db from coredb.blockmetadb import get_block_list from onionrutils.epoch import get_epoch diff --git a/src/lan/client/__init__.py b/src/lan/client/__init__.py index 6b1dab66..48bc8609 100644 --- a/src/lan/client/__init__.py +++ b/src/lan/client/__init__.py @@ -9,7 +9,7 @@ from typing import Set from onionrtypes import LANIP import logger from coredb.blockmetadb import get_block_list -from onionrblocks.blockimporter import import_block_from_data +from oldblocks.blockimporter import import_block_from_data import onionrexceptions from ..server import ports from onionrproofs import hashMeetsDifficulty diff --git a/src/lan/server/__init__.py b/src/lan/server/__init__.py index ce52a8c2..acbb183c 100644 --- a/src/lan/server/__init__.py +++ b/src/lan/server/__init__.py @@ -12,7 +12,7 @@ from flask import Response from flask import request from flask import abort -from onionrblocks.onionrblockapi import Block +from oldblocks.onionrblockapi import Block from httpapi.fdsafehandler import FDSafeHandler from netcontroller import get_open_port import config diff --git a/src/onionrblocks/__init__.py b/src/oldblocks/__init__.py similarity index 100% rename from src/onionrblocks/__init__.py rename to src/oldblocks/__init__.py diff --git a/src/onionrblocks/blockdecrypt.py b/src/oldblocks/blockdecrypt.py similarity index 100% rename from src/onionrblocks/blockdecrypt.py rename to src/oldblocks/blockdecrypt.py diff --git a/src/onionrblocks/blockimporter.py b/src/oldblocks/blockimporter.py similarity index 98% rename from src/onionrblocks/blockimporter.py rename to src/oldblocks/blockimporter.py index 29fde84f..9c8b3b74 100755 --- a/src/onionrblocks/blockimporter.py +++ b/src/oldblocks/blockimporter.py @@ -10,7 +10,7 @@ import logger from onionrutils import validatemetadata from onionrutils import bytesconverter from coredb import blockmetadb -from onionrblocks import blockmetadata +from oldblocks import blockmetadata import onionrstorage import onionrcrypto as crypto from . import onionrblacklist diff --git a/src/onionrblocks/blocklist.py b/src/oldblocks/blocklist.py similarity index 100% rename from src/onionrblocks/blocklist.py rename to src/oldblocks/blocklist.py diff --git a/src/onionrblocks/blockmetadata/__init__.py b/src/oldblocks/blockmetadata/__init__.py similarity index 100% rename from src/onionrblocks/blockmetadata/__init__.py rename to src/oldblocks/blockmetadata/__init__.py diff --git a/src/onionrblocks/blockmetadata/fromdata.py b/src/oldblocks/blockmetadata/fromdata.py similarity index 100% rename from src/onionrblocks/blockmetadata/fromdata.py rename to src/oldblocks/blockmetadata/fromdata.py diff --git a/src/onionrblocks/blockmetadata/hasblock.py b/src/oldblocks/blockmetadata/hasblock.py similarity index 100% rename from src/onionrblocks/blockmetadata/hasblock.py rename to src/oldblocks/blockmetadata/hasblock.py diff --git a/src/onionrblocks/blockmetadata/process.py b/src/oldblocks/blockmetadata/process.py similarity index 98% rename from src/onionrblocks/blockmetadata/process.py rename to src/oldblocks/blockmetadata/process.py index fe094977..8018f099 100644 --- a/src/onionrblocks/blockmetadata/process.py +++ b/src/oldblocks/blockmetadata/process.py @@ -3,7 +3,7 @@ Process block metadata with relevant actions """ from etc import onionrvalues -from onionrblocks import onionrblockapi +from oldblocks import onionrblockapi from onionrutils import epoch, bytesconverter from coredb import blockmetadb import logger diff --git a/src/onionrblocks/deleteplaintext.py b/src/oldblocks/deleteplaintext.py similarity index 100% rename from src/onionrblocks/deleteplaintext.py rename to src/oldblocks/deleteplaintext.py diff --git a/src/onionrblocks/insert/__init__.py b/src/oldblocks/insert/__init__.py similarity index 100% rename from src/onionrblocks/insert/__init__.py rename to src/oldblocks/insert/__init__.py diff --git a/src/onionrblocks/insert/main.py b/src/oldblocks/insert/main.py similarity index 100% rename from src/onionrblocks/insert/main.py rename to src/oldblocks/insert/main.py diff --git a/src/onionrblocks/insert/timeinsert.py b/src/oldblocks/insert/timeinsert.py similarity index 100% rename from src/onionrblocks/insert/timeinsert.py rename to src/oldblocks/insert/timeinsert.py diff --git a/src/onionrblocks/onionrblacklist.py b/src/oldblocks/onionrblacklist.py similarity index 100% rename from src/onionrblocks/onionrblacklist.py rename to src/oldblocks/onionrblacklist.py diff --git a/src/onionrblocks/onionrblockapi.py b/src/oldblocks/onionrblockapi.py similarity index 99% rename from src/onionrblocks/onionrblockapi.py rename to src/oldblocks/onionrblockapi.py index 875d8faf..741347ad 100755 --- a/src/onionrblocks/onionrblockapi.py +++ b/src/oldblocks/onionrblockapi.py @@ -1,6 +1,6 @@ """Onionr - P2P Anonymous Storage Network. -OnionrBlocks class for abstraction of blocks +oldblocks class for abstraction of blocks """ import datetime import onionrstorage @@ -15,7 +15,7 @@ from onionrusers import onionrusers from onionrutils import stringvalidators, epoch from coredb import blockmetadb from onionrutils import bytesconverter -import onionrblocks +import oldblocks from onionrcrypto import encryption, cryptoutils as cryptoutils, signing """ This program is free software: you can redistribute it and/or modify diff --git a/src/onionrblocks/storagecounter.py b/src/oldblocks/storagecounter.py similarity index 100% rename from src/onionrblocks/storagecounter.py rename to src/oldblocks/storagecounter.py diff --git a/src/onionrcommands/banblocks.py b/src/onionrcommands/banblocks.py index 49fa21f8..0a91bdb5 100755 --- a/src/onionrcommands/banblocks.py +++ b/src/onionrcommands/banblocks.py @@ -7,7 +7,7 @@ import logger from onionrutils import stringvalidators from onionrstorage import removeblock from onionrstorage import deleteBlock -from onionrblocks import onionrblacklist +from oldblocks import onionrblacklist from utils import reconstructhash """ This program is free software: you can redistribute it and/or modify diff --git a/src/onionrcommands/daemonlaunch/spawndaemonthreads.py b/src/onionrcommands/daemonlaunch/spawndaemonthreads.py index 09b6213d..a19f2542 100644 --- a/src/onionrcommands/daemonlaunch/spawndaemonthreads.py +++ b/src/onionrcommands/daemonlaunch/spawndaemonthreads.py @@ -12,6 +12,7 @@ from communicatorutils import uploadblocks from communicatorutils import announcenode, deniableinserts from communicatorutils import netcheck import onionrpeers + import config if TYPE_CHECKING: diff --git a/src/onionrcommands/filecommands.py b/src/onionrcommands/filecommands.py index 315441df..131de0a9 100755 --- a/src/onionrcommands/filecommands.py +++ b/src/onionrcommands/filecommands.py @@ -6,11 +6,11 @@ and getting files from the Onionr network import sys import os import logger -from onionrblocks.onionrblockapi import Block +from oldblocks.onionrblockapi import Block import onionrexceptions from onionrutils import stringvalidators from etc import onionrvalues -from onionrblocks import insert +from oldblocks import insert """ 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 diff --git a/src/onionrcommands/listsites.py b/src/onionrcommands/listsites.py index 3f874cfe..0e67235a 100644 --- a/src/onionrcommands/listsites.py +++ b/src/onionrcommands/listsites.py @@ -3,7 +3,7 @@ Dumb listing of Onionr sites """ from coredb.blockmetadb import get_blocks_by_type -from onionrblocks.onionrblockapi import Block +from oldblocks.onionrblockapi import Block import logger """ This program is free software: you can redistribute it and/or modify diff --git a/src/onionrcommands/motdcreator.py b/src/onionrcommands/motdcreator.py index 85e69e8c..47cb1e07 100644 --- a/src/onionrcommands/motdcreator.py +++ b/src/onionrcommands/motdcreator.py @@ -3,7 +3,7 @@ Command to make new network-wide MOTD message. Only network admin can do this The key is set in onionrvalues """ -import onionrblocks +import oldblocks """ 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 @@ -29,7 +29,7 @@ def motd_creator(): new = input() # nosec B323 if new != 'quit': motd += new - bl = onionrblocks.insert(motd, header='motd', sign=True) + bl = oldblocks.insert(motd, header='motd', sign=True) print(f"inserted in {bl}") diff --git a/src/onionrcommands/onionrstatistics.py b/src/onionrcommands/onionrstatistics.py index 78ad638d..09bd2480 100755 --- a/src/onionrcommands/onionrstatistics.py +++ b/src/onionrcommands/onionrstatistics.py @@ -4,7 +4,7 @@ This module defines commands to show stats/details about the local node """ import os import logger -from onionrblocks import onionrblacklist +from oldblocks import onionrblacklist from onionrutils import mnemonickeys from utils import sizeutils, gethostname, getconsolewidth, identifyhome from coredb import blockmetadb, keydb diff --git a/src/onionrpeers/peercleanup.py b/src/onionrpeers/peercleanup.py index 6173a041..8c61e732 100644 --- a/src/onionrpeers/peercleanup.py +++ b/src/onionrpeers/peercleanup.py @@ -21,7 +21,7 @@ import sqlite3 import logger from onionrutils import epoch from . import scoresortedpeerlist, peerprofiles -from onionrblocks import onionrblacklist +from oldblocks import onionrblacklist import config from coredb import keydb def peer_cleanup(): @@ -30,7 +30,7 @@ def peer_cleanup(): blacklist = onionrblacklist.OnionrBlackList() adders = scoresortedpeerlist.get_score_sorted_peer_list() adders.reverse() - + if len(adders) > 1: min_score = int(config.get('peers.minimum_score', -100)) diff --git a/src/onionrpeers/peerprofiles.py b/src/onionrpeers/peerprofiles.py index 000e9c4d..d18f0776 100644 --- a/src/onionrpeers/peerprofiles.py +++ b/src/onionrpeers/peerprofiles.py @@ -20,7 +20,7 @@ from coredb import keydb from onionrutils import epoch from onionrutils import stringvalidators -from onionrblocks import onionrblacklist +from oldblocks import onionrblacklist import onionrexceptions UPDATE_DELAY = 300 @@ -42,7 +42,7 @@ class PeerProfiles: self.getConnectTime() self.last_updated = {'connect_time': UPDATE_DELAY, 'score': UPDATE_DELAY} # Last time a given value was updated - + if not address in keydb.listkeys.list_adders() and not onionrblacklist.OnionrBlackList().inBlacklist(address): keydb.addkeys.add_address(address) @@ -53,7 +53,7 @@ class PeerProfiles: except (TypeError, ValueError) as e: self.success = 0 self.score = self.success - + def getConnectTime(self): """set the connectTime variable for when we last connected to them, using the db value""" try: @@ -62,12 +62,12 @@ class PeerProfiles: pass else: return self.connectTime - + def update_connect_time(self): if epoch.get_epoch() - self.last_updated['connect_time'] >= UPDATE_DELAY: self.last_updated['connect_time'] = epoch.get_epoch() keydb.transportinfo.set_address_info(self.address, 'lastConnect', epoch.get_epoch()) - + def saveScore(self): '''Save the node's score to the database''' if epoch.get_epoch() - self.last_updated['score'] >= UPDATE_DELAY: diff --git a/src/onionrproofs/__init__.py b/src/onionrproofs/__init__.py index e0f4a956..b02be8c5 100755 --- a/src/onionrproofs/__init__.py +++ b/src/onionrproofs/__init__.py @@ -7,7 +7,7 @@ import nacl.encoding, nacl.hash, nacl.utils import config import logger -from onionrblocks import onionrblockapi +from oldblocks import onionrblockapi from onionrutils import bytesconverter from onionrcrypto import hashers diff --git a/src/onionrstorage/removeblock.py b/src/onionrstorage/removeblock.py index 6b9452ea..32dc5d5a 100644 --- a/src/onionrstorage/removeblock.py +++ b/src/onionrstorage/removeblock.py @@ -9,7 +9,7 @@ import onionrexceptions import onionrstorage from onionrutils import stringvalidators from coredb import dbfiles -from onionrblocks import storagecounter +from oldblocks import storagecounter from etc.onionrvalues import DATABASE_LOCK_TIMEOUT """ This program is free software: you can redistribute it and/or modify diff --git a/src/onionrstorage/setdata.py b/src/onionrstorage/setdata.py index 456276f5..c471ad7e 100644 --- a/src/onionrstorage/setdata.py +++ b/src/onionrstorage/setdata.py @@ -9,7 +9,7 @@ import onionrstorage import onionrexceptions import onionrcrypto as crypto import filepaths -from onionrblocks import storagecounter, blockmetadata +from oldblocks import storagecounter, blockmetadata from coredb import dbfiles from onionrutils import bytesconverter from etc.onionrvalues import DATABASE_LOCK_TIMEOUT diff --git a/src/onionrutils/importnewblocks.py b/src/onionrutils/importnewblocks.py index 11ae89c5..e45e3528 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 onionrblocks import blockmetadata +from oldblocks import blockmetadata from coredb import blockmetadb import filepaths import onionrcrypto as crypto diff --git a/src/runtests/housekeeping.py b/src/runtests/housekeeping.py index ccc46b9f..94b9076c 100644 --- a/src/runtests/housekeeping.py +++ b/src/runtests/housekeeping.py @@ -2,7 +2,7 @@ import os from gevent import sleep -from onionrblocks import insert +from oldblocks import insert import logger from coredb.blockmetadb import get_block_list from onionrutils import epoch diff --git a/src/runtests/inserttest.py b/src/runtests/inserttest.py index ea43fd44..c800cc30 100644 --- a/src/runtests/inserttest.py +++ b/src/runtests/inserttest.py @@ -1,7 +1,7 @@ import os import time -import onionrblocks +import oldblocks import logger import coredb from communicator import peeraction @@ -11,7 +11,7 @@ def _check_remote_node(testmanager): def insert_bin_test(testmanager): data = os.urandom(32) - b_hash = onionrblocks.insert(data) + b_hash = oldblocks.insert(data) time.sleep(0.3) if b_hash not in testmanager._too_many.get_by_string("PublicAPI").hideBlocks: raise ValueError("Block not hidden") diff --git a/src/runtests/lanservertest.py b/src/runtests/lanservertest.py index 42f71861..66fdd305 100644 --- a/src/runtests/lanservertest.py +++ b/src/runtests/lanservertest.py @@ -2,7 +2,7 @@ import requests from lan.getip import best_ip -from onionrblocks import insert, onionrblockapi +from oldblocks import insert, onionrblockapi from gevent import sleep from coredb import blockmetadb from onionrutils.epoch import get_epoch diff --git a/src/runtests/sneakernettest.py b/src/runtests/sneakernettest.py index ac48ad30..4af036fa 100644 --- a/src/runtests/sneakernettest.py +++ b/src/runtests/sneakernettest.py @@ -1,7 +1,7 @@ import os from shutil import move -from onionrblocks import insert +from oldblocks import insert from onionrstorage import deleteBlock from onionrcommands.exportblocks import export_block from filepaths import export_location, block_data_location, data_nonce_file diff --git a/src/runtests/stresstest.py b/src/runtests/stresstest.py index 35a9967c..92ef1dff 100644 --- a/src/runtests/stresstest.py +++ b/src/runtests/stresstest.py @@ -1,6 +1,6 @@ import os -import onionrblocks +import oldblocks import logger import coredb from onionrutils import epoch @@ -10,7 +10,7 @@ def stress_test_block_insert(testmanager): start = epoch.get_epoch() count = 100 max_insert_speed = 120 - for x in range(count): onionrblocks.insert(os.urandom(32)) + for x in range(count): oldblocks.insert(os.urandom(32)) speed = epoch.get_epoch() - start if speed < max_insert_speed: raise ValueError(f'{count} blocks inserted too fast, {max_insert_speed}, got {speed}') diff --git a/src/safedb/__init__.py b/src/safedb/__init__.py index ed23e126..f1cea2f0 100644 --- a/src/safedb/__init__.py +++ b/src/safedb/__init__.py @@ -22,6 +22,10 @@ along with this program. If not, see . """ +class DBProtectionOpeningModeError(Exception): + pass + + class SafeDB: """Wrapper around dbm to optionally encrypt db values.""" @@ -31,7 +35,8 @@ class SafeDB: return unprotect_string(self.db_conn[key]) def put( - self, key: [str, bytes, bytearray], value: [bytes, bytearray]): + self, + key: Union[str, bytes, bytearray], value: Union[bytes, bytearray]): if self.protected: self.db_conn[key] = protect_string(value) else: @@ -47,10 +52,10 @@ class SafeDB: try: existing_protected_mode = self.db_conn['enc'] if protected and existing_protected_mode != b'1': - raise ValueError( + raise DBProtectionOpeningModeError( "Cannot open unencrypted database with protected=True") elif not protected and existing_protected_mode != b'0': - raise ValueError( + raise DBProtectionOpeningModeError( "Cannot open encrypted database in protected=False") except KeyError: if protected: diff --git a/src/sneakernet/__init__.py b/src/sneakernet/__init__.py index 6b4002a8..8f6c7787 100644 --- a/src/sneakernet/__init__.py +++ b/src/sneakernet/__init__.py @@ -10,7 +10,7 @@ from watchdog.events import FileSystemEventHandler import config from filepaths import block_data_location from etc.onionrvalues import BLOCK_EXPORT_FILE_EXT -from onionrblocks.blockimporter import import_block_from_data +from oldblocks.blockimporter import import_block_from_data import onionrexceptions """ This program is free software: you can redistribute it and/or modify diff --git a/src/utils/networkmerger.py b/src/utils/networkmerger.py index 8e7293a9..0e80ee04 100755 --- a/src/utils/networkmerger.py +++ b/src/utils/networkmerger.py @@ -20,7 +20,7 @@ import logger from coredb import keydb import config -from onionrblocks import onionrblacklist +from oldblocks import onionrblacklist from utils import gettransports def mergeAdders(newAdderList): ''' diff --git a/static-data/default-plugins/circles/main.py b/static-data/default-plugins/circles/main.py index 51e7815a..7515173f 100755 --- a/static-data/default-plugins/circles/main.py +++ b/static-data/default-plugins/circles/main.py @@ -11,9 +11,9 @@ from coredb import blockmetadb import threading import time import locale -from onionrblocks.onionrblockapi import Block +from oldblocks.onionrblockapi import Block import logger -import onionrblocks +import oldblocks from onionrutils import escapeansi, epoch, bytesconverter locale.setlocale(locale.LC_ALL, '') @@ -79,7 +79,7 @@ class OnionrFlow: expireTime = epoch.get_epoch() + EXPIRE_TIME if len(message) > 0: logger.info('Inserting message as block...', terminal=True) - onionrblocks.insert(message, header='brd', + oldblocks.insert(message, header='brd', expire=expireTime, meta = { 'ch': self.channel}) @@ -132,7 +132,7 @@ def on_circlesend_cmd(api, data=None): except IndexError: logger.error(err_msg, terminal=True) - bl = onionrblocks.insert(sys.argv[3], header='brd', + bl = oldblocks.insert(sys.argv[3], header='brd', expire=(EXPIRE_TIME + epoch.get_epoch()), meta={'ch': sys.argv[2]}) print(bl) diff --git a/static-data/default-plugins/pms/loadinbox.py b/static-data/default-plugins/pms/loadinbox.py index 6a215f71..4b31c1b6 100755 --- a/static-data/default-plugins/pms/loadinbox.py +++ b/static-data/default-plugins/pms/loadinbox.py @@ -2,7 +2,7 @@ Load the user's inbox and return it as a list """ -from onionrblocks import onionrblockapi +from oldblocks import onionrblockapi from coredb import blockmetadb from utils import reconstructhash, identifyhome import deadsimplekv as simplekv diff --git a/static-data/www/onboarding/onboarding.js b/static-data/www/onboarding/onboarding.js index f431d13a..b4375fcc 100644 --- a/static-data/www/onboarding/onboarding.js +++ b/static-data/www/onboarding/onboarding.js @@ -56,6 +56,7 @@ document.getElementById('onboardingForm').onsubmit = function(e){ submitInfo.mail = getCheckValue('useMail') submitInfo.circles = getCheckValue('useCircles') submitInfo.useDark = getCheckValue('useDarkTheme') + submitInfo.optimize = getCheckValue('optimize') if (submitInfo.donate){ openDonateModal(submitInfo) diff --git a/tests/test_blocklist_class.py b/tests/test_blocklist_class.py index 5f591b77..52c00950 100644 --- a/tests/test_blocklist_class.py +++ b/tests/test_blocklist_class.py @@ -19,7 +19,7 @@ import config config.set("general.minimum_block_pow", 2) config.set('general.minimum_send_pow', 2) config.save() -from onionrblocks import BlockList, insert +from oldblocks import BlockList, insert class TestBlockList(unittest.TestCase): diff --git a/tests/test_blocks.py b/tests/test_blocks.py index c8a4d7aa..3e0e925b 100644 --- a/tests/test_blocks.py +++ b/tests/test_blocks.py @@ -14,7 +14,7 @@ createdirs.create_dirs() import onionrstorage from onionrutils import bytesconverter import onionrcrypto -from onionrblocks import onionrblockapi +from oldblocks import onionrblockapi from onionrsetup import setup_config, setup_default_plugins @@ -25,20 +25,20 @@ import config config.set("general.minimum_block_pow", 2) config.set('general.minimum_send_pow', 2) config.save() -import onionrblocks +import oldblocks class OnionrBlockTests(unittest.TestCase): def test_plaintext_insert(self): message = 'hello world' - bl = onionrblocks.insert(message) + bl = oldblocks.insert(message) self.assertTrue(bl.startswith('0')) self.assertIn(bytesconverter.str_to_bytes(message), onionrstorage.getData(bl)) def test_encrypted_insert(self): message = 'hello world2' - bl = onionrblocks.insert(message, asymPeer=onionrcrypto.pub_key) + bl = oldblocks.insert(message, asymPeer=onionrcrypto.pub_key) self.assertIn(bytesconverter.str_to_bytes(message), onionrblockapi.Block(bl, decrypt=True).bcontent) unittest.main() diff --git a/tests/test_default_config_json.py b/tests/test_default_config_json.py index 76ec3e65..e2c8f9a2 100644 --- a/tests/test_default_config_json.py +++ b/tests/test_default_config_json.py @@ -10,7 +10,7 @@ createdirs.create_dirs() from onionrcrypto import getourkeypair getourkeypair.get_keypair() from utils import readstatic -import onionrblocks +import oldblocks class OnionrConfig(unittest.TestCase): def test_default_file(self): json.loads(readstatic.read_static('default_config.json')) diff --git a/tests/test_safedb.py b/tests/test_safedb.py index b54b867a..1e709bdf 100644 --- a/tests/test_safedb.py +++ b/tests/test_safedb.py @@ -31,7 +31,7 @@ class TestSafeDB(unittest.TestCase): with dbm.open(db_path) as db: self.assertEqual(db['enc'], b'0') - def test_db_create_proteced(self): + def test_db_create_protected(self): _remove_db() db = safedb.SafeDB(db_path, protected=True) db.close() @@ -46,7 +46,7 @@ class TestSafeDB(unittest.TestCase): db.close() self.assertRaises(ValueError, safedb.SafeDB, db_path, protected=False) - def test_db_open_unproteced(self): + def test_db_open_unprotected(self): _remove_db() with dbm.open(db_path, 'c') as db: db['enc'] = b'0' @@ -54,6 +54,14 @@ class TestSafeDB(unittest.TestCase): db.close() self.assertRaises(ValueError, safedb.SafeDB, db_path, protected=True) + def test_db_put_unprotected(self): + _remove_db() + db = safedb.SafeDB(db_path, protected=False) + db.put("test", b"Test") + db.close() + with dbm.open(db_path, 'c') as db: + self.assertEqual(db['test', b"Test"]) + unittest.main() diff --git a/tests/test_storagecounter.py b/tests/test_storagecounter.py index 4b720018..e37389f1 100644 --- a/tests/test_storagecounter.py +++ b/tests/test_storagecounter.py @@ -25,9 +25,9 @@ import config config.set("general.minimum_block_pow", 2) config.set('general.minimum_send_pow', 2) config.save() -import onionrblocks +import oldblocks -from onionrblocks import storagecounter +from oldblocks import storagecounter import onionrstorage def _test_setup(): @@ -47,13 +47,13 @@ class TestStorageCounter(unittest.TestCase): def test_insert_too_much(self): _test_setup() config.set('allocations.disk', 1000) - self.assertRaises(onionrexceptions.DiskAllocationReached, onionrblocks.insert, "test") + self.assertRaises(onionrexceptions.DiskAllocationReached, oldblocks.insert, "test") def test_count(self): _test_setup() counter = storagecounter.StorageCounter() start_value = counter.amount - b_hash = onionrblocks.insert("test") + b_hash = oldblocks.insert("test") sleep(0.1) self.assertGreater(counter.amount, start_value) onionrstorage.removeblock.remove_block(b_hash) diff --git a/tests/test_timeinsert.py b/tests/test_timeinsert.py index a3adef75..9eab20ec 100644 --- a/tests/test_timeinsert.py +++ b/tests/test_timeinsert.py @@ -10,8 +10,8 @@ from utils import createdirs createdirs.create_dirs() from onionrcrypto import getourkeypair getourkeypair.get_keypair() -from onionrblocks import time_insert -from onionrblocks import onionrblockapi +from oldblocks import time_insert +from oldblocks import onionrblockapi from onionrsetup import setup_config, setup_default_plugins setup_config()