Initial workup for LoTW throttling & diff fetching

merge-requests/150/merge
jangliss 2021-06-15 21:03:15 -05:00 zatwierdzone przez nr0q
rodzic 4576c519c8
commit cedeef59f8
3 zmienionych plików z 363 dodań i 265 usunięć

Wyświetl plik

@ -86,6 +86,36 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
{ {
let finalMode = ""; let finalMode = "";
let appLoTW_RXQSO = findAdiField(
activeAdifArray[x],
"APP_LoTW_RXQSO"
);
if (appLoTW_RXQSO != "")
{
let dRXQSO = Date.parse(appLoTW_RXQSO);
let dLastLOTW_QSO = Date.parse(g_adifLogSettings.lastFetch.lotw_qso);
if ((isNaN(dRXQSO) == false) && (isNaN(dLastLOTW_QSO) == false) && (dRXQSO > dLastLOTW_QSO))
{
g_adifLogSettings.lastFetch.lotw_qso = appLoTW_RXQSO;
}
}
let appLoTW_RXQSL = findAdiField(
activeAdifArray[x],
"APP_LoTW_RXQSL"
);
if (appLoTW_RXQSL != "")
{
let dRXQSL = Date.parse(appLoTW_RXQSL);
let dLastLOTW_QSL = Date.parse(g_adifLogSettings.lastFetch.lotw_qsl);
if ((isNaN(dRXQSL) == false) && (isNaN(dLastLOTW_QSL) == false) && (dRXQSL > dLastLOTW_QSL))
{
g_adifLogSettings.lastFetch.lotw_qso = appLoTW_RXQSO;
}
}
if (activeAdifArray[x].length > 3) if (activeAdifArray[x].length > 3)
{ {
if (activeAdifLogMode) if (activeAdifLogMode)
@ -572,6 +602,16 @@ function lotwCallback(buffer, flag)
var shouldAppend = false; var shouldAppend = false;
g_fromDirectCallNoFileDialog = true; g_fromDirectCallNoFileDialog = true;
// Extract header showing last fetched date from call
var lotwQSHeader = rawAdiBuffer.match(/^<APP_LoTW_LAST(QSL|QSORX):\d+>(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})/m);
if (lotwQSHeader !== null)
{
if (lotwQSHeader[1].toUpperCase() == "QSORX")
{ g_adifLogSettings.lastFetch.lotw_qso = lotwQSHeader[2] }
elseif(lotwQSHeader[1].toUpperCase() == "QSL")
g_adifLogSettings.lastFetch.lotw_qsl = lotwQSHeader[2];
}
rawAdiBuffer = cleanAndPrepADIF( rawAdiBuffer = cleanAndPrepADIF(
"lotw.adif", "lotw.adif",
rawAdiBuffer, rawAdiBuffer,
@ -623,16 +663,26 @@ var g_isGettingLOTW = false;
function grabLOtWLog(test) function grabLOtWLog(test)
{ {
if (g_isGettingLOTW == false) var dLoTWQSO = Date.parse(g_adifLogSettings.lastFetch.lotw_qso);
var dLoTWQSL = Date.parse(g_adifLogSettings.lastFetch.lotw_qsl);
var tmpDate = ((new Date().getTime()) - 300);
// Be nice to LoTW and only fetch if last fetch was > 5 mins ago
if ((g_isGettingLOTW == false) &&
(((isNaN(dLoTWQSO) == false) && (dLoTWQSO < tmpDate)) ||
((isNaN(dLoTWQSL) == false) && (dLoTWQSL < tmpDate))
))
{ {
var lastQSLDateString = var lastQSLDateString =
"&qso_qsorxsince=1945-01-01&qso_qslsince=1945-01-01"; "&qso_qsorxsince=" + g_adifLogSettings.lastFetch.lotw_qso +
"&qso_qslsince=" + g_adifLogSettings.lastFetch.lotw_qsl;
if (test == true) if (test == true)
{ {
lotwTestResult.innerHTML = "Testing"; lotwTestResult.innerHTML = "Testing";
lastQSLDateString = "&qso_qsosince=2100-01-01"; lastQSLDateString = "&qso_qsosince=2100-01-01";
} }
// Fetch QSOs
getABuffer( getABuffer(
"https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" + "https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" +
lotwLogin.value + lotwLogin.value +
@ -648,6 +698,27 @@ function grabLOtWLog(test)
"g_isGettingLOTW", "g_isGettingLOTW",
120000 120000
); );
// Fetch QSLs
var tQSO = setTimeout(function()
{
if (test == false) lotwLogLoaded = true;
getABuffer(
"https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" +
lotwLogin.value +
"&password=" +
encodeURIComponent(lotwPassword.value) +
"&qso_query=1&qso_qsl=yes&qso_qsldetail=yes&qso_withown=yes" +
lastQSLDateString,
lotwCallback,
test,
"https",
443,
lotwLogImg,
"g_isGettingLOTW",
120000
);
}, 10000);
} }
} }
@ -1005,6 +1076,22 @@ function loadGtQSOLogFile()
} }
} }
var lotwLogLoaded = false;
function loadLoTWLogFile()
{
var fs = require("fs");
if (fs.existsSync(g_LoTWLogFile))
{
var rawAdiBuffer = fs.readFileSync(g_LoTWLogFile);
g_fromDirectCallNoFileDialog = true;
onAdiLoadComplete(rawAdiBuffer, false);
lotwLogLoaded = true;
}
}
function loadWsjtLogFile() function loadWsjtLogFile()
{ {
var fs = require("fs"); var fs = require("fs");
@ -1297,8 +1384,11 @@ function startupAdifLoadCheck()
{ {
if (g_appSettings.gtFlagImgSrc == 1) showGtFlags(); if (g_appSettings.gtFlagImgSrc == 1) showGtFlags();
// Commented out to stop execution on startup if (loadLOTWCheckBox.checked == true)
// if (loadLOTWCheckBox.checked == true) grabLOtWLog(false); {
loadLoTWLogFile();
grabLOtWLog(false);
}
if (loadQRZCheckBox.checked == true) grabQrzComLog(false); if (loadQRZCheckBox.checked == true) grabQrzComLog(false);

Wyświetl plik

@ -1,261 +1,265 @@
var validSettings = [ var validSettings = [
"HRDLogbookLogSettings", "HRDLogbookLogSettings",
"N1MMSettings", "N1MMSettings",
"acLogSettings", "acLogSettings",
"adifLogSettings", "adifLogSettings",
"alertSettings", "alertSettings",
"appSettings", "appSettings",
"audioSettings", "audioSettings",
"awardTracker", "awardTracker",
"bandActivity", "bandActivity",
"blockedCQ", "blockedCQ",
"blockedCalls", "blockedCalls",
"blockedDxcc", "blockedDxcc",
"callsignLookups", "callsignLookups",
"classicAlerts", "classicAlerts",
"classicAlertsVersion", "classicAlertsVersion",
"currentVersion", "currentVersion",
"dxkLogSettings", "dxkLogSettings",
"log4OMSettings", "log4OMSettings",
"mapMemory", "mapMemory",
"mapSettings", "mapSettings",
"msgSettings", "msgSettings",
"receptionSettings", "receptionSettings",
"rosterSettings", "rosterSettings",
"savedAlerts", "savedAlerts",
"speechSettings", "speechSettings",
"startupLogs", "startupLogs",
"trustedQslSettings", "trustedQslSettings",
"screenSettings", "screenSettings",
"legendColors" "legendColors"
]; ];
var def_appSettings = { var def_appSettings = {
alertMute: 0, alertMute: 0,
rosterAlwaysOnTop: false, rosterAlwaysOnTop: false,
centerGridsquare: "", centerGridsquare: "",
chatUUID: "", chatUUID: "",
crScript: 0, crScript: 0,
distanceUnit: "MI", distanceUnit: "MI",
earthImgSrc: 0, earthImgSrc: 0,
gridViewMode: 3, gridViewMode: 3,
gridsquareDecayTime: 300, gridsquareDecayTime: 300,
gtAgree: "", gtAgree: "",
gtBandFilter: "", gtBandFilter: "",
gtFlagImgSrc: 0, gtFlagImgSrc: 0,
gtModeFilter: "", gtModeFilter: "",
gtPropFilter: "mixed", gtPropFilter: "mixed",
gtMsgEnable: true, gtMsgEnable: true,
gtShareEnable: true, gtShareEnable: true,
heatEnabled: 0, heatEnabled: 0,
loadAdifAtStartup: false, loadAdifAtStartup: false,
lookupLoginCq: "", lookupLoginCq: "",
lookupLoginQrz: "", lookupLoginQrz: "",
lookupLoginQth: "", lookupLoginQth: "",
lookupOnTx: false, lookupOnTx: false,
lookupCloseLog: false, lookupCloseLog: false,
lookupMerge: true, lookupMerge: true,
lookupMissingGrid: false, lookupMissingGrid: false,
lookupPasswordCq: "", lookupPasswordCq: "",
lookupPasswordQrz: "", lookupPasswordQrz: "",
lookupPasswordQth: "", lookupPasswordQth: "",
lookupService: "CALLOOK", lookupService: "CALLOOK",
lookupCallookPreferred: false, lookupCallookPreferred: false,
moonPath: 0, moonPath: 0,
moonTrack: 0, moonTrack: 0,
mouseTrack: 0, mouseTrack: 0,
multicast: false, multicast: false,
myBand: "OOB", myBand: "OOB",
myDEGrid: "", myDEGrid: "",
myDEcall: "NOCALL", myDEcall: "NOCALL",
myMode: "", myMode: "",
myRawCall: "NOCALL", myRawCall: "NOCALL",
myRawFreq: "", myRawFreq: "",
myRawGrid: "", myRawGrid: "",
pathWidthWeight: 1.0, pathWidthWeight: 1.0,
pushPinMode: false, pushPinMode: false,
qrzPathWidthWeight: 1.2, qrzPathWidthWeight: 1.2,
sixWideMode: 0, sixWideMode: 0,
savedAppData: null, savedAppData: null,
soundCard: "default", soundCard: "default",
spotsEnabled: 0, spotsEnabled: 0,
stopAskingVersion: false, stopAskingVersion: false,
useLocalTime: 0, useLocalTime: 0,
wsjtForwardUdpEnable: false, wsjtForwardUdpEnable: false,
wsjtForwardUdpIp: "127.0.0.1", wsjtForwardUdpIp: "127.0.0.1",
wsjtForwardUdpPort: 2238, wsjtForwardUdpPort: 2238,
wsjtIP: "", wsjtIP: "",
wsjtUdpPort: 0, wsjtUdpPort: 0,
workingCallsignEnable: false, workingCallsignEnable: false,
workingCallsigns: {}, workingCallsigns: {},
workingDateEnable: false, workingDateEnable: false,
workingDate: 0, workingDate: 0,
gtSpotEnable: true gtSpotEnable: true
}; };
var def_mapSettings = { var def_mapSettings = {
animate: true, animate: true,
animateSpeed: 4, animateSpeed: 4,
CQhilite: true, CQhilite: true,
fitQRZ: false, fitQRZ: false,
focusRig: true, focusRig: true,
gridAlpha: 136, gridAlpha: 136,
haltAllOnTx: true, haltAllOnTx: true,
legend: true, legend: true,
longitude: 0.0, longitude: 0.0,
latitude: 0.0, latitude: 0.0,
loudness: 1, loudness: 1,
mapIndex: 19, mapIndex: 19,
mergeOverlay: false, mergeOverlay: false,
mouseOver: true, mouseOver: true,
nightLoudness: 0.8, nightLoudness: 0.8,
nightMapEnable: false, nightMapEnable: false,
nightMapIndex: 20, nightMapIndex: 20,
nightPathColor: 361, nightPathColor: 361,
nightQrzPathColor: 1, nightQrzPathColor: 1,
offlineMode: false, offlineMode: false,
pathColor: 0, pathColor: 0,
qrzDxccFallback: false, qrzDxccFallback: false,
qrzPathColor: 1, qrzPathColor: 1,
rosterTime: 120, rosterTime: 120,
shadow: 0.1, shadow: 0.1,
splitQSL: true, splitQSL: true,
strikes: false, strikes: false,
strikesAlert: 2, strikesAlert: 2,
strikesGlobal: false, strikesGlobal: false,
strikesNotify: false, strikesNotify: false,
trafficDecode: true, trafficDecode: true,
usNexrad: false, usNexrad: false,
zoom: 4, zoom: 4,
mapTrans: 0.5 mapTrans: 0.5
}; };
var def_adifLogSettings = { var def_adifLogSettings = {
menu: { menu: {
buttonAdifCheckBox: false, buttonAdifCheckBox: false,
buttonClubCheckBox: false, buttonClubCheckBox: false,
buttonLOTWCheckBox: false, buttonLOTWCheckBox: false,
buttonQRZCheckBox: false, buttonQRZCheckBox: false,
buttonPsk24CheckBox: true buttonPsk24CheckBox: true
}, },
startup: { startup: {
loadAdifCheckBox: false, loadAdifCheckBox: false,
loadPsk24CheckBox: false, loadPsk24CheckBox: false,
loadQRZCheckBox: false, loadQRZCheckBox: false,
loadLOTWCheckBox: false, loadLOTWCheckBox: false,
loadClubCheckBox: false, loadClubCheckBox: false,
loadGTCheckBox: true loadGTCheckBox: true
}, },
qsolog: { qsolog: {
logQRZqsoCheckBox: false, logQRZqsoCheckBox: false,
logGTqsoCheckBox: true, logGTqsoCheckBox: true,
logLOTWqsoCheckBox: false, logLOTWqsoCheckBox: false,
logHRDLOGqsoCheckBox: false, logHRDLOGqsoCheckBox: false,
logClubqsoCheckBox: false, logClubqsoCheckBox: false,
logCloudlogQSOCheckBox: false, logCloudlogQSOCheckBox: false,
logeQSLQSOCheckBox: false logeQSLQSOCheckBox: false
}, },
nickname: { nickname: {
nicknameeQSLCheckBox: false nicknameeQSLCheckBox: false
}, },
text: { text: {
lotwLogin: "", lotwLogin: "",
clubCall: "", clubCall: "",
clubEmail: "", clubEmail: "",
clubPassword: "", clubPassword: "",
lotwPassword: "", lotwPassword: "",
lotwTrusted: "", lotwTrusted: "",
lotwStation: "", lotwStation: "",
qrzApiKey: "", qrzApiKey: "",
HRDLOGCallsign: "", HRDLOGCallsign: "",
HRDLOGUploadCode: "", HRDLOGUploadCode: "",
CloudlogURL: "http://127.0.0.1/index.php/api/qso", CloudlogURL: "http://127.0.0.1/index.php/api/qso",
CloudlogAPI: "", CloudlogAPI: "",
eQSLUser: "", eQSLUser: "",
eQSLPassword: "", eQSLPassword: "",
eQSLNickname: "" eQSLNickname: ""
}, },
downloads: {} downloads: {},
}; lastFetch: {
lotw_qso: "1970-01-01",
var def_msgSettings = { lotw_qsl: "1970-01-01"
msgAlertSelect: 1, }
msgAlertWord: "New chat message", };
msgAlertMedia: "none",
msgFrequencySelect: 0, var def_msgSettings = {
msgActionSelect: 1, msgAlertSelect: 1,
msgAwaySelect: 0, msgAlertWord: "New chat message",
msgAwayText: "I am away from the shack at the moment" msgAlertMedia: "none",
}; msgFrequencySelect: 0,
msgActionSelect: 1,
var def_receptionSettings = { msgAwaySelect: 0,
lastSequenceNumber: "0", // Treat as a string, it's friggin big msgAwayText: "I am away from the shack at the moment"
lastDownloadTimeSec: 0, };
viewHistoryTimeSec: 900,
viewPaths: false, var def_receptionSettings = {
pathColor: -1, lastSequenceNumber: "0", // Treat as a string, it's friggin big
pathNightColor: 361, lastDownloadTimeSec: 0,
spotWidth: 0.8, viewHistoryTimeSec: 900,
mergeSpots: true viewPaths: false,
}; pathColor: -1,
pathNightColor: 361,
var def_N1MMSettings = { spotWidth: 0.8,
enable: false, mergeSpots: true
port: 2333, };
ip: "127.0.0.1"
}; var def_N1MMSettings = {
var def_log4OMSettings = { enable: false,
enable: false, port: 2333,
port: 2236, ip: "127.0.0.1"
ip: "127.0.0.1" };
}; var def_log4OMSettings = {
var def_dxkLogSettings = { enable: false,
enable: false, port: 2236,
port: 52000, ip: "127.0.0.1"
ip: "127.0.0.1" };
}; var def_dxkLogSettings = {
var def_HRDLogbookLogSettings = { enable: false,
enable: false, port: 52000,
port: 7826, ip: "127.0.0.1"
ip: "127.0.0.1" };
}; var def_HRDLogbookLogSettings = {
var def_acLogSettings = { enable: false,
enable: false, port: 7826,
port: 1100, ip: "127.0.0.1"
ip: "127.0.0.1" };
}; var def_acLogSettings = {
var def_trustedQslSettings = { enable: false,
stationFile: "", port: 1100,
stationFileValid: false, ip: "127.0.0.1"
binaryFile: "", };
binaryFileValid: false var def_trustedQslSettings = {
}; stationFile: "",
var def_callsignLookups = { stationFileValid: false,
lotwUseEnable: true, binaryFile: "",
lotwWeeklyEnable: true, binaryFileValid: false
lotwLastUpdate: 0, };
eqslUseEnable: true, var def_callsignLookups = {
eqslWeeklyEnable: true, lotwUseEnable: true,
eqslLastUpdate: 0, lotwWeeklyEnable: true,
ulsUseEnable: true, lotwLastUpdate: 0,
ulsWeeklyEnable: true, eqslUseEnable: true,
ulsLastUpdate: 0, eqslWeeklyEnable: true,
oqrsUseEnable: false, eqslLastUpdate: 0,
oqrsWeeklyEnable: false, ulsUseEnable: true,
oqrsLastUpdate: 0 ulsWeeklyEnable: true,
}; ulsLastUpdate: 0,
oqrsUseEnable: false,
var def_bandActivity = { oqrsWeeklyEnable: false,
lastUpdate: {}, oqrsLastUpdate: 0
lines: {} };
};
var def_bandActivity = {
var def_legendColors = { lastUpdate: {},
QSO: "#EEEE00", lines: {}
QSL: "#EE0000", };
QSX: "#1111EE",
CQ: "#00FF00", var def_legendColors = {
CQDX: "#00FFFF", QSO: "#EEEE00",
QRZ: "#FFFF00", QSL: "#EE0000",
QTH: "#FFA600" QSX: "#1111EE",
}; CQ: "#00FF00",
CQDX: "#00FFFF",
QRZ: "#FFFF00",
QTH: "#FFA600"
};

Wyświetl plik

@ -505,6 +505,7 @@ var g_NWappData = "";
var g_screenshotDir = ""; var g_screenshotDir = "";
var g_scriptDir = ""; var g_scriptDir = "";
var g_qsoLogFile = ""; var g_qsoLogFile = "";
var g_LoTWLogFile = "";
var g_userMediaDir = ""; var g_userMediaDir = "";
var g_gtMediaDir = path.resolve("./media"); var g_gtMediaDir = path.resolve("./media");
var g_localeString = navigator.language; var g_localeString = navigator.language;
@ -5131,6 +5132,8 @@ function clearLogFilesAndCounts()
tryToDeleteLog("qrz.adif"); tryToDeleteLog("qrz.adif");
tryToDeleteLog("clublog.adif"); tryToDeleteLog("clublog.adif");
g_adifLogSettings.downloads = {}; g_adifLogSettings.downloads = {};
g_adifLogSettings.lastFetch.lotw_qso = "1940-01-01";
g_adifLogSettings.lastFetch.lotw_qsl = "1940-01-01";
localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings); localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings);
} }
@ -15890,6 +15893,7 @@ function mediaCheck()
g_scriptDir += g_dirSeperator; g_scriptDir += g_dirSeperator;
g_qsoLogFile = path.join(g_appData, "GridTracker_QSO.adif"); g_qsoLogFile = path.join(g_appData, "GridTracker_QSO.adif");
g_LoTWLogFile = path.join(g_appData, "lotw.adif");
logEventMedia.appendChild(newOption("none", "None")); logEventMedia.appendChild(newOption("none", "None"));
msgAlertMedia.appendChild(newOption("none", "Select File")); msgAlertMedia.appendChild(newOption("none", "Select File"));