From f999f167b1d86d9cb42a64f57cb44e920e25fb23 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Mon, 2 Sep 2019 02:10:52 +0200 Subject: [PATCH] Offer access with ip address on invalid host error --- src/Ui/UiRequest.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Ui/UiRequest.py b/src/Ui/UiRequest.py index 0c3ea447..42536348 100644 --- a/src/Ui/UiRequest.py +++ b/src/Ui/UiRequest.py @@ -5,6 +5,7 @@ import mimetypes import json import html import urllib +import socket import gevent @@ -83,7 +84,16 @@ class UiRequest(object): # Check if host allowed to do request if not self.isHostAllowed(self.env.get("HTTP_HOST")): - return self.error403("Invalid host: %s" % self.env.get("HTTP_HOST"), details=False) + ret_error = next(self.error403("Invalid host: %s" % self.env.get("HTTP_HOST"), details=False)) + + http_get = self.env["PATH_INFO"] + if self.env["QUERY_STRING"]: + http_get += "?{0}".format(self.env["QUERY_STRING"]) + self_host = self.env["HTTP_HOST"].split(":")[0] + self_ip = self.env["HTTP_HOST"].replace(self_host, socket.gethostbyname(self_host)) + link = "http://{0}{1}".format(self_ip, http_get) + ret_link = """

Access via ip: {0}""".format(html.escape(link)).encode("utf8") + return iter([ret_error, ret_link]) # Prepend .bit host for transparent proxy if self.server.site_manager.isDomain(self.env.get("HTTP_HOST")):