Ini adalah alat pencatatan QSO berbasis shell-script, berbasis web.
Fiturnya:
Kontrol akses disediakan oleh file kebijakan .htaccess ke file CGI registra.cgi , yang sebenarnya menulis catatan baru.
Alat Cannonical ARRL's Logbook of the World (LOTW) untuk menangani kontak adalah alat TQSL. Sementara TQSL adalah open source, saya tidak terlalu menyukai ide untuk menggunakannya untuk berinteraksi dengan sistem logging saya - ini adalah alat yang ampuh dengan beberapa fungsi tambahan lainnya (yang saya tidak tertarik untuk logging sake) dan saya menginginkan sesuatu yang super ramping dan langsung - dengan demikian saya pindah ke implementasi TQSL saya sendiri. Dalam implementasi TQSL saya, tujuan utamanya adalah untuk secara otomatis masuk ke LOTW semua kontak saya pada saat QSO, tanpa menginstal TQSL.
Sertifikat Anda terletak pada file .tq6 - yang merupakan file gzip yang berisi rantai perwalian sertifikat, dari CA hingga sertifikat Anda (dalam klausa <usercert> ) dan skema TQSL untuk entitas, mode, dll.
[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-----
[...]
Dengan menggunakan utilitas TQSL Anda, Anda dapat mengekspor file .p12 yang berisi kunci penandatanganan. Dalam sertifikat CallSign, gunakan opsi Save the callsign certificate for <YOUR CALLSIGN> .
Pertama, ekstrak sertifikat pengguna Anda dari file .p12 , ini adalah sertifikat pertama dalam rantai dan simpan ke 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
[...]
Dan sekarang, dapatkan kunci pribadi untuk dapat menandatangani konten menggunakan sertifikat ini. Berikan kata sandi di langkah Enter PEM pass phrase , jika tidak, ia akan gagal merengek tentang kurangnya kata sandi. Simpan sebagai 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:
Sekarang, Anda telah memperoleh semua yang Anda butuhkan untuk menandatangani kontak.
File .tq8 sebenarnya berisi kontak yang akan diunggah ke lotw. Ini adalah file yang dikompresi GZIP dan dengan struktur karakteristik yang akan saya bagikan di bawah ini. Tidak akan masuk ke detail, karena detailnya cukup banyak menggambarkan diri sendiri.
Sorotan dari file tq8 adalah:
Informasi kontak. Yaitu:
[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>
Data yang akan ditandatangani didefinisikan dalam urutan berikut, tanpa spasi:
Setelah Anda membangun string menjadi hash/ditandatangani, lalu tandatangani dengan kunci Anda. Lihat sampel di bawah ini:
$ echo $STRING-TO-BE-SIGNED | openssl dgst -sha1 -sign lotw-py2raf.key -passin 'pass:<password>' | base64
Pronto. Sekarang Anda telah menyiapkan konten yang ditandatangani dan langkah terakhir adalah membangun file yang berisi semua bidang yang diperlukan, memadatkannya, dan mengunggah ke lotw.
Lihat ikal sampel di bawah ini
$ curl -F '[email protected]' https://lotw.arrl.org/lotw/upload
Sekarang output log ke sqlite juga. Skema:
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 );
Skema QSL:
CREATE TABLE qsl (
callsign TEXT,
method TEXT,
date INTEGER,
via TEXT,
type TEXT,
xo BOOLEAN );
Caveat: Pengguna web Anda harus memiliki izin membaca/menulis tidak hanya untuk file sqlite, tetapi juga untuk direktori sqlite Anda - jika tidak, itu akan memuntahkan akses yang ditolak.
Formulir Catatan PY2RAF
Daftar PY2RAF QSO