這是一個基於網絡的shell-scrom,基於網絡的QSO記錄工具。
它的特徵:
訪問控件由.htaccess策略文件提供給registra.cgi CGI文件,該文件實際上寫了新的記錄。
TQSL工具是ARRL的世界日誌(LOTW)炮製工具。雖然TQSL是開源的,但我並不完全喜歡將其用於與我的記錄系統接口的想法 - 它是一種功能強大的工具,具有其他幾個額外的功能(我對Logging Ligging Ligging Ligging不感興趣),我想要Super Slim nighterforward的東西 - 因此,我搬到了我自己的TQSL實現。在我的TQSL的實現中,主要目標是在QSO時自動登錄所有聯繫人,而不會安裝TQSL。
您的證書位於.tq6文件中 - 這是一個包含證書信任鏈的GZIP'ED文件,從CA到您的證書(在<usercert>條款中)和實體,模式,模式等的TQSL架構。
[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-----
[...]
通過使用您的TQSL實用程序,您可以導出包含簽名鍵的.p12文件。在呼叫證書中,使用該選項Save the callsign certificate for <YOUR CALLSIGN> 。
首先,從.p12文件中提取用戶證書,它是鏈中的第一個證書,並將其保存到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
[...]
現在,獲取私鑰,可以使用此證書籤署內容。在Enter PEM pass phrase步驟中給它一個密碼,否則,它將失敗,因為缺少密碼而失敗。將其保存為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:
現在,您已經獲得了簽署聯繫人所需的一切。
.tq8文件實際上包含要上傳到LOTW的聯繫人。它是一個被GZIP壓縮的文件,具有特徵性結構,我將在下面分享。不會詳細介紹,因為細節幾乎是自稱的。
tq8文件的亮點是:
聯繫信息。即:
[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>
要簽名的數據按以下順序定義,沒有空間:
構建要進行哈希/簽名的字符串後,然後用鑰匙簽名。請參閱以下樣本:
$ echo $STRING-TO-BE-SIGNED | openssl dgst -sha1 -sign lotw-py2raf.key -passin 'pass:<password>' | base64
普朗托。現在,您已經準備好簽名的內容,最後一步是構建包含所有必需字段的文件,緊湊並上傳到LotW。
請參閱以下樣品捲曲
$ curl -F '[email protected]' https://lotw.arrl.org/lotw/upload
現在,也將日誌輸出到sqlite。模式:
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模式:
CREATE TABLE qsl (
callsign TEXT,
method TEXT,
date INTEGER,
via TEXT,
type TEXT,
xo BOOLEAN );
警告:您的Web用戶不僅必須對SQLite文件進行讀取/寫入權限,而且還必須對您的SQLite目錄也有讀取的權限 - 否則,它將拒絕訪問權限。
PY2RAF記錄表格
PY2RAF QSO列表