Это оболочка, веб-инструмент для ведения журнала QSO.
Это особенности:
Контроль доступа обеспечивается файлом политики .htaccess в файл cgi registra.cgi , который фактически записывает новые записи.
Кэннонический инструмент «Логический журнал Arrl» (LOTW) для обработки контактов является инструментом TQSL. В то время как TQSL является открытым исходным кодом, мне не очень нравилось идея использования ее для взаимодействия с моей системой журнала - это мощный инструмент с несколькими другими дополнительными функциональными возможностями (которые мне не интересовались, и я хотел что -то очень стройное и простое - поэтому я перешел к своей собственной реализации TQSL. В реализации моей TQSL основной целью является автоматически войти в систему для LOTW все мои контакты во время 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 , содержащий ключ подписи. В сертификате 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 Список