From a6116435267b966223a244daae99616570876d6f Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Tue, 3 Apr 2018 16:47:48 -0500 Subject: [PATCH] pex/kex hopefully now working --- onionr/communicator.py | 10 +++++++--- onionr/core.py | 4 ++-- onionr/onionrutils.py | 17 +++++++++++++---- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/onionr/communicator.py b/onionr/communicator.py index 08c07c7f..c42be173 100755 --- a/onionr/communicator.py +++ b/onionr/communicator.py @@ -53,7 +53,7 @@ class OnionrCommunicate: highFailureRate = 10 heartBeatTimer = 0 heartBeatRate = 5 - pexTimer = 1000 # How often we should check for new peers + pexTimer = 25 # How often we should check for new peers pexCount = 0 logger.debug('Communicator debugging enabled.') torID = open('data/hs/hostname').read() @@ -79,7 +79,7 @@ class OnionrCommunicate: self.peerData[i]['failCount'] -= 1 if pexTimer == pexCount: self.getNewPeers() - pexCount = 0 + pexCount = 0 # TODO: do not reset timer if low peer count if heartBeatRate == heartBeatTimer: logger.debug('Communicator heartbeat') heartBeatTimer = 0 @@ -97,7 +97,7 @@ class OnionrCommunicate: def getNewPeers(self): ''' - Get new peers + Get new peers and keys ''' peersCheck = 5 # Amount of peers to ask for new peers + keys peersChecked = 0 @@ -118,6 +118,8 @@ class OnionrCommunicate: logger.info('Using ' + peerList[i] + ' to find new peers') try: newAdders = self.performGet('pex', peerList[i], skipHighFailureAddress=True) + logger.debug('Attempting to merge address: ') + logger.debug(newAdders) self._utils.mergeAdders(newAdders) except requests.exceptions.ConnectionError: logger.info(peerList[i] + ' connection failed') @@ -126,6 +128,8 @@ class OnionrCommunicate: try: logger.info('Using ' + peerList[i] + ' to find new keys') newKeys = self.performGet('kex', peerList[i], skipHighFailureAddress=True) + logger.debug('Attempting to merge pubkey: ') + logger.debug(newKeys) # TODO: Require keys to come with POW token (very large amount of POW) self._utils.mergeKeys(newKeys) except requests.exceptions.ConnectionError: diff --git a/onionr/core.py b/onionr/core.py index 58b7aec8..a920a03d 100644 --- a/onionr/core.py +++ b/onionr/core.py @@ -359,8 +359,8 @@ class Core: payload = 'SELECT * FROM peers;' peerList = [] for i in c.execute(payload): - print('lol - ' + i[2]) - peerList.append(i[2]) + if type(i[2] != None): + peerList.append(i[2]) peerList.append(self._crypto.pubKey) conn.close() return peerList diff --git a/onionr/onionrutils.py b/onionr/onionrutils.py index aa60a739..2289672a 100644 --- a/onionr/onionrutils.py +++ b/onionr/onionrutils.py @@ -58,8 +58,8 @@ class OnionrUtils: '''Merge ed25519 key list to our database''' retVal = False if newKeyList != False: - for key in newKeyList: - if not key in self._core.listPeers(randomOrder=False): + for key in newKeyList.split(','): + if not key in self._core.listPeers(randomOrder=False) and type(key) != None and key != self._core._crypto.pubKey: if self._core.addPeer(key): retVal = True return retVal @@ -69,13 +69,22 @@ class OnionrUtils: '''Merge peer adders list to our database''' retVal = False if newAdderList != False: - for adder in newAdderList: - if not adder in self._core.listAdders(randomOrder=False): + for adder in newAdderList.split(','): + if not adder in self._core.listAdders(randomOrder=False) and adder.strip() != self.getMyAddress(): if self._core.addAddress(adder): logger.info('added ' + adder + ' to db') + input() retVal = True + else: + logger.debug(adder + " is either our address or already in our DB") return retVal + def getMyAddress(self): + myAddressFile = open("data/hs/hostname", 'r') + myAddress = myAddressFile.read() + myAddressFile.close() + return myAddress.strip() + def localCommand(self, command): ''' Send a command to the local http API server, securely. Intended for local clients, DO NOT USE for remote peers.