add check and daemon api endpoint to fix #41
parent
d1f9911fd4
commit
00baf30141
|
@ -37,6 +37,9 @@ Please note: endpoints that simply provide static web app files are not document
|
||||||
* /getblockheader/hash
|
* /getblockheader/hash
|
||||||
- Methods: GET
|
- Methods: GET
|
||||||
- Returns the header (metadata section) of a block.
|
- Returns the header (metadata section) of a block.
|
||||||
|
* /gethidden/
|
||||||
|
- Methods: GET
|
||||||
|
- Returns line separated list of hidden blocks
|
||||||
* /hitcount
|
* /hitcount
|
||||||
- Methods: GET
|
- Methods: GET
|
||||||
- Return the amount of requests the public api server has received this session
|
- Return the amount of requests the public api server has received this session
|
||||||
|
|
|
@ -103,6 +103,10 @@ class PrivateEndpoints:
|
||||||
subprocess.Popen([SCRIPT_NAME, 'restart'])
|
subprocess.Popen([SCRIPT_NAME, 'restart'])
|
||||||
return Response("bye")
|
return Response("bye")
|
||||||
|
|
||||||
|
@private_endpoints_bp.route('/gethidden')
|
||||||
|
def get_hidden_blocks():
|
||||||
|
return Response('\n'.join(client_api.publicAPI.hideBlocks))
|
||||||
|
|
||||||
@private_endpoints_bp.route('/getstats')
|
@private_endpoints_bp.route('/getstats')
|
||||||
def getStats():
|
def getStats():
|
||||||
# returns node stats
|
# returns node stats
|
||||||
|
|
|
@ -34,11 +34,25 @@ from onionrproofs import subprocesspow
|
||||||
import logger
|
import logger
|
||||||
from onionrtypes import UserIDSecretKey
|
from onionrtypes import UserIDSecretKey
|
||||||
|
|
||||||
def insert_block(data: Union[str, bytes], header: str ='txt',
|
|
||||||
sign: bool =False, encryptType:str ='', symKey:str ='',
|
def _check_upload_queue():
|
||||||
asymPeer:str ='', meta:dict = {},
|
"""Returns the current upload queue len
|
||||||
expire:Union[int, None] =None, disableForward:bool =False,
|
raises OverflowError if max
|
||||||
signing_key:UserIDSecretKey ='')->Union[str,bool]:
|
"""
|
||||||
|
max_upload_queue: int = 5000
|
||||||
|
queue = localcommand.local_command('/gethidden', maxWait=10)
|
||||||
|
up_queue = len(queue.splitlines())
|
||||||
|
|
||||||
|
if up_queue >= max_upload_queue:
|
||||||
|
raise OverflowError
|
||||||
|
return up_queue
|
||||||
|
|
||||||
|
|
||||||
|
def insert_block(data: Union[str, bytes], header: str = 'txt',
|
||||||
|
sign: bool = False, encryptType: str = '', symKey: str = '',
|
||||||
|
asymPeer: str = '', meta: dict = {},
|
||||||
|
expire: Union[int, None] = None, disableForward: bool = False,
|
||||||
|
signing_key: UserIDSecretKey = '') -> Union[str, bool]:
|
||||||
"""
|
"""
|
||||||
Inserts a block into the network
|
Inserts a block into the network
|
||||||
encryptType must be specified to encrypt a block
|
encryptType must be specified to encrypt a block
|
||||||
|
@ -46,6 +60,9 @@ def insert_block(data: Union[str, bytes], header: str ='txt',
|
||||||
our_private_key = crypto.priv_key
|
our_private_key = crypto.priv_key
|
||||||
our_pub_key = crypto.pub_key
|
our_pub_key = crypto.pub_key
|
||||||
|
|
||||||
|
is_offline = True
|
||||||
|
if not _check_upload_queue() is False: is_offline = False
|
||||||
|
|
||||||
if signing_key != '':
|
if signing_key != '':
|
||||||
# if it was specified to use an alternative private key
|
# if it was specified to use an alternative private key
|
||||||
our_private_key = signing_key
|
our_private_key = signing_key
|
||||||
|
@ -76,9 +93,6 @@ def insert_block(data: Union[str, bytes], header: str ='txt',
|
||||||
with open(filepaths.data_nonce_file, 'a') as nonceFile:
|
with open(filepaths.data_nonce_file, 'a') as nonceFile:
|
||||||
nonceFile.write(dataNonce + '\n')
|
nonceFile.write(dataNonce + '\n')
|
||||||
|
|
||||||
#if type(data) is bytes:
|
|
||||||
# data = data.decode()
|
|
||||||
#data = str(data)
|
|
||||||
plaintext = data
|
plaintext = data
|
||||||
plaintextMeta = {}
|
plaintextMeta = {}
|
||||||
plaintextPeer = asymPeer
|
plaintextPeer = asymPeer
|
||||||
|
@ -173,7 +187,7 @@ def insert_block(data: Union[str, bytes], header: str ='txt',
|
||||||
retData = False
|
retData = False
|
||||||
else:
|
else:
|
||||||
# Tell the api server through localCommand to wait for the daemon to upload this block to make statistical analysis more difficult
|
# Tell the api server through localCommand to wait for the daemon to upload this block to make statistical analysis more difficult
|
||||||
if localcommand.local_command('/ping', maxWait=10) == 'pong!':
|
if not is_offline or localcommand.local_command('/ping', maxWait=10) == 'pong!':
|
||||||
if config.get('general.security_level', 1) == 0:
|
if config.get('general.security_level', 1) == 0:
|
||||||
localcommand.local_command('/waitforshare/' + retData, post=True, maxWait=5)
|
localcommand.local_command('/waitforshare/' + retData, post=True, maxWait=5)
|
||||||
coredb.daemonqueue.daemon_queue_add('uploadBlock', retData)
|
coredb.daemonqueue.daemon_queue_add('uploadBlock', retData)
|
||||||
|
@ -194,5 +208,5 @@ def insert_block(data: Union[str, bytes], header: str ='txt',
|
||||||
events.event('insertdeniable', {'content': plaintext, 'meta': plaintextMeta, 'hash': retData, 'peer': bytesconverter.bytes_to_str(asymPeer)}, threaded = True)
|
events.event('insertdeniable', {'content': plaintext, 'meta': plaintextMeta, 'hash': retData, 'peer': bytesconverter.bytes_to_str(asymPeer)}, threaded = True)
|
||||||
else:
|
else:
|
||||||
events.event('insertblock', {'content': plaintext, 'meta': plaintextMeta, 'hash': retData, 'peer': bytesconverter.bytes_to_str(asymPeer)}, threaded = True)
|
events.event('insertblock', {'content': plaintext, 'meta': plaintextMeta, 'hash': retData, 'peer': bytesconverter.bytes_to_str(asymPeer)}, threaded = True)
|
||||||
coredb.daemonqueue.daemon_queue_add('remove_from_insert_list', data=dataNonce)
|
coredb.daemonqueue.daemon_queue_add('remove_from_insert_list', data= dataNonce)
|
||||||
return retData
|
return retData
|
||||||
|
|
Loading…
Reference in New Issue