progress in removing core
parent
dbbefafd19
commit
08d3e3a231
|
@ -15,3 +15,5 @@ tor_hs_address_file = home + 'hs/hostname'
|
|||
run_check_file = home + '.runcheck'
|
||||
|
||||
data_nonce_file = home + 'block-nonces.dat'
|
||||
|
||||
keys_file = home + 'keys.txt'
|
|
@ -19,13 +19,11 @@
|
|||
'''
|
||||
import json, threading
|
||||
from flask import Blueprint, Response, request
|
||||
import core
|
||||
|
||||
import onionrblocks
|
||||
ib = Blueprint('insertblock', __name__)
|
||||
|
||||
@ib.route('/insertblock', methods=['POST'])
|
||||
def client_api_insert_block():
|
||||
c = core.Core()
|
||||
encrypt = False
|
||||
bData = request.get_json(force=True)
|
||||
message = bData['message']
|
||||
|
@ -59,5 +57,5 @@ def client_api_insert_block():
|
|||
meta = json.loads(bData['meta'])
|
||||
except KeyError:
|
||||
pass
|
||||
threading.Thread(target=c.insertBlock, args=(message,), kwargs={'header': bType, 'encryptType': encryptType, 'sign':sign, 'asymPeer': to, 'meta': meta}).start()
|
||||
threading.Thread(target=onionrblocks.insert.insert_block, args=(message,), kwargs={'header': bType, 'encryptType': encryptType, 'sign':sign, 'asymPeer': to, 'meta': meta}).start()
|
||||
return Response('success')
|
|
@ -32,7 +32,7 @@ def handle_announce(clientAPI, request):
|
|||
powHash = ''
|
||||
randomData = ''
|
||||
newNode = ''
|
||||
ourAdder = clientAPI._core.hsAddress.encode()
|
||||
ourAdder = clientAPI.hsAddress.encode()
|
||||
try:
|
||||
newNode = request.form['node'].encode()
|
||||
except KeyError:
|
||||
|
@ -45,17 +45,17 @@ def handle_announce(clientAPI, request):
|
|||
except KeyError:
|
||||
logger.warn('No random data specified for upload')
|
||||
else:
|
||||
nodes = newNode + clientAPI._core.hsAddress.encode()
|
||||
nodes = clientAPI._core._crypto.blake2bHash(nodes)
|
||||
powHash = clientAPI._core._crypto.blake2bHash(randomData + nodes)
|
||||
nodes = newNode + clientAPI.hsAddress.encode()
|
||||
nodes = clientAPI.crypto.blake2bHash(nodes)
|
||||
powHash = clientAPI.crypto.blake2bHash(randomData + nodes)
|
||||
try:
|
||||
powHash = powHash.decode()
|
||||
except AttributeError:
|
||||
pass
|
||||
if powHash.startswith('0' * onionrvalues.OnionrValues().announce_pow):
|
||||
newNode = bytesconverter.bytes_to_str(newNode)
|
||||
if stringvalidators.validate_transport(newNode) and not newNode in clientAPI._core.onionrInst.communicatorInst.newPeers:
|
||||
clientAPI._core.onionrInst.communicatorInst.newPeers.append(newNode)
|
||||
if stringvalidators.validate_transport(newNode) and not newNode in clientAPI.onionrInst.communicatorInst.newPeers:
|
||||
clientAPI.onionrInst.communicatorInst.newPeers.append(newNode)
|
||||
resp = 'Success'
|
||||
else:
|
||||
logger.warn(newNode.decode() + ' failed to meet POW: ' + powHash)
|
||||
|
|
|
@ -19,10 +19,11 @@
|
|||
'''
|
||||
from flask import Response, Blueprint, request, send_from_directory, abort
|
||||
from . import getblocks, upload, announce
|
||||
from coredb import keydb
|
||||
class PublicEndpoints:
|
||||
def __init__(self, public_api):
|
||||
client_API = public_api.clientAPI
|
||||
config = client_API._core.config
|
||||
config = client_API.config
|
||||
|
||||
public_endpoints_bp = Blueprint('publicendpoints', __name__)
|
||||
self.public_endpoints_bp = public_endpoints_bp
|
||||
|
@ -61,7 +62,7 @@ class PublicEndpoints:
|
|||
|
||||
@public_endpoints_bp.route('/pex')
|
||||
def peer_exchange():
|
||||
response = ','.join(client_API._core.listAdders(recent=3600))
|
||||
response = ','.join(keydb.listkeys.list_adders(recent=3600))
|
||||
if len(response) == 0:
|
||||
response = ''
|
||||
return Response(response)
|
||||
|
|
|
@ -26,7 +26,7 @@ def get_public_block_list(clientAPI, publicAPI, request):
|
|||
# Provide a list of our blocks, with a date offset
|
||||
dateAdjust = request.args.get('date')
|
||||
bList = blockmetadb.get_block_list(dateRec=dateAdjust)
|
||||
if clientAPI._core.config.get('general.hide_created_blocks', True):
|
||||
if clientAPI.config.get('general.hide_created_blocks', True):
|
||||
for b in publicAPI.hideBlocks:
|
||||
if b in bList:
|
||||
# Don't share blocks we created if they haven't been *uploaded* yet, makes it harder to find who created a block
|
||||
|
@ -37,7 +37,7 @@ def get_block_data(clientAPI, publicAPI, data):
|
|||
'''data is the block hash in hex'''
|
||||
resp = ''
|
||||
if stringvalidators.validate_hash(data):
|
||||
if not clientAPI._core.config.get('general.hide_created_blocks', True) or data not in publicAPI.hideBlocks:
|
||||
if not clientAPI.config.get('general.hide_created_blocks', True) or data not in publicAPI.hideBlocks:
|
||||
if data in blockmetadb.get_block_list():
|
||||
block = clientAPI.getBlockData(data, raw=True)
|
||||
try:
|
||||
|
|
|
@ -30,7 +30,7 @@ def accept_upload(clientAPI, request):
|
|||
else:
|
||||
if sys.getsizeof(data) < 100000000:
|
||||
try:
|
||||
if blockimporter.importBlockFromData(data, clientAPI._core):
|
||||
if blockimporter.importBlockFromData(data):
|
||||
resp = 'success'
|
||||
else:
|
||||
logger.warn('Error encountered importing uploaded block')
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
'''
|
||||
import base64
|
||||
from flask import Blueprint, Response, request, abort
|
||||
import core, onionrblockapi, onionrexceptions
|
||||
import onionrblockapi, onionrexceptions
|
||||
from onionrutils import stringvalidators
|
||||
|
||||
site_api = Blueprint('siteapi', __name__)
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
'''
|
||||
import core
|
||||
from flask import Blueprint, Response, request, abort
|
||||
from . import profiles
|
||||
|
||||
|
|
|
@ -114,7 +114,6 @@ def get_commands(onionr_inst):
|
|||
'import-blocks': importnewblocks.import_new_blocks,
|
||||
'importblocks': importnewblocks.import_new_blocks,
|
||||
|
||||
'introduce': onionr_inst.onionrCore.introduceNode,
|
||||
'pex': dopex.do_PEX,
|
||||
|
||||
'getpassword': onionr_inst.printWebPassword,
|
||||
|
@ -158,7 +157,6 @@ cmd_help = {
|
|||
'listconn': 'list connected peers',
|
||||
'pex': 'exchange addresses with peers (done automatically)',
|
||||
'blacklist-block': 'deletes a block by hash and permanently removes it from your node',
|
||||
'introduce': 'Introduce your node to the public Onionr network',
|
||||
'friend': '[add|remove] [public key/id]',
|
||||
'add-id': 'Generate a new ID (key pair)',
|
||||
'change-id': 'Change active ID',
|
||||
|
|
|
@ -20,16 +20,17 @@
|
|||
import sys
|
||||
import logger
|
||||
from onionrutils import stringvalidators
|
||||
from onionrstorage import removeblock
|
||||
def ban_block(o_inst):
|
||||
try:
|
||||
ban = sys.argv[2]
|
||||
except IndexError:
|
||||
ban = logger.readline('Enter a block hash:')
|
||||
if stringvalidators.validate_hash(ban):
|
||||
if not o_inst.onionrCore._blacklist.inBlacklist(ban):
|
||||
if not o_inst.blacklist.inBlacklist(ban):
|
||||
try:
|
||||
o_inst.onionrCore._blacklist.addToDB(ban)
|
||||
o_inst.onionrCore.removeBlock(ban)
|
||||
o_inst.blacklist.addToDB(ban)
|
||||
removeblock.remove_block(ban)
|
||||
except Exception as error:
|
||||
logger.error('Could not blacklist block', error=error, terminal=True)
|
||||
else:
|
||||
|
|
|
@ -24,10 +24,11 @@ import onionr, apiservers, logger, communicator
|
|||
import onionrevents as events
|
||||
from netcontroller import NetController
|
||||
from onionrutils import localcommand
|
||||
import filepaths
|
||||
from coredb import daemonqueue
|
||||
|
||||
def _proper_shutdown(o_inst):
|
||||
localcommand.local_command(o_inst.onionrCore, 'shutdown')
|
||||
localcommand.local_command('shutdown')
|
||||
sys.exit(1)
|
||||
|
||||
def daemon(o_inst):
|
||||
|
@ -36,9 +37,9 @@ def daemon(o_inst):
|
|||
'''
|
||||
|
||||
# remove runcheck if it exists
|
||||
if os.path.isfile('%s/.runcheck' % (o_inst.onionrCore.dataDir,)):
|
||||
if os.path.isfile(filepaths.run_check_file):
|
||||
logger.debug('Runcheck file found on daemon start, deleting in advance.')
|
||||
os.remove('%s/.runcheck' % (o_inst.onionrCore.dataDir,))
|
||||
os.remove(filepaths.run_check_file)
|
||||
|
||||
Thread(target=apiservers.ClientAPI, args=(o_inst, o_inst.debug, onionr.API_VERSION), daemon=True).start()
|
||||
Thread(target=apiservers.PublicAPI, args=[o_inst.getClientApi()], daemon=True).start()
|
||||
|
@ -46,7 +47,7 @@ def daemon(o_inst):
|
|||
apiHost = ''
|
||||
while apiHost == '':
|
||||
try:
|
||||
with open(o_inst.onionrCore.publicApiHostFile, 'r') as hostFile:
|
||||
with open(filepaths.public_API_host_file, 'r') as hostFile:
|
||||
apiHost = hostFile.read()
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
|
@ -55,30 +56,30 @@ def daemon(o_inst):
|
|||
|
||||
logger.raw('', terminal=True)
|
||||
# print nice header thing :)
|
||||
if o_inst.onionrCore.config.get('general.display_header', True):
|
||||
if o_inst.config.get('general.display_header', True):
|
||||
o_inst.header()
|
||||
o_inst.version(verbosity = 5, function = logger.info)
|
||||
logger.debug('Python version %s' % platform.python_version())
|
||||
|
||||
if o_inst._developmentMode:
|
||||
logger.warn('Development mode enabled', timestamp = False, terminal=True)
|
||||
net = NetController(o_inst.onionrCore.config.get('client.public.port', 59497), apiServerIP=apiHost)
|
||||
net = NetController(o_inst.config.get('client.public.port', 59497), apiServerIP=apiHost)
|
||||
logger.info('Tor is starting...', terminal=True)
|
||||
if not net.startTor():
|
||||
localcommand.local_command(o_inst.onionrCore, 'shutdown')
|
||||
localcommand.local_command('shutdown')
|
||||
sys.exit(1)
|
||||
if len(net.myID) > 0 and o_inst.onionrCore.config.get('general.security_level', 1) == 0:
|
||||
if len(net.myID) > 0 and o_inst.config.get('general.security_level', 1) == 0:
|
||||
logger.debug('Started .onion service: %s' % (logger.colors.underline + net.myID))
|
||||
else:
|
||||
logger.debug('.onion service disabled')
|
||||
logger.info('Using public key: %s' % (logger.colors.underline + o_inst.onionrCore._crypto.pubKey[:52]), terminal=True)
|
||||
logger.info('Using public key: %s' % (logger.colors.underline + o_inst._crypto.pubKey[:52]), terminal=True)
|
||||
|
||||
try:
|
||||
time.sleep(1)
|
||||
except KeyboardInterrupt:
|
||||
_proper_shutdown(o_inst)
|
||||
|
||||
o_inst.onionrCore.torPort = net.socksPort
|
||||
o_inst.torPort = net.socksPort
|
||||
communicatorThread = Thread(target=communicator.startCommunicator, args=(o_inst, str(net.socksPort)), daemon=True)
|
||||
communicatorThread.start()
|
||||
|
||||
|
@ -105,7 +106,7 @@ def daemon(o_inst):
|
|||
|
||||
signal.signal(signal.SIGINT, _ignore_sigint)
|
||||
daemonqueue.daemon_queue_add('shutdown')
|
||||
localcommand.local_command(o_inst.onionrCore, 'shutdown')
|
||||
localcommand.local_command('shutdown')
|
||||
|
||||
net.killTor()
|
||||
time.sleep(5) # Time to allow threads to finish, if not any "daemon" threads will be slaughtered http://docs.python.org/library/threading.html#threading.Thread.daemon
|
||||
|
@ -123,7 +124,7 @@ def kill_daemon(o_inst):
|
|||
logger.warn('Stopping the running daemon...', timestamp = False, terminal=True)
|
||||
try:
|
||||
events.event('daemon_stop', onionr = o_inst)
|
||||
net = NetController(o_inst.onionrCore.config.get('client.port', 59496))
|
||||
net = NetController(o_inst.config.get('client.port', 59496))
|
||||
try:
|
||||
daemonqueue.daemon_queue_qdd('shutdown')
|
||||
except sqlite3.OperationalError:
|
||||
|
|
|
@ -22,6 +22,7 @@ import base64, sys, os
|
|||
import logger
|
||||
from onionrblockapi import Block
|
||||
from onionrutils import stringvalidators
|
||||
from onionrblocks import insert
|
||||
def add_file(o_inst, singleBlock=False, blockType='bin'):
|
||||
'''
|
||||
Adds a file to the onionr network
|
||||
|
@ -37,7 +38,7 @@ def add_file(o_inst, singleBlock=False, blockType='bin'):
|
|||
logger.info('Adding file... this might take a long time.', terminal=True)
|
||||
try:
|
||||
with open(filename, 'rb') as singleFile:
|
||||
blockhash = o_inst.onionrCore.insertBlock(base64.b64encode(singleFile.read()), header=blockType)
|
||||
blockhash = insert.insert_block(base64.b64encode(singleFile.read()), header=blockType)
|
||||
if len(blockhash) > 0:
|
||||
logger.info('File %s saved in block %s' % (filename, blockhash), terminal=True)
|
||||
except:
|
||||
|
@ -66,5 +67,5 @@ def getFile(o_inst):
|
|||
return
|
||||
|
||||
with open(fileName, 'wb') as myFile:
|
||||
myFile.write(base64.b64decode(Block(bHash, core=o_inst.onionrCore).bcontent))
|
||||
myFile.write(base64.b64decode(Block(bHash).bcontent))
|
||||
return
|
|
@ -19,18 +19,19 @@
|
|||
'''
|
||||
import sys
|
||||
import logger
|
||||
from coredb import keydb
|
||||
def add_peer(o_inst):
|
||||
try:
|
||||
newPeer = sys.argv[2]
|
||||
except IndexError:
|
||||
pass
|
||||
else:
|
||||
if newPeer in o_inst.onionrCore.listPeers():
|
||||
if newPeer in keydb.listkeys.list_peers():
|
||||
logger.info('We already have that key', terminal=True)
|
||||
return
|
||||
logger.info("Adding peer: " + logger.colors.underline + newPeer, terminal=True)
|
||||
try:
|
||||
if o_inst.onionrCore.addPeer(newPeer):
|
||||
if keydb.addkeys.add_peer(newPeer):
|
||||
logger.info('Successfully added key', terminal=True)
|
||||
except AssertionError:
|
||||
logger.error('Failed to add key', terminal=True)
|
||||
|
@ -43,7 +44,7 @@ def add_address(o_inst):
|
|||
pass
|
||||
else:
|
||||
logger.info("Adding address: " + logger.colors.underline + newAddress, terminal=True)
|
||||
if o_inst.onionrCore.addAddress(newAddress):
|
||||
if keydb.addkeys.add_address(newAddress):
|
||||
logger.info("Successfully added address.", terminal=True)
|
||||
else:
|
||||
logger.warn("Unable to add address.", terminal=True)
|
|
@ -23,7 +23,9 @@ from onionrblockapi import Block
|
|||
import onionr
|
||||
from onionrutils import checkcommunicator, mnemonickeys
|
||||
from utils import sizeutils
|
||||
from coredb import blockmetadb, daemonqueue
|
||||
from coredb import blockmetadb, daemonqueue, keydb
|
||||
import onionrcrypto
|
||||
crypto = onionrcrypto.OnionrCrypto()
|
||||
def show_stats(o_inst):
|
||||
try:
|
||||
# define stats messages here
|
||||
|
@ -31,7 +33,7 @@ def show_stats(o_inst):
|
|||
signedBlocks = len(Block.getBlocks(signed = True))
|
||||
messages = {
|
||||
# info about local client
|
||||
'Onionr Daemon Status' : ((logger.colors.fg.green + 'Online') if checkcommunicator.is_communicator_running(o_inst.onionrCore, timeout = 9) else logger.colors.fg.red + 'Offline'),
|
||||
'Onionr Daemon Status' : ((logger.colors.fg.green + 'Online') if checkcommunicator.is_communicator_running(timeout = 9) else logger.colors.fg.red + 'Offline'),
|
||||
|
||||
# file and folder size stats
|
||||
'div1' : True, # this creates a solid line across the screen, a div
|
||||
|
@ -41,8 +43,8 @@ def show_stats(o_inst):
|
|||
|
||||
# count stats
|
||||
'div2' : True,
|
||||
'Known Peers' : str(max(len(o_inst.onionrCore.listPeers()) - 1, 0)),
|
||||
'Enabled Plugins' : str(len(o_inst.onionrCore.config.get('plugins.enabled', list()))) + ' / ' + str(len(os.listdir(o_inst.dataDir + 'plugins/'))),
|
||||
'Known Peers' : str(max(len(keydb.listkeys.list_peers()) - 1, 0)),
|
||||
'Enabled Plugins' : str(len(o_inst.config.get('plugins.enabled', list()))) + ' / ' + str(len(os.listdir(o_inst.dataDir + 'plugins/'))),
|
||||
'Stored Blocks' : str(totalBlocks),
|
||||
'Percent Blocks Signed' : str(round(100 * signedBlocks / max(totalBlocks, 1), 2)) + '%'
|
||||
}
|
||||
|
@ -87,8 +89,8 @@ def show_details(o_inst):
|
|||
details = {
|
||||
'Node Address' : o_inst.get_hostname(),
|
||||
'Web Password' : o_inst.getWebPassword(),
|
||||
'Public Key' : o_inst.onionrCore._crypto.pubKey,
|
||||
'Human-readable Public Key' : mnemonickeys.get_human_readable_ID(o_inst.onionrCore)
|
||||
'Public Key' : crypto.pubKey,
|
||||
'Human-readable Public Key' : mnemonickeys.get_human_readable_ID()
|
||||
}
|
||||
|
||||
for detail in details:
|
||||
|
|
|
@ -22,10 +22,10 @@ import logger
|
|||
from onionrutils import getclientapiserver
|
||||
def open_home(o_inst):
|
||||
try:
|
||||
url = getclientapiserver.get_client_API_server(o_inst.onionrCore)
|
||||
url = getclientapiserver.get_client_API_server()
|
||||
except FileNotFoundError:
|
||||
logger.error('Onionr seems to not be running (could not get api host)', terminal=True)
|
||||
else:
|
||||
url = 'http://%s/#%s' % (url, o_inst.onionrCore.config.get('client.webpassword'))
|
||||
url = 'http://%s/#%s' % (url, o_inst.config.get('client.webpassword'))
|
||||
logger.info('If Onionr does not open automatically, use this URL: ' + url, terminal=True)
|
||||
webbrowser.open_new_tab(url)
|
|
@ -28,25 +28,25 @@ def add_ID(o_inst):
|
|||
sys.argv[2]
|
||||
assert sys.argv[2] == 'true'
|
||||
except (IndexError, AssertionError) as e:
|
||||
newID = o_inst.onionrCore._crypto.keyManager.addKey()[0]
|
||||
newID = o_inst.crypto.keyManager.addKey()[0]
|
||||
else:
|
||||
logger.warn('Deterministic keys require random and long passphrases.', terminal=True)
|
||||
logger.warn('If a good passphrase is not used, your key can be easily stolen.', terminal=True)
|
||||
logger.warn('You should use a series of hard to guess words, see this for reference: https://www.xkcd.com/936/', terminal=True)
|
||||
pass1 = getpass.getpass(prompt='Enter at least %s characters: ' % (o_inst.onionrCore._crypto.deterministicRequirement,))
|
||||
pass1 = getpass.getpass(prompt='Enter at least %s characters: ' % (o_inst.crypto.deterministicRequirement,))
|
||||
pass2 = getpass.getpass(prompt='Confirm entry: ')
|
||||
if o_inst.onionrCore._crypto.safeCompare(pass1, pass2):
|
||||
if o_inst.crypto.safeCompare(pass1, pass2):
|
||||
try:
|
||||
logger.info('Generating deterministic key. This can take a while.', terminal=True)
|
||||
newID, privKey = o_inst.onionrCore._crypto.generateDeterministic(pass1)
|
||||
newID, privKey = o_inst.crypto.generateDeterministic(pass1)
|
||||
except onionrexceptions.PasswordStrengthError:
|
||||
logger.error('Passphrase must use at least %s characters.' % (o_inst.onionrCore._crypto.deterministicRequirement,), terminal=True)
|
||||
logger.error('Passphrase must use at least %s characters.' % (o_inst.crypto.deterministicRequirement,), terminal=True)
|
||||
sys.exit(1)
|
||||
else:
|
||||
logger.error('Passwords do not match.', terminal=True)
|
||||
sys.exit(1)
|
||||
try:
|
||||
o_inst.onionrCore._crypto.keyManager.addKey(pubKey=newID,
|
||||
o_inst.crypto.keyManager.addKey(pubKey=newID,
|
||||
privKey=privKey)
|
||||
except ValueError:
|
||||
logger.error('That ID is already available, you can change to it with the change-id command.', terminal=True)
|
||||
|
@ -61,9 +61,9 @@ def change_ID(o_inst):
|
|||
logger.warn('Specify pubkey to use', terminal=True)
|
||||
else:
|
||||
if stringvalidators.validate_pub_key(key):
|
||||
if key in o_inst.onionrCore._crypto.keyManager.getPubkeyList():
|
||||
o_inst.onionrCore.config.set('general.public_key', key)
|
||||
o_inst.onionrCore.config.save()
|
||||
if key in o_inst.crypto.keyManager.getPubkeyList():
|
||||
o_inst.config.set('general.public_key', key)
|
||||
o_inst.config.save()
|
||||
logger.info('Set active key to: %s' % (key,), terminal=True)
|
||||
logger.info('Restart Onionr if it is running.', terminal=True)
|
||||
else:
|
||||
|
@ -82,22 +82,22 @@ def friend_command(o_inst):
|
|||
action = action.lower()
|
||||
if action == 'list':
|
||||
# List out peers marked as our friend
|
||||
for friend in contactmanager.ContactManager.list_friends(o_inst.onionrCore):
|
||||
for friend in contactmanager.ContactManager.list_friends(o_inst.):
|
||||
logger.info(friend.publicKey + ' - ' + friend.get_info('name'), terminal=True)
|
||||
elif action in ('add', 'remove'):
|
||||
try:
|
||||
friend = sys.argv[3]
|
||||
if not stringvalidators.validate_pub_key(friend):
|
||||
raise onionrexceptions.InvalidPubkey('Public key is invalid')
|
||||
if friend not in o_inst.onionrCore.listPeers():
|
||||
if friend not in o_inst..listPeers():
|
||||
raise onionrexceptions.KeyNotKnown
|
||||
friend = onionrusers.OnionrUser(o_inst.onionrCore, friend)
|
||||
friend = onionrusers.OnionrUser(o_inst., friend)
|
||||
except IndexError:
|
||||
logger.warn('Friend ID is required.', terminal=True)
|
||||
action = 'error' # set to 'error' so that the finally block does not process anything
|
||||
except onionrexceptions.KeyNotKnown:
|
||||
o_inst.onionrCore.addPeer(friend)
|
||||
friend = onionrusers.OnionrUser(o_inst.onionrCore, friend)
|
||||
o_inst..addPeer(friend)
|
||||
friend = onionrusers.OnionrUser(o_inst., friend)
|
||||
finally:
|
||||
if action == 'add':
|
||||
friend.setTrust(1)
|
||||
|
|
|
@ -18,14 +18,13 @@
|
|||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
'''
|
||||
import os, shutil
|
||||
import logger, core
|
||||
import logger
|
||||
from onionrutils import localcommand
|
||||
|
||||
def reset_tor():
|
||||
c = core.Core()
|
||||
tor_dir = c.dataDir + 'tordata'
|
||||
if os.path.exists(tor_dir):
|
||||
if localcommand.local_command(c, '/ping') == 'pong!':
|
||||
if localcommand.local_command('/ping') == 'pong!':
|
||||
logger.warn('Cannot delete Tor data while Onionr is running', terminal=True)
|
||||
else:
|
||||
shutil.rmtree(tor_dir)
|
|
@ -22,14 +22,14 @@ import nacl.signing, nacl.encoding, nacl.public, nacl.hash, nacl.pwhash, nacl.ut
|
|||
import unpaddedbase32
|
||||
import logger, onionrproofs
|
||||
from onionrutils import stringvalidators, epoch, bytesconverter
|
||||
import onionrexceptions, keymanager, core, onionrutils
|
||||
import filepaths
|
||||
import onionrexceptions, keymanager, onionrutils
|
||||
import config
|
||||
config.reload()
|
||||
|
||||
class OnionrCrypto:
|
||||
def __init__(self, coreInstance):
|
||||
self._core = coreInstance
|
||||
self._keyFile = self._core.dataDir + 'keys.txt'
|
||||
def __init__(self):
|
||||
self._keyFile = filepaths.keys_file
|
||||
self.pubKey = None
|
||||
self.privKey = None
|
||||
self.secrets = secrets
|
||||
|
@ -39,8 +39,8 @@ class OnionrCrypto:
|
|||
|
||||
# Load our own pub/priv Ed25519 keys, gen & save them if they don't exist
|
||||
if os.path.exists(self._keyFile):
|
||||
if len(self._core.config.get('general.public_key', '')) > 0:
|
||||
self.pubKey = self._core.config.get('general.public_key')
|
||||
if len(config.get('general.public_key', '')) > 0:
|
||||
self.pubKey = config.get('general.public_key')
|
||||
else:
|
||||
self.pubKey = self.keyManager.getPubkeyList()[0]
|
||||
self.privKey = self.keyManager.getPrivkey(self.pubKey)
|
||||
|
@ -249,10 +249,10 @@ class OnionrCrypto:
|
|||
except AttributeError:
|
||||
pass
|
||||
|
||||
difficulty = onionrproofs.getDifficultyForNewBlock(blockContent, ourBlock=False, coreInst=self._core)
|
||||
difficulty = onionrproofs.getDifficultyForNewBlock(blockContent, ourBlock=False)
|
||||
|
||||
if difficulty < int(self._core.config.get('general.minimum_block_pow')):
|
||||
difficulty = int(self._core.config.get('general.minimum_block_pow'))
|
||||
if difficulty < int(config.get('general.minimum_block_pow')):
|
||||
difficulty = int(config.get('general.minimum_block_pow'))
|
||||
mainHash = '0000000000000000000000000000000000000000000000000000000000000000'#nacl.hash.blake2b(nacl.utils.random()).decode()
|
||||
puzzle = mainHash[:difficulty]
|
||||
|
||||
|
|
Loading…
Reference in New Issue