이것은 쉘 스크립트 웹 기반 QSO 로깅 도구입니다.
기능 :
액세스 컨트롤은 .htaccess 정책 파일에 의해 registra.cgi CGI 파일에 제공되며 실제로 새 레코드를 작성합니다.
연락처 처리를위한 ARRL의 세계 로그 북 (LOTW) 대포 도구는 TQSL 도구입니다. TQSL은 오픈 소스이지만, 로깅 시스템과 인터페이스하는 데 사용하는 아이디어를 정확히 좋아하지 않았습니다. 그것은 다른 여러 가지 추가 기능 (로깅을 위해 관심이 없었 음)을 가진 강력한 도구이며 매우 슬림하고 간단한 것을 원했기 때문에 TQSL의 구현으로 옮겼습니다. TQSL의 구현에서 주요 목표는 TQSL을 설치하지 않고 QSO 시점에 모든 연락처를 자동으로 로그인하는 것입니다.
인증서는 .tq6 파일에 있으며, CA에서 인증서에 이르기까지 인증서 신탁 체인이 포함 된 gzip'ed 파일 ( <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 파일을 내보낼 수 있습니다. Callsign 인증서에서 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 );
경고 : 웹 사용자는 SQLITE 파일뿐만 아니라 SQLITE 디렉토리 에도 읽기/쓰기 권한이 있어야합니다. 그렇지 않으면 액세스 거부가 거부됩니다.
PY2RAF 레코드 양식
py2raf qso 목록