* work on peer profiling
* block exchange order * edited disclaimer html * began working on peerCleanup
This commit is contained in:
parent
c4f2327e49
commit
d22701199c
@ -317,9 +317,6 @@ class API:
|
|||||||
resp = Response(self._utils.getBlockDBHash())
|
resp = Response(self._utils.getBlockDBHash())
|
||||||
elif action == 'getBlockHashes':
|
elif action == 'getBlockHashes':
|
||||||
resp = Response('\n'.join(self._core.getBlockList()))
|
resp = Response('\n'.join(self._core.getBlockList()))
|
||||||
elif action == 'directMessage':
|
|
||||||
resp = Response(self._core.handle_direct_connection(data))
|
|
||||||
|
|
||||||
elif action == 'announce':
|
elif action == 'announce':
|
||||||
if data != '':
|
if data != '':
|
||||||
# TODO: require POW for this
|
# TODO: require POW for this
|
||||||
|
@ -85,9 +85,11 @@ class OnionrCommunicatorDaemon:
|
|||||||
OnionrCommunicatorTimers(self, self.clearOfflinePeer, 58)
|
OnionrCommunicatorTimers(self, self.clearOfflinePeer, 58)
|
||||||
OnionrCommunicatorTimers(self, self.lookupKeys, 60, requiresPeer=True)
|
OnionrCommunicatorTimers(self, self.lookupKeys, 60, requiresPeer=True)
|
||||||
OnionrCommunicatorTimers(self, self.lookupAdders, 60, requiresPeer=True)
|
OnionrCommunicatorTimers(self, self.lookupAdders, 60, requiresPeer=True)
|
||||||
|
cleanupTimer = OnionrCommunicatorTimers(self, onionrpeers.peerCleanup, 300)
|
||||||
|
|
||||||
# set loop to execute instantly to load up peer pool (replaced old pool init wait)
|
# set loop to execute instantly to load up peer pool (replaced old pool init wait)
|
||||||
peerPoolTimer.count = (peerPoolTimer.frequency - 1)
|
peerPoolTimer.count = (peerPoolTimer.frequency - 1)
|
||||||
|
cleanupTimer = (cleanupTimer.frequency - 200)
|
||||||
|
|
||||||
# Main daemon loop, mainly for calling timers, don't do any complex operations here to avoid locking
|
# Main daemon loop, mainly for calling timers, don't do any complex operations here to avoid locking
|
||||||
try:
|
try:
|
||||||
@ -149,7 +151,11 @@ class OnionrCommunicatorDaemon:
|
|||||||
triedPeers.append(peer)
|
triedPeers.append(peer)
|
||||||
if newDBHash != self._core.getAddressInfo(peer, 'DBHash'):
|
if newDBHash != self._core.getAddressInfo(peer, 'DBHash'):
|
||||||
self._core.setAddressInfo(peer, 'DBHash', newDBHash)
|
self._core.setAddressInfo(peer, 'DBHash', newDBHash)
|
||||||
newBlocks = self.peerAction(peer, 'getBlockHashes')
|
try:
|
||||||
|
newBlocks = self.peerAction(peer, 'getBlockHashes')
|
||||||
|
except Exception as error:
|
||||||
|
logger.warn("could not get new blocks with " + peer, error=error)
|
||||||
|
newBlocks = False
|
||||||
if newBlocks != False:
|
if newBlocks != False:
|
||||||
# if request was a success
|
# if request was a success
|
||||||
for i in newBlocks.split('\n'):
|
for i in newBlocks.split('\n'):
|
||||||
@ -248,7 +254,7 @@ class OnionrCommunicatorDaemon:
|
|||||||
'''Manages the self.onlinePeers attribute list, connects to more peers if we have none connected'''
|
'''Manages the self.onlinePeers attribute list, connects to more peers if we have none connected'''
|
||||||
|
|
||||||
logger.info('Refreshing peer pool.')
|
logger.info('Refreshing peer pool.')
|
||||||
maxPeers = 4
|
maxPeers = 6
|
||||||
needed = maxPeers - len(self.onlinePeers)
|
needed = maxPeers - len(self.onlinePeers)
|
||||||
|
|
||||||
for i in range(needed):
|
for i in range(needed):
|
||||||
@ -278,13 +284,13 @@ class OnionrCommunicatorDaemon:
|
|||||||
raise onionrexceptions.InvalidAddress('Will not attempt connection test to invalid address')
|
raise onionrexceptions.InvalidAddress('Will not attempt connection test to invalid address')
|
||||||
else:
|
else:
|
||||||
peerList = self._core.listAdders()
|
peerList = self._core.listAdders()
|
||||||
|
|
||||||
|
peerList = onionrpeers.getScoreSortedPeerList(self._core)
|
||||||
|
|
||||||
if len(peerList) == 0 or useBootstrap:
|
if len(peerList) == 0 or useBootstrap:
|
||||||
# Avoid duplicating bootstrap addresses in peerList
|
# Avoid duplicating bootstrap addresses in peerList
|
||||||
self.addBootstrapListToPeerList(peerList)
|
self.addBootstrapListToPeerList(peerList)
|
||||||
|
|
||||||
peerList = onionrpeers.getScoreSortedPeerList(self._core)
|
|
||||||
|
|
||||||
for address in peerList:
|
for address in peerList:
|
||||||
if len(address) == 0 or address in tried or address in self.onlinePeers:
|
if len(address) == 0 or address in tried or address in self.onlinePeers:
|
||||||
continue
|
continue
|
||||||
@ -331,12 +337,13 @@ class OnionrCommunicatorDaemon:
|
|||||||
# if request failed, (error), mark peer offline
|
# if request failed, (error), mark peer offline
|
||||||
if retData == False:
|
if retData == False:
|
||||||
try:
|
try:
|
||||||
self.getPeerProfileInstance(peer).addScore(-2)
|
self.getPeerProfileInstance(peer).addScore(-10)
|
||||||
self.onlinePeers.remove(peer)
|
self.onlinePeers.remove(peer)
|
||||||
self.getOnlinePeers() # Will only add a new peer to pool if needed
|
self.getOnlinePeers() # Will only add a new peer to pool if needed
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
|
self._core.setAddressInfo(peer, 'lastConnect', self._core._utils.getEpoch())
|
||||||
self.getPeerProfileInstance(peer).addScore(1)
|
self.getPeerProfileInstance(peer).addScore(1)
|
||||||
return retData
|
return retData
|
||||||
|
|
||||||
|
@ -590,7 +590,7 @@ class Core:
|
|||||||
if unsaved:
|
if unsaved:
|
||||||
execute = 'SELECT hash FROM hashes WHERE dataSaved != 1 ORDER BY RANDOM();'
|
execute = 'SELECT hash FROM hashes WHERE dataSaved != 1 ORDER BY RANDOM();'
|
||||||
else:
|
else:
|
||||||
execute = 'SELECT hash FROM hashes ORDER BY RANDOM();'
|
execute = 'SELECT hash FROM hashes ORDER BY dateReceived DESC;'
|
||||||
rows = list()
|
rows = list()
|
||||||
for row in c.execute(execute):
|
for row in c.execute(execute):
|
||||||
for i in row:
|
for i in row:
|
||||||
|
@ -69,4 +69,8 @@ def getScoreSortedPeerList(coreInst):
|
|||||||
|
|
||||||
# Sort peers by their score, greatest to least
|
# Sort peers by their score, greatest to least
|
||||||
peerList = sorted(peerScores, key=peerScores.get, reverse=True)
|
peerList = sorted(peerScores, key=peerScores.get, reverse=True)
|
||||||
return peerList
|
return peerList
|
||||||
|
|
||||||
|
def peerCleanup():
|
||||||
|
# TODO, remove peers that have been offline for too long
|
||||||
|
return
|
@ -1,5 +1,7 @@
|
|||||||
<h1>This is an Onionr Node</h1>
|
<h1>This is an Onionr Node</h1>
|
||||||
|
|
||||||
<p>The content on this server is not necessarily created or intentionally stored by the owner of the server.</p>
|
<p>The content on this server is not necessarily created by the server owner, and was not necessarily stored with the owner's knowledge.</p>
|
||||||
|
|
||||||
|
<p>Onionr is a decentralized, distributed data storage system, that anyone can insert data into.</p>
|
||||||
|
|
||||||
<p>To learn more about Onionr, see the website at <a href="https://onionr.voidnet.tech/">https://Onionr.VoidNet.tech/</a></p>
|
<p>To learn more about Onionr, see the website at <a href="https://onionr.voidnet.tech/">https://Onionr.VoidNet.tech/</a></p>
|
||||||
|
Loading…
Reference in New Issue
Block a user