From 656f48b35486ddf5298e26091bdc5bc4aad841d7 Mon Sep 17 00:00:00 2001
From: shortcutme <tamas@zeronet.io>
Date: Tue, 10 Jul 2018 03:37:38 +0200
Subject: [PATCH] Support open_browser disable even if it's started with
 start.py

---
 src/Config.py      | 11 +++++++++--
 src/Ui/UiServer.py | 17 ++++++++++-------
 src/main.py        | 15 +++++++++------
 3 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/src/Config.py b/src/Config.py
index bc5d82a1..32d48d65 100644
--- a/src/Config.py
+++ b/src/Config.py
@@ -385,10 +385,17 @@ class Config(object):
                 for key, val in config.items(section):
                     if section != "global":  # If not global prefix key with section
                         key = section + "_" + key
+
+                    to_end = key == "open_browser"  # Prefer config value over argument
+                    argv_extend = ["--%s" % key]
                     if val:
                         for line in val.strip().split("\n"):  # Allow multi-line values
-                            argv.insert(1, line)
-                    argv.insert(1, "--%s" % key)
+                            argv_extend.append(line)
+
+                    if to_end:
+                        argv = argv[:-2] + argv_extend + argv[-2:]
+                    else:
+                        argv = argv[:1] + argv_extend + argv[1:]
         return argv
 
     # Expose arguments as class attributes
diff --git a/src/Ui/UiServer.py b/src/Ui/UiServer.py
index ecd53a0a..9026c4e8 100644
--- a/src/Ui/UiServer.py
+++ b/src/Ui/UiServer.py
@@ -137,15 +137,18 @@ class UiServer:
         self.log.info("Web interface: http://%s:%s/" % (config.ui_ip, config.ui_port))
         self.log.info("--------------------------------------")
 
-        if config.open_browser:
+        if config.open_browser and config.open_browser != "False":
             logging.info("Opening browser: %s...", config.open_browser)
             import webbrowser
-            if config.open_browser == "default_browser":
-                browser = webbrowser.get()
-            else:
-                browser = webbrowser.get(config.open_browser)
-            url = "http://%s:%s/%s" % (config.ui_ip if config.ui_ip != "*" else "127.0.0.1", config.ui_port, config.homepage)
-            gevent.spawn_later(0.3, browser.open, url, new=2)
+            try:
+                if config.open_browser == "default_browser":
+                    browser = webbrowser.get()
+                else:
+                    browser = webbrowser.get(config.open_browser)
+                url = "http://%s:%s/%s" % (config.ui_ip if config.ui_ip != "*" else "127.0.0.1", config.ui_port, config.homepage)
+                gevent.spawn_later(0.3, browser.open, url, new=2)
+            except Exception as err:
+                print "Error starting browser: %s" % err
 
         self.server = WSGIServer((self.ip, self.port), handler, handler_class=UiWSGIHandler, log=self.log)
         self.server.sockets = {}
diff --git a/src/main.py b/src/main.py
index 1c5f432f..469e27fc 100644
--- a/src/main.py
+++ b/src/main.py
@@ -59,14 +59,17 @@ if config.action == "main":
         lock.write("%s" % os.getpid())
     except IOError as err:
         print "Can't open lock file, your ZeroNet client is probably already running, exiting... (%s)" % err
-        if config.open_browser:
+        if config.open_browser and config.open_browser != "False":
             print "Opening browser: %s...", config.open_browser
             import webbrowser
-            if config.open_browser == "default_browser":
-                browser = webbrowser.get()
-            else:
-                browser = webbrowser.get(config.open_browser)
-            browser.open("http://%s:%s/%s" % (config.ui_ip if config.ui_ip != "*" else "127.0.0.1", config.ui_port, config.homepage), new=2)
+            try:
+                if config.open_browser == "default_browser":
+                    browser = webbrowser.get()
+                else:
+                    browser = webbrowser.get(config.open_browser)
+                browser.open("http://%s:%s/%s" % (config.ui_ip if config.ui_ip != "*" else "127.0.0.1", config.ui_port, config.homepage), new=2)
+            except Exception as err:
+                print "Error starting browser: %s" % err
         sys.exit()
 
     if os.path.isfile("%s/debug.log" % config.log_dir):  # Simple logrotate