Improve error reporting

This commit is contained in:
Ian Renton
2026-07-25 13:42:21 +01:00
parent ba08555a30
commit e7253c0916
19 changed files with 41 additions and 16 deletions
+1
View File
@@ -4,6 +4,7 @@ from threading import Thread, Event
import pytz import pytz
import requests import requests
from requests.exceptions import ConnectionError
from alertproviders.alert_provider import AlertProvider from alertproviders.alert_provider import AlertProvider
from core.constants import HTTP_HEADERS from core.constants import HTTP_HEADERS
+1
View File
@@ -11,6 +11,7 @@ from pyhamtools import LookupLib, Callinfo, callinfo
from pyhamtools.exceptions import APIKeyMissingError from pyhamtools.exceptions import APIKeyMissingError
from pyhamtools.frequency import freq_to_band from pyhamtools.frequency import freq_to_band
from pyhamtools.locator import latlong_to_locator from pyhamtools.locator import latlong_to_locator
from requests.exceptions import ConnectionError
from requests_cache import CachedSession from requests_cache import CachedSession
from core.cache_utils import SEMI_STATIC_URL_DATA_CACHE from core.cache_utils import SEMI_STATIC_URL_DATA_CACHE
+1
View File
@@ -2,6 +2,7 @@ import csv
import logging import logging
from pyhamtools.locator import latlong_to_locator, locator_to_latlong from pyhamtools.locator import latlong_to_locator, locator_to_latlong
from requests.exceptions import ConnectionError
from core.cache_utils import SEMI_STATIC_URL_DATA_CACHE from core.cache_utils import SEMI_STATIC_URL_DATA_CACHE
from core.constants import SIGS, HTTP_HEADERS from core.constants import SIGS, HTTP_HEADERS
+16
View File
@@ -0,0 +1,16 @@
import logging
from tornado.web import StaticFileHandler, HTTPError
class QuietStaticFileHandler(StaticFileHandler):
"""Minor override of logging in StaticFileHandler to log HTTP errors at debug level instead of their usual
warning level. Without this, attacks on Spothole which try to do path traversal attacks would log exceptions
from inside Tornado, and the server logs would contain a lot of this type of content. This effectively changes
the log level of these exceptions to DEBUG so they are only logged if DEBUG level logging is enabled."""
def log_exception(self, typ, value, tb):
if isinstance(value, HTTPError):
logging.debug(value)
return
super().log_exception(typ, value, tb)
+1 -1
View File
@@ -103,7 +103,7 @@ class WebServer:
misc_routes = [ misc_routes = [
(r"/apidocs", PageTemplateHandler, {"template_name": "apidocs", **handler_opts}), (r"/apidocs", PageTemplateHandler, {"template_name": "apidocs", **handler_opts}),
(r"/metrics", PrometheusMetricsHandler), (r"/metrics", PrometheusMetricsHandler),
(r"/(.*)", StaticFileHandler, {"path": os.path.join(_HERE, "../webassets")}) (r"/(.*)", QuietStaticFileHandler, {"path": os.path.join(_HERE, "../webassets")})
] ]
app = tornado.web.Application(api_routes + ui_routes + misc_routes, app = tornado.web.Application(api_routes + ui_routes + misc_routes,
@@ -5,6 +5,7 @@ from threading import Thread, Event
import pytz import pytz
import requests import requests
from requests.exceptions import ConnectionError
from core.constants import HTTP_HEADERS from core.constants import HTTP_HEADERS
from solarconditionsproviders.ionosonde_utils import compute_band_states from solarconditionsproviders.ionosonde_utils import compute_band_states
@@ -4,6 +4,7 @@ from threading import Thread, Event
import pytz import pytz
import requests import requests
from requests.exceptions import ConnectionError
from core.constants import HTTP_HEADERS from core.constants import HTTP_HEADERS
from solarconditionsproviders.solar_conditions_provider import SolarConditionsProvider from solarconditionsproviders.solar_conditions_provider import SolarConditionsProvider
+1
View File
@@ -4,6 +4,7 @@ from threading import Thread, Event
import pytz import pytz
import requests import requests
from requests.exceptions import ConnectionError
from core.constants import HTTP_HEADERS from core.constants import HTTP_HEADERS
from solarconditionsproviders.ionosonde_utils import compute_band_states from solarconditionsproviders.ionosonde_utils import compute_band_states
+1
View File
@@ -4,6 +4,7 @@ from datetime import datetime
import pytz import pytz
import requests import requests
from requests.exceptions import ConnectionError
from core.constants import HTTP_HEADERS from core.constants import HTTP_HEADERS
from data.sig_ref import SIGRef from data.sig_ref import SIGRef
+1
View File
@@ -4,6 +4,7 @@ from threading import Thread, Event
import pytz import pytz
import requests import requests
from requests.exceptions import ConnectionError
from core.constants import HTTP_HEADERS from core.constants import HTTP_HEADERS
from spotproviders.spot_provider import SpotProvider from spotproviders.spot_provider import SpotProvider
+1
View File
@@ -2,6 +2,7 @@ import logging
from datetime import datetime from datetime import datetime
import requests import requests
from requests.exceptions import ConnectionError
from core.constants import HTTP_HEADERS from core.constants import HTTP_HEADERS
from data.sig_ref import SIGRef from data.sig_ref import SIGRef
+1 -1
View File
@@ -76,7 +76,7 @@
</div> </div>
<script src="/js/add-spot.js?v=1784968398"></script> <script src="/js/add-spot.js?v=1784983342"></script>
<script>$(document).ready(function () { <script>$(document).ready(function () {
$("#nav-link-add-spot").addClass("active"); $("#nav-link-add-spot").addClass("active");
}); <!-- highlight active page in nav --></script> }); <!-- highlight active page in nav --></script>
+1 -1
View File
@@ -75,7 +75,7 @@
</div> </div>
<script src="/js/alerts.js?v=1784968398"></script> <script src="/js/alerts.js?v=1784983342"></script>
<script>$(document).ready(function () { <script>$(document).ready(function () {
$("#nav-link-alerts").addClass("active"); $("#nav-link-alerts").addClass("active");
}); <!-- highlight active page in nav --></script> }); <!-- highlight active page in nav --></script>
+2 -2
View File
@@ -75,8 +75,8 @@
<script> <script>
let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %}; let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %};
</script> </script>
<script src="/js/spotsbandsandmap.js?v=1784968398"></script> <script src="/js/spotsbandsandmap.js?v=1784983342"></script>
<script src="/js/bands.js?v=1784968398"></script> <script src="/js/bands.js?v=1784983342"></script>
<script>$(document).ready(function () { <script>$(document).ready(function () {
$("#nav-link-bands").addClass("active"); $("#nav-link-bands").addClass("active");
}); <!-- highlight active page in nav --></script> }); <!-- highlight active page in nav --></script>
+5 -5
View File
@@ -1,6 +1,6 @@
{% extends "skeleton.html" %} {% extends "skeleton.html" %}
{% block head_extra %} {% block head_extra %}
<link rel="stylesheet" href="/css/style.css?v=1784968398" type="text/css"> <link rel="stylesheet" href="/css/style.css?v=1784983342" type="text/css">
<link href="/vendor/css/bootstrap-5.3.8.min.css" rel="stylesheet"> <link href="/vendor/css/bootstrap-5.3.8.min.css" rel="stylesheet">
<link href="/vendor/css/fontawesome-6.7.2.min.css" rel="stylesheet"> <link href="/vendor/css/fontawesome-6.7.2.min.css" rel="stylesheet">
<link href="/vendor/css/solid-6.7.2.min.css" rel="stylesheet"> <link href="/vendor/css/solid-6.7.2.min.css" rel="stylesheet">
@@ -10,10 +10,10 @@
<script src="/vendor/js/bootstrap-5.3.8.bundle.min.js"></script> <script src="/vendor/js/bootstrap-5.3.8.bundle.min.js"></script>
<script src="/vendor/js/tinycolor2-1.6.0.min.js"></script> <script src="/vendor/js/tinycolor2-1.6.0.min.js"></script>
<script src="/js/utils.js?v=1784968398"></script> <script src="/js/utils.js?v=1784983342"></script>
<script src="/js/ui-ham.js?v=1784968398"></script> <script src="/js/ui-ham.js?v=1784983342"></script>
<script src="/js/geo.js?v=1784968398"></script> <script src="/js/geo.js?v=1784983342"></script>
<script src="/js/common.js?v=1784968398"></script> <script src="/js/common.js?v=1784983342"></script>
{% end %} {% end %}
{% block body %} {% block body %}
<div class="container"> <div class="container">
+1 -1
View File
@@ -284,7 +284,7 @@
</div> </div>
<script src="/vendor/js/chart-4.4.9.umd.min.js"></script> <script src="/vendor/js/chart-4.4.9.umd.min.js"></script>
<script src="/js/conditions.js?v=1784968398"></script> <script src="/js/conditions.js?v=1784983342"></script>
<script>$(document).ready(function () { <script>$(document).ready(function () {
$("#nav-link-conditions").addClass("active"); $("#nav-link-conditions").addClass("active");
}); <!-- highlight active page in nav --></script> }); <!-- highlight active page in nav --></script>
+2 -2
View File
@@ -95,8 +95,8 @@
<script> <script>
let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %}; let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %};
</script> </script>
<script src="/js/spotsbandsandmap.js?v=1784968398"></script> <script src="/js/spotsbandsandmap.js?v=1784983341"></script>
<script src="/js/map.js?v=1784968398"></script> <script src="/js/map.js?v=1784983341"></script>
<script>$(document).ready(function () { <script>$(document).ready(function () {
$("#nav-link-map").addClass("active"); $("#nav-link-map").addClass("active");
}); <!-- highlight active page in nav --></script> }); <!-- highlight active page in nav --></script>
+2 -2
View File
@@ -116,8 +116,8 @@
<script> <script>
let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %}; let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %};
</script> </script>
<script src="/js/spotsbandsandmap.js?v=1784968398"></script> <script src="/js/spotsbandsandmap.js?v=1784983341"></script>
<script src="/js/spots.js?v=1784968398"></script> <script src="/js/spots.js?v=1784983341"></script>
<script>$(document).ready(function () { <script>$(document).ready(function () {
$("#nav-link-spots").addClass("active"); $("#nav-link-spots").addClass("active");
}); <!-- highlight active page in nav --></script> }); <!-- highlight active page in nav --></script>
+1 -1
View File
@@ -59,7 +59,7 @@
</div> </div>
</div> </div>
<script src="/js/status.js?v=1784968398"></script> <script src="/js/status.js?v=1784983342"></script>
<script> <script>
$(document).ready(function () { $(document).ready(function () {
$("#nav-link-status").addClass("active"); $("#nav-link-status").addClass("active");