From bccfcff19dcefbe754c7826b6525806318cf16d4 Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Fri, 5 Dec 2014 22:33:42 +0000 Subject: [PATCH] Make referrer verification exceptions non-fatal --- rophako/model/tracking.py | 30 +++++++++++++++++++----------- rophako/utils.py | 9 +++++++-- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/rophako/model/tracking.py b/rophako/model/tracking.py index b1f5595..f9f4d10 100644 --- a/rophako/model/tracking.py +++ b/rophako/model/tracking.py @@ -6,7 +6,8 @@ import time import requests import rophako.jsondb as JsonDB -from rophako.utils import remote_addr, pretty_time, server_name +from rophako.utils import (remote_addr, pretty_time, server_name, + handle_exception) def track_visit(request, session): """Main logic to track and log visitor details.""" @@ -91,16 +92,23 @@ def log_referrer(request, link): # See if the URL really links back to us. hostname = server_name() - r = requests.get(link) - if hostname in r.text: - # Log it. - db = list() - if JsonDB.exists("traffic/referrers"): - # Don't cache the result -- the list can get huge! - db = JsonDB.get("traffic/referrers", cache=False) - db.append(link) - JsonDB.commit("traffic/referrers", db, cache=False) - return link + try: + r = requests.get(link, + timeout=5, + verify=False, # Don't do SSL verification + ) + if hostname in r.text: + # Log it. + db = list() + if JsonDB.exists("traffic/referrers"): + # Don't cache the result -- the list can get huge! + db = JsonDB.get("traffic/referrers", cache=False) + db.append(link) + JsonDB.commit("traffic/referrers", db, cache=False) + return link + except Exception as e: + handle_exception(e) + return None return None diff --git a/rophako/utils.py b/rophako/utils.py index 82b0472..4ca85b3 100644 --- a/rophako/utils.py +++ b/rophako/utils.py @@ -214,7 +214,7 @@ def handle_exception(error): username = "anonymous" try: - if "username" in g.info["session"]: + if hasattr(g, "info") and "session" in g.info and "username" in g.info["session"]: username = g.info["session"]["username"] except: pass @@ -227,7 +227,12 @@ def handle_exception(error): stacktrace = error + "\n\n" \ + "==== Start Traceback ====\n" \ + traceback.format_exc() \ - + "==== End Traceback ====\n" + + "==== End Traceback ====\n\n" \ + + "Request Information\n" \ + + "-------------------\n" \ + + "Address: " + remote_addr() + "\n" \ + + "User Agent: " + request.user_agent.string + "\n" \ + + "Referrer: " + request.referrer # Construct the subject and message subject = "Internal Server Error on {} - {} - {}".format(