fixed small cli logging bugs
parent
50e93f46e4
commit
4e00bdb348
|
@ -25,16 +25,10 @@ import deadsimplekv as simplekv
|
||||||
import onionrutils, onionrcrypto, onionrproofs, onionrevents as events, onionrexceptions
|
import onionrutils, onionrcrypto, onionrproofs, onionrevents as events, onionrexceptions
|
||||||
import onionrblacklist
|
import onionrblacklist
|
||||||
from onionrusers import onionrusers
|
from onionrusers import onionrusers
|
||||||
|
from onionrstorage import removeblock, setdata
|
||||||
import dbcreator, onionrstorage, serializeddata, subprocesspow
|
import dbcreator, onionrstorage, serializeddata, subprocesspow
|
||||||
from etc import onionrvalues, powchoice
|
from etc import onionrvalues, powchoice
|
||||||
|
|
||||||
if sys.version_info < (3, 6):
|
|
||||||
try:
|
|
||||||
import sha3
|
|
||||||
except ModuleNotFoundError:
|
|
||||||
logger.fatal('On Python 3 versions prior to 3.6.x, you need the sha3 module')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
class Core:
|
class Core:
|
||||||
def __init__(self, torPort=0):
|
def __init__(self, torPort=0):
|
||||||
'''
|
'''
|
||||||
|
@ -149,18 +143,7 @@ class Core:
|
||||||
|
|
||||||
**You may want blacklist.addToDB(blockHash)
|
**You may want blacklist.addToDB(blockHash)
|
||||||
'''
|
'''
|
||||||
|
removeblock.remove_block(self, block)
|
||||||
if self._utils.validateHash(block):
|
|
||||||
conn = sqlite3.connect(self.blockDB, timeout=30)
|
|
||||||
c = conn.cursor()
|
|
||||||
t = (block,)
|
|
||||||
c.execute('Delete from hashes where hash=?;', t)
|
|
||||||
conn.commit()
|
|
||||||
conn.close()
|
|
||||||
dataSize = sys.getsizeof(onionrstorage.getData(self, block))
|
|
||||||
self._utils.storageCounter.removeBytes(dataSize)
|
|
||||||
else:
|
|
||||||
raise onionrexceptions.InvalidHexHash
|
|
||||||
|
|
||||||
def createAddressDB(self):
|
def createAddressDB(self):
|
||||||
'''
|
'''
|
||||||
|
@ -186,57 +169,13 @@ class Core:
|
||||||
|
|
||||||
Should be in hex format!
|
Should be in hex format!
|
||||||
'''
|
'''
|
||||||
|
coredb.blockmetadb.add(self, newHash, selfInsert, dataSaved)
|
||||||
if not os.path.exists(self.blockDB):
|
|
||||||
raise Exception('Block db does not exist')
|
|
||||||
if self._utils.hasBlock(newHash):
|
|
||||||
return
|
|
||||||
conn = sqlite3.connect(self.blockDB, timeout=30)
|
|
||||||
c = conn.cursor()
|
|
||||||
currentTime = self._utils.getEpoch() + self._crypto.secrets.randbelow(301)
|
|
||||||
if selfInsert or dataSaved:
|
|
||||||
selfInsert = 1
|
|
||||||
else:
|
|
||||||
selfInsert = 0
|
|
||||||
data = (newHash, currentTime, '', selfInsert)
|
|
||||||
c.execute('INSERT INTO hashes (hash, dateReceived, dataType, dataSaved) VALUES(?, ?, ?, ?);', data)
|
|
||||||
conn.commit()
|
|
||||||
conn.close()
|
|
||||||
|
|
||||||
def setData(self, data):
|
def setData(self, data):
|
||||||
'''
|
'''
|
||||||
Set the data assciated with a hash
|
Set the data assciated with a hash
|
||||||
'''
|
'''
|
||||||
|
return onionrstorage.setdata.set_data(self, data)
|
||||||
data = data
|
|
||||||
dataSize = sys.getsizeof(data)
|
|
||||||
|
|
||||||
if not type(data) is bytes:
|
|
||||||
data = data.encode()
|
|
||||||
|
|
||||||
dataHash = self._crypto.sha3Hash(data)
|
|
||||||
|
|
||||||
if type(dataHash) is bytes:
|
|
||||||
dataHash = dataHash.decode()
|
|
||||||
blockFileName = self.blockDataLocation + dataHash + '.dat'
|
|
||||||
try:
|
|
||||||
onionrstorage.getData(self, dataHash)
|
|
||||||
except onionrexceptions.NoDataAvailable:
|
|
||||||
if self._utils.storageCounter.addBytes(dataSize) != False:
|
|
||||||
onionrstorage.store(self, data, blockHash=dataHash)
|
|
||||||
conn = sqlite3.connect(self.blockDB, timeout=30)
|
|
||||||
c = conn.cursor()
|
|
||||||
c.execute("UPDATE hashes SET dataSaved=1 WHERE hash = ?;", (dataHash,))
|
|
||||||
conn.commit()
|
|
||||||
conn.close()
|
|
||||||
with open(self.dataNonceFile, 'a') as nonceFile:
|
|
||||||
nonceFile.write(dataHash + '\n')
|
|
||||||
else:
|
|
||||||
raise onionrexceptions.DiskAllocationReached
|
|
||||||
else:
|
|
||||||
raise Exception("Data is already set for " + dataHash)
|
|
||||||
|
|
||||||
return dataHash
|
|
||||||
|
|
||||||
def getData(self, hash):
|
def getData(self, hash):
|
||||||
'''
|
'''
|
||||||
|
@ -513,6 +452,6 @@ class Core:
|
||||||
'''
|
'''
|
||||||
if self._utils.localCommand('/ping', maxWait=10) == 'pong!':
|
if self._utils.localCommand('/ping', maxWait=10) == 'pong!':
|
||||||
self.daemonQueueAdd('announceNode')
|
self.daemonQueueAdd('announceNode')
|
||||||
logger.info('Introduction command will be processed.')
|
logger.info('Introduction command will be processed.', terminal=True)
|
||||||
else:
|
else:
|
||||||
logger.warn('No running node detected. Cannot introduce.')
|
logger.warn('No running node detected. Cannot introduce.', terminal=True)
|
|
@ -0,0 +1,23 @@
|
||||||
|
import os, sqlite3
|
||||||
|
def add_to_block_DB(core_inst, newHash, selfInsert=False, dataSaved=False):
|
||||||
|
'''
|
||||||
|
Add a hash value to the block db
|
||||||
|
|
||||||
|
Should be in hex format!
|
||||||
|
'''
|
||||||
|
|
||||||
|
if not os.path.exists(core_inst.blockDB):
|
||||||
|
raise Exception('Block db does not exist')
|
||||||
|
if core_inst._utils.hasBlock(newHash):
|
||||||
|
return
|
||||||
|
conn = sqlite3.connect(core_inst.blockDB, timeout=30)
|
||||||
|
c = conn.cursor()
|
||||||
|
currentTime = core_inst._utils.getEpoch() + core_inst._crypto.secrets.randbelow(301)
|
||||||
|
if selfInsert or dataSaved:
|
||||||
|
selfInsert = 1
|
||||||
|
else:
|
||||||
|
selfInsert = 0
|
||||||
|
data = (newHash, currentTime, '', selfInsert)
|
||||||
|
c.execute('INSERT INTO hashes (hash, dateReceived, dataType, dataSaved) VALUES(?, ?, ?, ?);', data)
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
|
@ -0,0 +1,20 @@
|
||||||
|
import sys, sqlite3
|
||||||
|
import onionrexceptions, onionrstorage
|
||||||
|
def remove_block(core_inst, block):
|
||||||
|
'''
|
||||||
|
remove a block from this node (does not automatically blacklist)
|
||||||
|
|
||||||
|
**You may want blacklist.addToDB(blockHash)
|
||||||
|
'''
|
||||||
|
|
||||||
|
if core_inst._utils.validateHash(block):
|
||||||
|
conn = sqlite3.connect(core_inst.blockDB, timeout=30)
|
||||||
|
c = conn.cursor()
|
||||||
|
t = (block,)
|
||||||
|
c.execute('Delete from hashes where hash=?;', t)
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
dataSize = sys.getsizeof(onionrstorage.getData(core_inst, block))
|
||||||
|
core_inst._utils.storageCounter.removeBytes(dataSize)
|
||||||
|
else:
|
||||||
|
raise onionrexceptions.InvalidHexHash
|
|
@ -0,0 +1,36 @@
|
||||||
|
import sys, sqlite3
|
||||||
|
import onionrstorage, onionrexceptions
|
||||||
|
def set_data(core_inst, data):
|
||||||
|
'''
|
||||||
|
Set the data assciated with a hash
|
||||||
|
'''
|
||||||
|
|
||||||
|
data = data
|
||||||
|
dataSize = sys.getsizeof(data)
|
||||||
|
|
||||||
|
if not type(data) is bytes:
|
||||||
|
data = data.encode()
|
||||||
|
|
||||||
|
dataHash = core_inst._crypto.sha3Hash(data)
|
||||||
|
|
||||||
|
if type(dataHash) is bytes:
|
||||||
|
dataHash = dataHash.decode()
|
||||||
|
blockFileName = core_inst.blockDataLocation + dataHash + '.dat'
|
||||||
|
try:
|
||||||
|
onionrstorage.getData(core_inst, dataHash)
|
||||||
|
except onionrexceptions.NoDataAvailable:
|
||||||
|
if core_inst._utils.storageCounter.addBytes(dataSize) != False:
|
||||||
|
onionrstorage.store(core_inst, data, blockHash=dataHash)
|
||||||
|
conn = sqlite3.connect(core_inst.blockDB, timeout=30)
|
||||||
|
c = conn.cursor()
|
||||||
|
c.execute("UPDATE hashes SET dataSaved=1 WHERE hash = ?;", (dataHash,))
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
with open(core_inst.dataNonceFile, 'a') as nonceFile:
|
||||||
|
nonceFile.write(dataHash + '\n')
|
||||||
|
else:
|
||||||
|
raise onionrexceptions.DiskAllocationReached
|
||||||
|
else:
|
||||||
|
raise Exception("Data is already set for " + dataHash)
|
||||||
|
|
||||||
|
return dataHash
|
Loading…
Reference in New Issue