Dies ist ein Shell-Skript-webbasiertes QSO-Protokollierungs-Tool.
Es enthält:
Die Zugriffskontrolle erfolgt durch die .htaccess -Richtlinie -Datei an die registra.cgi cgi cgi -Datei, die die neuen Datensätze tatsächlich schreibt.
Das kanonische Tool des ARRL -Logbuchs der Welt (LOTW) zum Umgang mit Kontakten ist das TQSL -Tool. Während TQSL Open Source ist, war ich nicht genau die Idee, sie für die Vernetzung mit meinem Protokollierungssystem zu verwenden - es ist ein leistungsstarkes Tool mit mehreren anderen zusätzlichen Funktionen (die ich nicht für die Protokollierung von Sake interessierte) und ich wollte etwas Super -Schlankes und Unkompliziertes - und wechselte zu meiner eigenen Implementierung von TQSL. In meiner TQSL -Implementierung ist es das Hauptziel, alle meine Kontakte zum Zeitpunkt des QSO automatisch bei Lotw zu protokollieren, ohne TQSL zu installieren.
Ihr Zertifikat befindet sich in einer .tq6 -Datei - eine GZIP'Ed -Datei mit der Zertifikat -Trust -Kette, von der CA zu Ihrem Zertifikat (in Klausel <usercert> ) und dem TQSL -Schema für Entitäten, Modi usw.
[rfreire@rf rpmbuild]$ file lotw.tq6
lotw.tq6: gzip compressed data, from Unix
[rfreire@rf rpmbuild]$ gunzip -S .tq6 lotw.tq6
<?xml version="1.0" encoding="UTF-8" ?>
<tqsldata>
<tqslcerts>
<rootcert>-----BEGIN CERTIFICATE-----
[...]
Durch die Verwendung Ihres TQSL -Dienstprogramms können Sie eine .p12 -Datei mit einem Signierschlüssel exportieren. Verwenden Sie im Rallsign -Zertifikat die Option Save the callsign certificate for <YOUR CALLSIGN> .
Extrahieren Sie zunächst Ihr Benutzerzertifikat aus der Datei .p12 , es ist das erste Zertifikat in der Kette und speichern Sie es in lotw-<callsign>.cer
[rfreire@rf rpmbuild]$ openssl pkcs12 -info -in lotw.p12
Enter Import Password:
MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
localKeyID: CC AC 6E 08 94 09 6E 7E B7 5B 2E 90 1A 24 2E CE 10 07 35 5D
friendlyName: TrustedQSL user certificate
subject=/1.3.6.1.4.1.12348.1.1=PY2RAF/CN=Rodrigo A B Freire/[email protected]
issuer=/C=US/ST=CT/L=Newington/O=American Radio Relay League/OU=Logbook of the World/CN=Logbook of the World Production CA/DC=arrl.org/[email protected]
-----BEGIN CERTIFICATE-----
MIIEtTCCA52gAwIBAgIDBw2TMA0GCSqGSIb3DQEBCwUAMIHYMQswCQYDVQQGEwJV
UzELMAkGA1UECAwCQ1QxEjAQBgNVBAcMCU5ld2luZ3RvbjEkMCIGA1UECgwbQW1l
[...]
Und nun lassen Sie den privaten Schlüssel in der Lage, Inhalte mit diesem Zertifikat zu unterschreiben. Geben Sie ihm ein Passwort in Enter PEM pass phrase -Schritt, ansonsten jammern er kläglich über das Fehlen eines Passworts. Speichern Sie es als lotw-<callsign>.key
[rfreire@rf rpmbuild]$ openssl pkcs12 -in lotw.p12 -nocerts -out lotw-<callsign>.key
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Jetzt haben Sie alles erhalten, was Sie benötigen, um die Kontakte zu unterschreiben.
Die .tq8 -Datei enthält tatsächlich die Kontakte, die auf den LotW hochgeladen werden sollen. Es ist eine gzip-komprimierte Datei und mit einer charakteristischen Struktur, die ich unten teilen werde. Wird nicht in Details eingehen, da die Details ziemlich selbst beschrieben sind.
Die Höhepunkte der tq8 -Datei sind:
Die Kontaktinformationen. Nämlich:
[rfreire@rf rpmbuild]$ file py2raf.tq8
py2raf.tq8: gzip compressed data, was "py2raf", from Unix, last modified: Tue Dec 31 13:27:43 2019
[rfreire@rf rpmbuild]$ gunzip -S .tq8 py2raf.tq8
[rfreire@rf rpmbuild]$ cat py2raf
<TQSL_IDENT:53>TQSL V2.5.1 Lib: V2.5 Config: V11.9 AllowDupes: false
<Rec_Type:5>tCERT
<CERT_UID:1>1
<CERTIFICATE:1638>MIIEtTCCA52gAwIBAgIDBw2TMA0GCSqGSIb3DQEBCwUAMIHYMQswCQYDVQQGEwJV
UzELMAkGA1UECAwCQ1QxEjAQBgNVBAcMCU5ld2luZ3RvbjEkMCIGA1UECgwbQW1l
[...]
zQf9UWPErprv
<eor>
<Rec_Type:8>tSTATION
<STATION_UID:1>1
<CERT_UID:1>1
<CALL:6>PY2RAF
<DXCC:3>108
<GRIDSQUARE:6>GG66gm
<ITUZ:2>15
<CQZ:2>11
<eor>
<Rec_Type:8>tCONTACT
<STATION_UID:1>1
<CALL:5>PY2XX
<BAND:4>70CM
<MODE:3>FAX
<FREQ:7>439.480
<QSO_DATE:10>2019-12-31
<QSO_TIME:9>10:00:00Z
<SIGN_LOTW_V2.0:175:6>cLO9toAVzpzhDjMlMuJHAS7z6Tjpq95U0yvpd2qawz7tIrUG6jXUq9RHy4yuZd2x
kwDIkIyjv6iMevwDfFeETP0XjHQziRiUC1Ol6YnCBl3GWQAX05Y8OxEpUx0fy6Tu
8osQlV7rJ0YtvNmhPc/Fz7w79JdXqM2KVIxyUsy6tzM=
<SIGNDATA:48>11GG66GM1570CMPY2XX439.480FAX2019-12-3110:00:00Z
<eor>
Die zu signalisierten Daten sind in der folgenden Reihenfolge ohne Räume definiert:
Nachdem Sie die Zeichenfolge erstellt haben, um Hashed/Signed zu sein, unterschreiben Sie sie mit Ihrem Schlüssel. Siehe die folgende Probe:
$ echo $STRING-TO-BE-SIGNED | openssl dgst -sha1 -sign lotw-py2raf.key -passin 'pass:<password>' | base64
Pronto. Jetzt haben Sie den signierten Inhalt vorbereitet und der letzte Schritt besteht darin, die Datei mit allen erforderlichen Feldern zu erstellen, sie zu verdichten und auf LOTW hochzuladen.
Siehe die folgende Probe Curl
$ curl -F '[email protected]' https://lotw.arrl.org/lotw/upload
Jetzt gibt es auch log an SQLite aus. Schema:
CREATE TABLE contacts (
serial INTEGER PRIMARY KEY,
qrg REAL,
callsign TEXT,
op TEXT,
qtr INTEGER,
mode TEXT,
power INTEGER,
propagation TEXT,
sighis INTEGER,
sigmy INTEGER,
qth TEXT,
obs TEXT );
QSL -Schema:
CREATE TABLE qsl (
callsign TEXT,
method TEXT,
date INTEGER,
via TEXT,
type TEXT,
xo BOOLEAN );
Vorbehalt: Ihr Webbenutzer muss nicht nur die SQLite -Datei gelesen/schreiben, sondern auch in Ihrem SQLite -Verzeichnis - ansonsten wird ein abgelehnter Zugriff ausgestrahlt.
PY2RAF -Rekordformular
PY2RAF QSO -Liste