Support API key for GMA spots #112

This commit is contained in:
Ian Renton
2026-06-21 08:04:49 +01:00
parent 3953271c5f
commit 57c6751c0d
10 changed files with 52 additions and 17 deletions

View File

@@ -27,42 +27,57 @@ spot-providers:
- class: "POTA"
name: "POTA"
enabled: true
- class: "SOTA"
name: "SOTA"
enabled: true
- class: "WWFF"
name: "WWFF"
enabled: true
- class: "WWBOTA"
name: "WWBOTA"
enabled: true
- class: "GMA"
name: "GMA"
enabled: true
# GMA requires an API key to fetch spots. After creating an account on cqgma.org, email support and request one.
api-key: ""
- class: "HEMA"
name: "HEMA"
enabled: true
- class: "ParksNPeaks"
name: "ParksNPeaks"
enabled: true
- class: "ZLOTA"
name: "ZLOTA"
enabled: true
- class: "WOTA"
name: "WOTA"
enabled: true
- class: "LLOTA"
name: "LLOTA"
enabled: true
- class: "WWTOTA"
name: "WWTOTA"
enabled: true
- class: "Tiles"
name: "Tiles"
enabled: true
- class: "APRSIS"
name: "APRS-IS"
enabled: false
- class: "DXCluster"
name: "HRD Cluster"
enabled: true
@@ -78,6 +93,7 @@ spot-providers:
# sure you aren't also separately connecting to RBN directly, otherwise you may get duplicate spots.) Note that not
# all clusters sent RBN spots anyway.
allow_rbn_spots: false
- class: "DXCluster"
name: "W3LPL Cluster"
enabled: false
@@ -93,6 +109,7 @@ spot-providers:
# sure you aren't also separately connecting to RBN directly, otherwise you may get duplicate spots.) Note that not
# all clusters sent RBN spots anyway.
allow_rbn_spots: false
- class: "RBN"
name: "RBN CW/RTTY"
enabled: false
@@ -102,15 +119,18 @@ spot-providers:
# received by Spothole but not shown on the web UI unless the user explicitly turns it on. For that behaviour,
# set enabled to true, but enabled-by-default-in-web-ui to false.
enabled-by-default-in-web-ui: false
- class: "RBN"
name: "RBN FT8"
enabled: false
port: 7001
enabled-by-default-in-web-ui: false
- class: "UKPacketNet"
name: "UK Packet Radio Net"
enabled: false
enabled-by-default-in-web-ui: false
- class: "XOTA"
name: "39C3 TOTA"
enabled: false
@@ -120,9 +140,10 @@ spot-providers:
# programmes and so different URLs provide different programmes.
sig: "TOTA"
locations-csv: "datafiles/39c3-tota.csv"
- class: "XOTA"
name: "EH23 TOTA"
enabled: true
enabled: false
url: "wss://eh23.totawatch.de/api/spot/live"
sig: "TOTA"
locations-csv: "datafiles/eh23-tota.csv"
@@ -133,21 +154,27 @@ alert-providers:
- class: "POTA"
name: "POTA"
enabled: true
- class: "SOTA"
name: "SOTA"
enabled: true
- class: "WWFF"
name: "WWFF"
enabled: true
- class: "ParksNPeaks"
name: "ParksNPeaks"
enabled: true
- class: "WOTA"
name: "WOTA"
enabled: true
- class: "BOTA"
name: "BOTA"
enabled: true
- class: "NG3K"
name: "NG3K"
enabled: true
@@ -159,12 +186,15 @@ solar-condition-providers:
- class: "HamQSL"
name: "HamQSL"
enabled: true
- class: "NOAA3dayForecast"
name: "NOAA 3-day Forecast"
enabled: true
- class: "GIROIonosonde"
name: "GIRO Ionosonde Data"
enabled: true
- class: "KC2GProp"
name: "KC2G Propagation Data"
enabled: true

View File

