From 68a557daf51be79ba6e406cc626e08f0a6f53451 Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Fri, 25 Sep 2020 05:17:08 +0000 Subject: [PATCH] added block type filter for public get blocks endpoint --- src/httpapi/miscpublicapi/getblocks.py | 25 ++++++++++++-------- src/onionrproofs/subprocesspow.py | 2 -- static-data/default-plugins/pms/loadinbox.py | 24 +++++++++---------- static-data/default_config.json | 4 ++-- 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/src/httpapi/miscpublicapi/getblocks.py b/src/httpapi/miscpublicapi/getblocks.py index 10c2786a..d966fcc0 100755 --- a/src/httpapi/miscpublicapi/getblocks.py +++ b/src/httpapi/miscpublicapi/getblocks.py @@ -9,6 +9,7 @@ from onionrutils import bytesconverter, stringvalidators from coredb import blockmetadb from utils import reconstructhash from onionrblocks import BlockList +from onionrblocks.onionrblockapi import Block from .. import apiutils """ This program is free software: you can redistribute it and/or modify @@ -26,28 +27,32 @@ from .. import apiutils """ -def get_public_block_list(publicAPI, request): +def get_public_block_list(public_API, request): # Provide a list of our blocks, with a date offset - dateAdjust = request.args.get('date') - bList = blockmetadb.get_block_list(date_rec=dateAdjust) + date_adjust = request.args.get('date') + type_filter = request.args.get('type') + b_list = blockmetadb.get_block_list(date_rec=date_adjust) share_list = '' if config.get('general.hide_created_blocks', True): - for b in publicAPI.hideBlocks: - if b in bList: + for b in public_API.hideBlocks: + if b in b_list: # Don't share blocks we created if they haven't been *uploaded* yet, makes it harder to find who created a block - bList.remove(b) - for b in bList: + b_list.remove(b) + for b in b_list: + if type_filter: + if Block(b, decrypt=False).getType() != type_filter: + continue share_list += '%s\n' % (reconstructhash.deconstruct_hash(b),) return Response(share_list) -def get_block_data(publicAPI, data): +def get_block_data(public_API, data): """data is the block hash in hex""" resp = '' if stringvalidators.validate_hash(data): if not config.get('general.hide_created_blocks', True) \ - or data not in publicAPI.hideBlocks: - if data in publicAPI._too_many.get(BlockList).get(): + or data not in public_API.hideBlocks: + if data in public_API._too_many.get(BlockList).get(): block = apiutils.GetBlockData().get_block_data( data, raw=True, decrypt=False) try: diff --git a/src/onionrproofs/subprocesspow.py b/src/onionrproofs/subprocesspow.py index 8726bf1d..901f0ef4 100755 --- a/src/onionrproofs/subprocesspow.py +++ b/src/onionrproofs/subprocesspow.py @@ -116,7 +116,6 @@ class SubprocessPOW: metadata['n'] = secrets.randbits(16) puzzle = self.puzzle difficulty = self.difficulty - start = time.time() while True: # Break if shutdown received @@ -136,6 +135,5 @@ class SubprocessPOW: token = bytesconverter.bytes_to_str(token) if puzzle == token[0:difficulty]: pipe.send(payload) - print(metadata['pow'], time.time() - start) break nonce += 1 diff --git a/static-data/default-plugins/pms/loadinbox.py b/static-data/default-plugins/pms/loadinbox.py index 5f21a083..cda1e9e6 100755 --- a/static-data/default-plugins/pms/loadinbox.py +++ b/static-data/default-plugins/pms/loadinbox.py @@ -1,9 +1,12 @@ -''' - Onionr - Private P2P Communication +"""Onionr - Private P2P Communication. - Load the user's inbox and return it as a list -''' -''' +Load the user's inbox and return it as a list +""" +from onionrblocks import onionrblockapi +from coredb import blockmetadb +from utils import reconstructhash, identifyhome +import deadsimplekv as simplekv +""" 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,12 +19,9 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . -''' -from onionrblocks import onionrblockapi -from coredb import blockmetadb -import filepaths -from utils import reconstructhash, identifyhome -import deadsimplekv as simplekv +""" + + def load_inbox(): inbox_list = [] deleted = simplekv.DeadSimpleKV(identifyhome.identify_home() + '/mailcache.dat').get('deleted_mail') @@ -33,4 +33,4 @@ def load_inbox(): block.decrypt() if block.decrypted and reconstructhash.deconstruct_hash(blockHash) not in deleted: inbox_list.append(blockHash) - return inbox_list \ No newline at end of file + return inbox_list diff --git a/static-data/default_config.json b/static-data/default_config.json index c7e3b280..fc8c9879 100755 --- a/static-data/default_config.json +++ b/static-data/default_config.json @@ -14,8 +14,8 @@ "hide_created_blocks": true, "insert_deniable_blocks": true, "max_block_age": 2678400, - "minimum_block_pow": 6, - "minimum_send_pow": 6, + "minimum_block_pow": 4, + "minimum_send_pow": 4, "public_key": "", "random_bind_ip": true, "security_level": 0,