นี่คือเครื่องมือบันทึกการบันทึก QSO แบบเชลล์สคริปต์บนเว็บ
มันมีคุณสมบัติ:
การควบคุมการเข้าถึงนั้นจัดทำโดยไฟล์นโยบาย .htaccess ไปยังไฟล์ registra.cgi CGI ซึ่งจริง ๆ แล้วเขียนบันทึกใหม่
สมุดบันทึกของ ARRL ของโลก (LOTW) เครื่องมือปืนใหญ่สำหรับการจัดการผู้ติดต่อคือเครื่องมือ TQSL ในขณะที่ TQSL เป็นโอเพ่นซอร์ส แต่ฉันไม่ชอบความคิดที่จะใช้มันเพื่อเชื่อมต่อกับระบบการบันทึกของฉัน - มันเป็นเครื่องมือที่ทรงพลังกับฟังก์ชันพิเศษอื่น ๆ อีกหลายอย่าง (ซึ่งฉันไม่สนใจที่จะบันทึกสาเก) และฉันต้องการอะไรที่ผอมและตรงไปตรงมา - ดังนั้นฉันจึงย้ายไปใช้ TQSL ของฉันเอง ในการใช้งาน TQSL ของฉันเป้าหมายหลักคือการเข้าสู่ระบบโดยอัตโนมัติไปยัง Lotw ที่ติดต่อทั้งหมดของฉันในเวลาที่ QSO โดยไม่ต้องติดตั้ง TQSL
ใบรับรองของคุณอยู่ในไฟล์ .tq6 - ซึ่งเป็นไฟล์ gzip'ed ที่มีห่วงโซ่ความน่าเชื่อถือของใบรับรองจาก CA ไปยังใบรับรองของคุณ (ในข้อ <usercert> ) และ Schema 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 ที่มีคีย์การลงนาม ในใบรับรอง callyign ให้ใช้ตัวเลือก 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
Pronto ตอนนี้คุณได้เตรียมเนื้อหาที่ลงนามแล้วและขั้นตอนสุดท้ายคือการสร้างไฟล์ที่มีฟิลด์ที่ต้องการทั้งหมดคอมแพคและอัปโหลดไปยัง 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 Schema:
CREATE TABLE qsl (
callsign TEXT,
method TEXT,
date INTEGER,
via TEXT,
type TEXT,
xo BOOLEAN );
Caveat: ผู้ใช้เว็บของคุณจะต้องมีสิทธิ์อ่าน/เขียนไม่เพียง แต่ไปยังไฟล์ SQLite แต่ไปยัง ไดเรกทอรี SQLite ของคุณด้วย - มิฉะนั้นจะเป็นการปฏิเสธการเข้าถึง
แบบฟอร์มบันทึก PY2RAF
รายการ PY2RAF QSO