@@ -19,7 +19,12 @@ class GMA(HTTPSpotProvider):
REF_INFO_URL_ROOT = "https://www.cqgma.org/api/ref/?"
def __init__(self, provider_config):
super().__init__(provider_config, self.SPOTS_URL, self.POLL_INTERVAL_SEC)
# Ensure there is an API key in our config, and set up the query URL using it
self.api_key = provider_config.get("api-key", "")
if self.api_key != "":
super().__init__(provider_config, self.SPOTS_URL + "?key=" + self.api_key, self.POLL_INTERVAL_SEC)
else:
logging.warning("GMA spot provider configured but no api key was provided, this API will not be queried.")
def _http_response_to_spots(self, http_response):
new_spots = []

View File

@@ -76,7 +76,7 @@
</div>
<script src="/js/add-spot.js?v=1781958515"></script>
<script src="/js/add-spot.js?v=1782025489"></script>
<script>$(document).ready(function () {
$("#nav-link-add-spot").addClass("active");
}); <!-- highlight active page in nav --></script>

View File

@@ -75,7 +75,7 @@
</div>
<script src="/js/alerts.js?v=1781958515"></script>
<script src="/js/alerts.js?v=1782025489"></script>
<script>$(document).ready(function () {
$("#nav-link-alerts").addClass("active");
}); <!-- highlight active page in nav --></script>

View File

@@ -77,8 +77,8 @@
<script>
let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %};
</script>
<script src="/js/spotsbandsandmap.js?v=1781958515"></script>
<script src="/js/bands.js?v=1781958515"></script>
<script src="/js/spotsbandsandmap.js?v=1782025489"></script>
<script src="/js/bands.js?v=1782025489"></script>
<script>$(document).ready(function () {
$("#nav-link-bands").addClass("active");
}); <!-- highlight active page in nav --></script>

View File

@@ -1,6 +1,6 @@
{% extends "skeleton.html" %}
{% block head_extra %}
<link rel="stylesheet" href="/css/style.css?v=1781958515" type="text/css">
<link rel="stylesheet" href="/css/style.css?v=1782025489" type="text/css">
<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/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/tinycolor2-1.6.0.min.js"></script>
<script src="/js/utils.js?v=1781958515"></script>
<script src="/js/ui-ham.js?v=1781958515"></script>
<script src="/js/geo.js?v=1781958515"></script>
<script src="/js/common.js?v=1781958515"></script>
<script src="/js/utils.js?v=1782025489"></script>
<script src="/js/ui-ham.js?v=1782025489"></script>
<script src="/js/geo.js?v=1782025489"></script>
<script src="/js/common.js?v=1782025489"></script>
{% end %}
{% block body %}
<div class="container">

View File

@@ -284,7 +284,7 @@
</div>
<script src="/vendor/js/chart-4.4.9.umd.min.js"></script>
<script src="/js/conditions.js?v=1781958515"></script>
<script src="/js/conditions.js?v=1782025489"></script>
<script>$(document).ready(function () {
$("#nav-link-conditions").addClass("active");
}); <!-- highlight active page in nav --></script>

View File

@@ -95,8 +95,8 @@
<script>
let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %};
</script>
<script src="/js/spotsbandsandmap.js?v=1781958515"></script>
<script src="/js/map.js?v=1781958515"></script>
<script src="/js/spotsbandsandmap.js?v=1782025489"></script>
<script src="/js/map.js?v=1782025489"></script>
<script>$(document).ready(function () {
$("#nav-link-map").addClass("active");
}); <!-- highlight active page in nav --></script>

View File

@@ -116,8 +116,8 @@
<script>
let spotProvidersEnabledByDefault = {% raw json_encode(web_ui_options["spot-providers-enabled-by-default"]) %};
</script>
<script src="/js/spotsbandsandmap.js?v=1781958515"></script>
<script src="/js/spots.js?v=1781958515"></script>
<script src="/js/spotsbandsandmap.js?v=1782025489"></script>
<script src="/js/spots.js?v=1782025489"></script>
<script>$(document).ready(function () {
$("#nav-link-spots").addClass("active");
}); <!-- highlight active page in nav --></script>

View File

@@ -59,7 +59,7 @@
</div>
</div>
<script src="/js/status.js?v=1781958515"></script>
<script src="/js/status.js?v=1782025489"></script>
<script>
$(document).ready(function () {
$("#nav-link-status").addClass("active");