これは、シェルスクリプトのWebベースのQSOロギングツールです。
特徴:
アクセス制御は、 .htaccessポリシーファイルによって、実際に新しいレコードを書き込むregistra.cgi CGIファイルに提供されます。
ARRLの世界のログブック(LOTW)連絡先を処理するための砲ノーニカルツールは、TQSLツールです。 TQSLはオープンソースですが、ロギングシステムとのインターフェースに使用するためのアイデアを正確に好むわけではありませんでした。これは、他のいくつかの追加の機能を備えた強力なツールであり(ロギングのために興味がありませんでした)、非常にスリムで簡単なものが欲しかった - したがって、私はTQSLの実装に移動しました。私のTQSLの実装では、主な目標は、TQSLをインストールせずに、QSOの時点ですべての連絡先を自動的にログにログインすることです。
証明書は.tq6ファイルにあります。これは、CAから証明書から(句<usercert> )、およびエンティティ、モードなどのTQSLスキーマまで、証明書トラストチェーンを含むGZIP'edファイルです。
[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ファイルをエクスポートできます。 Callign証明書で、 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ファイルには、実際にロットにアップロードする連絡先が含まれています。これは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リスト