diff --git a/lbrynet/core/LBRYcrdWallet.py b/lbrynet/core/LBRYcrdWallet.py index c6cb8c4d9..895dbfa49 100644 --- a/lbrynet/core/LBRYcrdWallet.py +++ b/lbrynet/core/LBRYcrdWallet.py @@ -70,6 +70,8 @@ class LBRYWallet(object): self.max_expected_payment_time = datetime.timedelta(minutes=3) self.stopped = True + self.is_lagging = None + self.manage_running = False self._manage_count = 0 self._balance_refresh_time = 3 @@ -996,15 +998,17 @@ class LBRYumWallet(LBRYWallet): self._catch_up_check = None blockchain_caught_d.callback(True) elif remote_height != 0: + self.blocks_behind_alert = remote_height - local_height + if self.blocks_behind_alert > self.max_behind: + self.max_behind = self.blocks_behind_alert + self.catchup_progress = int(100 * (self.blocks_behind_alert / (5 + self.max_behind))) if self._caught_up_counter == 0: alert.info('Catching up to the blockchain...showing blocks left...') if self._caught_up_counter % 30 == 0: - self.blocks_behind_alert = remote_height - local_height - if self.blocks_behind_alert > self.max_behind: - self.max_behind = self.blocks_behind_alert - self.catchup_progress = int(100 * (self.blocks_behind_alert / (5 + self.max_behind))) alert.info('%d...', (remote_height - local_height)) - alert.info("Catching up: " + str(int(100 * (self.blocks_behind_alert / (5 + self.max_behind)))) + "%") + alert.info("Catching up: " + str(self.catchup_progress) + "%") + if self._caught_up_counter >= 600: + self.is_lagging = True self._caught_up_counter += 1 diff --git a/lbrynet/lbrynet_daemon/LBRYDaemon.py b/lbrynet/lbrynet_daemon/LBRYDaemon.py index 38f504800..e0b7c92bb 100644 --- a/lbrynet/lbrynet_daemon/LBRYDaemon.py +++ b/lbrynet/lbrynet_daemon/LBRYDaemon.py @@ -928,10 +928,12 @@ class LBRYDaemon(jsonrpc.JSONRPC): if status_code is 'loading_wallet', also contains key 'progress': blockchain catchup progress """ - r = {'code': self.startup_status[0], 'message': self.startup_status[1], 'progress': None} + r = {'code': self.startup_status[0], 'message': self.startup_status[1], 'progress': None, 'is_lagging': None} if self.startup_status[0] == 'loading_wallet': r['message'] = r['message'] % (str(self.session.wallet.blocks_behind_alert) + " blocks behind") r['progress'] = self.session.wallet.catchup_progress + r['is_lagging'] = self.session.wallet.is_lagging + log.info("[" + str(datetime.now()) + "] daemon status: " + str(r)) return self._render_response(r, OK_CODE) diff --git a/lbrynet/lbrynet_daemon/LBRYDaemonControl.py b/lbrynet/lbrynet_daemon/LBRYDaemonControl.py index e509c7c81..32fc8ec9c 100644 --- a/lbrynet/lbrynet_daemon/LBRYDaemonControl.py +++ b/lbrynet/lbrynet_daemon/LBRYDaemonControl.py @@ -6,6 +6,8 @@ import os import shutil import webbrowser import sys +import socket + from StringIO import StringIO from zipfile import ZipFile @@ -34,6 +36,16 @@ handler = logging.handlers.RotatingFileHandler(LOG_FILENAME, maxBytes=262144, ba log.addHandler(handler) logging.basicConfig(level=logging.INFO) +REMOTE_SERVER = "www.google.com" + +def test_internet_connection(): + try: + host = socket.gethostbyname(REMOTE_SERVER) + s = socket.create_connection((host, 80), 2) + return True + except: + return False + def stop(): def _disp_shutdown(): @@ -104,6 +116,10 @@ def start(): version_dir = os.path.join(data_dir, "ui_version_history") git_version = subprocess.check_output(GIT_CMD_STRING, shell=True) + if not git_version: + log.info("You should have been notified to install xcode command line tools, once it's installed you can start LBRY") + sys.exit(0) + ui_version_info = git_version if not os.path.isdir(data_dir): @@ -113,15 +129,11 @@ def start(): os.mkdir(version_dir) if not os.path.isfile(os.path.join(version_dir, git_version)): - try: - f = open(os.path.join(version_dir, git_version), "w") - version_message = "[" + str(datetime.now()) + "] Updating UI --> " + git_version - f.write(version_message) - f.close() - log.info(version_message) - except: - log.info("You should have been notified to install xcode command line tools, once it's installed you can start LBRY") - sys.exit(0) + f = open(os.path.join(version_dir, git_version), "w") + version_message = "[" + str(datetime.now()) + "] Updating UI --> " + git_version + f.write(version_message) + f.close() + log.info(version_message) if os.path.isdir(os.path.join(data_dir, "lbry-web-ui")): shutil.rmtree(os.path.join(data_dir, "lbry-web-ui")) @@ -149,9 +161,12 @@ def start(): reactor.listenTCP(API_PORT, server.Site(root), interface=API_INTERFACE) return daemon.setup() - d = getui(args.ui) - d.addCallback(lambda r: setupserver(r[0], r[1])) - d.addCallback(lambda r: setupapi(r[0], args.wallet, r[1])) - d.addCallback(lambda _: webbrowser.open(UI_ADDRESS)) - - reactor.run() \ No newline at end of file + if test_internet_connection(): + d = getui(args.ui) + d.addCallback(lambda r: setupserver(r[0], r[1])) + d.addCallback(lambda r: setupapi(r[0], args.wallet, r[1])) + d.addCallback(lambda _: webbrowser.open(UI_ADDRESS)) + reactor.run() + else: + log.info("Not connected to internet, unable to start") + return