From c144bc40b3c145572ba356fa8b554421abd1bee6 Mon Sep 17 00:00:00 2001 From: Arinerron Date: Tue, 1 May 2018 23:22:40 -0700 Subject: [PATCH] Add status check function --- onionr/communicator.py | 4 +++ onionr/default-plugins/pluginmanager/main.py | 6 ++--- onionr/onionrutils.py | 27 +++++++++++++++++--- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/onionr/communicator.py b/onionr/communicator.py index e4150b29..2bd49826 100755 --- a/onionr/communicator.py +++ b/onionr/communicator.py @@ -111,6 +111,10 @@ class OnionrCommunicate: if announceAttemptCount >= announceAttempts: logger.warn('Unable to announce to ' + command[1]) break + elif command[0] == 'runCheck': + logger.info('Status check; looks good.') + open('data/.runcheck', 'w+').close() + break apiRunningCheckCount += 1 # check if local API is up if apiRunningCheckCount > apiRunningCheckRate: diff --git a/onionr/default-plugins/pluginmanager/main.py b/onionr/default-plugins/pluginmanager/main.py index 9bf7229a..cfcf1911 100644 --- a/onionr/default-plugins/pluginmanager/main.py +++ b/onionr/default-plugins/pluginmanager/main.py @@ -99,17 +99,17 @@ def commandInstallPlugin(): return True elif valid_hash and real_block: blockhash = str(pkobh) - logger.debug('Using block ' + blockhash + '...') + logger.debug('Using block %s...' % blockhash) elif valid_key and not real_key: logger.error('Public key not found. Try adding the node by address manually, if possible.') logger.debug('Is valid key, but the key is not a known one.') elif valid_key and real_key: publickey = str(pkobh) - logger.debug('Using public key ' + publickey + '...') + logger.debug('Using public key %s...' % publickey) saveKey(pluginname, pkobh) else: - logger.error('Unknown data \"' + str(pkobh) + '\"; must be public key or block hash.') + logger.error('Unknown data "%s"; must be public key or block hash.' % str(pkobh)) return else: help() diff --git a/onionr/onionrutils.py b/onionr/onionrutils.py index 0c770fcf..3c4d0497 100644 --- a/onionr/onionrutils.py +++ b/onionr/onionrutils.py @@ -59,14 +59,14 @@ class OnionrUtils: sign = self._core._crypto.edSign(message, self._core._crypto.privKey, encodeResult=True) #encrypted = self._core._crypto.pubKeyEncrypt(message, pubkey, anonymous=True, encodedData=True).decode() - + payload['sig'] = sign payload['msg'] = message payload = json.dumps(payload) message = payload encrypted = self._core._crypto.pubKeyEncrypt(message, pubkey, anonymous=True, encodedData=True).decode() - + block = self._core.insertBlock(encrypted, header='pm', sign=False) if block == '': logger.error('Could not send PM') @@ -383,7 +383,7 @@ class OnionrUtils: except Exception as error: logger.error('Failed to open block ' + str(i) + '.', error=error) return - + def getPeerByHashId(self, hash): ''' Return the pubkey of the user if known from the hash @@ -398,4 +398,23 @@ class OnionrUtils: for row in c.execute('SELECT ID FROM peers where hashID=?', command): if row[0] != '': retData = row[0] - return retData \ No newline at end of file + return retData + + def isCommunicatorRunning(timeout = 5, interval = 0.1): + runcheck_file = 'data/.runcheck' + + if os.path.isfile(runcheck_file): + os.remove(runcheck_file) + logger.debug('%s file appears to have existed before the run check.' % runcheck_file, timestamp = False) + + self._core.daemonQueueAdd('runCheck') + starttime = time.time() + + while True: + time.sleep(interval) + if os.path.isfile(runcheck_file): + os.remove(runcheck_file) + + return True + elif starttime - time.time() >= timeout: + return False