+ blocks can now be blacklisted

* Peers sync a little better
This commit is contained in:
Kevin Froman 2018-08-11 00:23:59 -05:00
parent 12d39393b4
commit 5f21d15cdd
No known key found for this signature in database
GPG Key ID: 0D414D0FE405B63B
4 changed files with 18 additions and 10 deletions

View File

@ -173,7 +173,7 @@ class OnionrCommunicatorDaemon:
# if newline seperated string is valid hash # if newline seperated string is valid hash
if not i in existingBlocks: if not i in existingBlocks:
# if block does not exist on disk and is not already in block queue # if block does not exist on disk and is not already in block queue
if i not in self.blockQueue: if i not in self.blockQueue and not self._core._blacklist.inBlacklist(i):
self.blockQueue.append(i) self.blockQueue.append(i)
self.decrementThreadCount('lookupBlocks') self.decrementThreadCount('lookupBlocks')
return return
@ -289,6 +289,7 @@ class OnionrCommunicatorDaemon:
for i in self._core.bootstrapList: for i in self._core.bootstrapList:
if i not in peerList and i not in self.offlinePeers and i != self._core.hsAddress: if i not in peerList and i not in self.offlinePeers and i != self._core.hsAddress:
peerList.append(i) peerList.append(i)
self._core.addAddress(i)
def connectNewPeer(self, peer='', useBootstrap=False): def connectNewPeer(self, peer='', useBootstrap=False):
'''Adds a new random online peer to self.onlinePeers''' '''Adds a new random online peer to self.onlinePeers'''

View File

@ -172,7 +172,7 @@ class Core:
def removeBlock(self, block): def removeBlock(self, block):
''' '''
remove a block from this node remove a block from this node (does not automatically blacklist)
''' '''
if self._utils.validateHash(block): if self._utils.validateHash(block):
conn = sqlite3.connect(self.blockDB) conn = sqlite3.connect(self.blockDB)

View File

@ -232,6 +232,7 @@ class Onionr:
'listconn': 'list connected peers', 'listconn': 'list connected peers',
'kex': 'exchange keys with peers (done automatically)', 'kex': 'exchange keys with peers (done automatically)',
'pex': 'exchange addresses with peers (done automatically)', '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', 'introduce': 'Introduce your node to the public Onionr network',
} }
@ -264,15 +265,22 @@ class Onionr:
try: try:
ban = sys.argv[2] ban = sys.argv[2]
except IndexError: except IndexError:
while True: ban = logger.readline('Enter a block hash:')
ban = logger.readline('Enter a block hash:') if self.onionrUtils.validateHash(ban):
if self.onionrUtils.validateHash(ban): if not self.onionrCore._blacklist.inBlacklist(ban):
if not self.onionrCore._blacklist.inBlacklist(ban): try:
self.onionrCore._blacklist.addToDB(ban) self.onionrCore._blacklist.addToDB(ban)
self.onionrCore.removeBlock(ban)
except Exception as error:
logger.error('Could not blacklist block', error=error)
else:
logger.info('Block blacklisted')
else:
logger.warn('That block is already blacklisted')
else:
logger.error('Invalid block hash')
return return
def listConn(self): def listConn(self):
self.onionrCore.daemonQueueAdd('connectedPeers') self.onionrCore.daemonQueueAdd('connectedPeers')

View File

@ -25,7 +25,6 @@ class OnionrBlackList:
if not os.path.exists(self.blacklistDB): if not os.path.exists(self.blacklistDB):
self.generateDB() self.generateDB()
return return
def inBlacklist(self, data): def inBlacklist(self, data):