From 6ab8b76859be36fb9c8ab201f827d37558794a94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sun, 18 Aug 2013 22:50:52 +0200 Subject: [PATCH] Allow more than one local network to be defined --- octoprint/server.py | 18 +++++++++++++----- octoprint/settings.py | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/octoprint/server.py b/octoprint/server.py index f72d3fc..001a0a3 100644 --- a/octoprint/server.py +++ b/octoprint/server.py @@ -858,12 +858,16 @@ def login(): return jsonify(user.asDict()) elif settings().getBoolean(["accessControl", "autologinLocal"]) \ and settings().get(["accessControl", "autologinAs"]) is not None \ - and settings().get(["accessControl", "localNetwork"]) is not None: + and settings().get(["accessControl", "localNetworks"]) is not None: + autologinAs = settings().get(["accessControl", "autologinAs"]) - localNetwork = settings().get(["accessControl", "localNetwork"]) + localNetworks = netaddr.IPSet([]) + for ip in settings().get(["accessControl", "localNetworks"]): + localNetworks.add(ip) + try: remoteAddr = util.getRemoteAddress(request) - if netaddr.IPAddress(remoteAddr) in netaddr.IPNetwork(localNetwork): + if netaddr.IPAddress(remoteAddr) in localNetworks: user = userManager.findUser(autologinAs) if user is not None: login_user(user) @@ -871,7 +875,7 @@ def login(): return jsonify(user.asDict()) except: logger = logging.getLogger(__name__) - logger.exception("Could not autologin user %s for network %s" % (autologinAs, localNetwork)) + logger.exception("Could not autologin user %s for networks %r" % (autologinAs, localNetworks)) return jsonify(SUCCESS) @app.route(BASEURL + "logout", methods=["POST"]) @@ -986,7 +990,11 @@ class Server(): connectionOptions = getConnectionOptions() if port in connectionOptions["ports"]: printer.connect(port, baudrate) - IOLoop.instance().start() + try: + IOLoop.instance().start() + except: + logger.fatal("Now that is embarrassing... Something really really went wrong here. Please report this including the stacktrace below in OctoPrint's bugtracker. Thanks!") + logger.exception("Stacktrace follows:") def _createSocketConnection(self, session, endpoint=None): global printer, gcodeManager, userManager, eventManager diff --git a/octoprint/settings.py b/octoprint/settings.py index 4ffd461..b1e67ce 100644 --- a/octoprint/settings.py +++ b/octoprint/settings.py @@ -90,7 +90,7 @@ default_settings = { "userManager": "octoprint.users.FilebasedUserManager", "userfile": None, "autologinLocal": False, - "localNetwork": "127.0.0.1", + "localNetworks": ["127.0.0.0/8"], "autologinAs": None }, "events": {