Merge main: OpsLog's own Club Log API key

This commit is contained in:
2026-08-18 10:10:42 +02:00
2 changed files with 26 additions and 8 deletions
+6 -2
View File
@@ -2,8 +2,12 @@
{ {
"version": "0.26.0", "version": "0.26.0",
"date": "", "date": "",
"en": [], "en": [
"fr": [] "Club Log uploads are now identified as OpsLog. They were credited to another station's application key, which took the blame for them."
],
"fr": [
"Les envois Club Log sidentifient désormais comme OpsLog. Ils étaient attribués à la clé applicative dune autre station, qui en portait la responsabilité."
]
}, },
{ {
"version": "0.25.9", "version": "0.25.9",
+20 -6
View File
@@ -40,12 +40,26 @@ func looksLikeHTML(s string) bool {
// anything in the operator's log, which is what a test button must never do. // anything in the operator's log, which is what a test button must never do.
const clublogDownloadURL = "https://clublog.org/getadif.php" const clublogDownloadURL = "https://clublog.org/getadif.php"
// clublogAppAPIKey is OpsLog's Club Log *application* API key. Club Log // clublogAppAPIKey is OpsLog's own Club Log *application* API key, issued to
// requires an api parameter that identifies the client software (not the // "OpsLog" by G7VJR on 2026-08-18.
// user) — the same way Log4OM embeds its own key — so we ship it baked in //
// rather than asking each user for one. It's an application identifier, not // Club Log requires an api parameter identifying the client SOFTWARE, not the
// a user secret, but note it is visible in the source and the binary. // user — the same way Log4OM embeds its own — so it ships baked in rather than
const clublogAppAPIKey = "5767f19333363a9ef432ee9cd4141fe76b8adf38" // asking every operator to request one.
//
// It replaces a key that was registered to XV9Q, not to OpsLog. That was not a
// cosmetic detail: every OpsLog upload in the world was attributed to that
// callsign, its owner received the abuse warnings OpsLog earned, and a
// revocation aimed at them would have cut Club Log uploads for every user of
// this program at once.
//
// Club Log asks that the key not be published in source code. The source lives
// on a private remote and only the built exe is released — but the key is still
// recoverable from that binary by anyone who looks, as it is for every logger
// that embeds one. Treat it as an identifier that can be attributed, never as a
// secret: it authorises nothing on its own, since every request also carries the
// operator's own e-mail and password.
const clublogAppAPIKey = "8df47807a412c586787c9401c96c10c135d6e580"
// UploadClublog pushes one ADIF record to Club Log in real time. The user // UploadClublog pushes one ADIF record to Club Log in real time. The user
// supplies the account email + password and the logbook callsign; the // supplies the account email + password and the logbook callsign; the