From 9ccdd745dc660689f5dfb9b35bf22c1e24a0f8fd Mon Sep 17 00:00:00 2001 From: 30hours Date: Sun, 18 Feb 2024 12:26:17 +0000 Subject: [PATCH] Fix localhost check, cleanup front end and favicon --- html/controller/index.html | 3 ++- .../detection/delay-doppler/index.html | 1 + html/display/detection/delay/index.html | 1 + html/display/detection/doppler/index.html | 1 + html/display/map/index.html | 1 + html/display/maxhold/index.html | 1 + html/display/spectrum/index.html | 1 + html/display/timing/index.html | 1 + html/favicon.ico | 1 + html/favicon/favicon-128x128.png | Bin 0 -> 4173 bytes html/favicon/favicon-16x16.png | Bin 0 -> 480 bytes html/favicon/favicon-196x196.png | Bin 0 -> 6817 bytes html/favicon/favicon-32x32.png | Bin 0 -> 975 bytes html/index.html | 5 +++++ html/js/common.js | 18 +++++++++++++++++ html/js/plot_detection.js | 6 ++---- html/js/plot_map.js | 19 ++++++++---------- html/js/plot_spectrum.js | 8 +++----- html/js/plot_timing.js | 8 +++----- 19 files changed, 49 insertions(+), 26 deletions(-) create mode 120000 html/favicon.ico create mode 100644 html/favicon/favicon-128x128.png create mode 100644 html/favicon/favicon-16x16.png create mode 100644 html/favicon/favicon-196x196.png create mode 100644 html/favicon/favicon-32x32.png create mode 100644 html/js/common.js diff --git a/html/controller/index.html b/html/controller/index.html index 24818c9..c30ee9f 100644 --- a/html/controller/index.html +++ b/html/controller/index.html @@ -63,10 +63,11 @@ + + diff --git a/html/display/detection/delay/index.html b/html/display/detection/delay/index.html index 18536d0..3c2ef75 100644 --- a/html/display/detection/delay/index.html +++ b/html/display/detection/delay/index.html @@ -25,5 +25,6 @@ xVariable = "timestamp"; yVariable = "delay"; + diff --git a/html/display/detection/doppler/index.html b/html/display/detection/doppler/index.html index a2d0fb7..d561787 100644 --- a/html/display/detection/doppler/index.html +++ b/html/display/detection/doppler/index.html @@ -25,5 +25,6 @@ xVariable = "timestamp"; yVariable = "doppler"; + diff --git a/html/display/map/index.html b/html/display/map/index.html index 99ac529..02ab703 100644 --- a/html/display/map/index.html +++ b/html/display/map/index.html @@ -22,5 +22,6 @@ + diff --git a/html/display/maxhold/index.html b/html/display/maxhold/index.html index fa42161..5f08382 100644 --- a/html/display/maxhold/index.html +++ b/html/display/maxhold/index.html @@ -22,5 +22,6 @@ + diff --git a/html/display/spectrum/index.html b/html/display/spectrum/index.html index 0c0191b..4eefcfc 100644 --- a/html/display/spectrum/index.html +++ b/html/display/spectrum/index.html @@ -21,6 +21,7 @@ + diff --git a/html/display/timing/index.html b/html/display/timing/index.html index c332809..aa831af 100644 --- a/html/display/timing/index.html +++ b/html/display/timing/index.html @@ -23,5 +23,6 @@ xTitle = "Timestamp"; yTitle = "Time (ms)"; + diff --git a/html/favicon.ico b/html/favicon.ico new file mode 120000 index 0000000..8a5cf41 --- /dev/null +++ b/html/favicon.ico @@ -0,0 +1 @@ +./favicon/favicon-32x32.png \ No newline at end of file diff --git a/html/favicon/favicon-128x128.png b/html/favicon/favicon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..8102ac5901f3da8306a08e7132ac3306d5db5f5c GIT binary patch literal 4173 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 literal 0 HcmV?d00001 diff --git a/html/favicon/favicon-32x32.png b/html/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..8e206b3eddd44c896b130a176eb21690c5f4ed8e GIT binary patch literal 975 zcmV;=12FuFP)hDWm0e}aBPJQ+@k3t8#CSH%c!pn|gF(hC#>fmMNuHx* zYZxk}L0c+Hsa9;N-PP9antNo2+MOwW__OENJ?GwY?{~g)&$*YQI=oni|0o<2022cy z222bXV?d+T;oP$-q!xdGwD}vfIvt!WEf6%;2Af5ma2q-FkM^bP(%^WW6xT~@Q72bG zz~dpn$qI>K-k3Jd)@Z9U*ofHS(J2x_A#DR$@;A4 zayYoQJQ$Hajt2KK2q5KoHP)pSl7o-kaBLI%z(T;snWt5_U;c^gfi5GFyM6|ZFBiT? z+_mR4p6%^`Ez`a5QLe;>8%1dE?1IDa!6@H87Xlu)4+w(*Hf9td?_D!3z8VuuAeeM? zcEfJh4KRkREzD5AcRty}Pv;`PS_VFsgStKQF~VFx_T6{Oa47dJjc=_MBHYuye*lan z?2DokPJ3=brvoOBv4&)Wn84WXOovjffuFr4UTmGIcfVKu3DFlMq%#(GNB9jKfUNyH z${JhI_)Uf6f=ZM&$YI9kB4d>hq2ouPrQ;_kCSnhJWW@^ghrDW#W9rcdq%Zb&#>J(9 z0|$^+T8CvKt!Jq^}J5 zHvr6=$K@b&yd9232VkuA5LA9{$AklS3<8kK+AygH0IPzu6@LMM?aXrCqWF%CvX4l} zd`V@;`aogAOtdQ1aNT!{0L*Z=!|gR9eUvO+fjuc$65xWAB~$yy06VZ%rG{LkrYL`x zMVAVY^}3!+IqSj@=wbt#9qCZ0yD2Tj3A6Oev)?pe;l+H?cSZPNyV$3H0G#(`f?Yli z2Poe*7tU4|dPi|`4hm{Mlg^@LQAeK5Lr!HArKdJ2ib|A8Vpa)GNGfQ2e{Cp)ZhbqV z!9Ktm2y4SkJZy(yqtF9Z=4NTaSb*y#wTMZ5M(byJIbf5>6E$Bt zu;pekR9zZMS83vG0@zy&0{E)zMA)euNSoXGIQ%jkiSkE$usf+NWeZXyV0GVH7|`3X zB7_)u4~%|FS=T$6UxCcBdc13CgSuNw)J_>=jrb6Eh}=f~ah6)6#j!joQj6ZBR<3}# xfKPA5j&NU0bR1zc5Yw;N#DIwb69fO9fgitSr*NkDRp0;s002ovPDHLkV1i2x#+Lv9 literal 0 HcmV?d00001 diff --git a/html/index.html b/html/index.html index e15a579..2f7c982 100644 --- a/html/index.html +++ b/html/index.html @@ -4,6 +4,10 @@ blah2 + + + + @@ -41,6 +45,7 @@ + diff --git a/html/js/common.js b/html/js/common.js new file mode 100644 index 0000000..02f5c1d --- /dev/null +++ b/html/js/common.js @@ -0,0 +1,18 @@ +function is_localhost(ip) { + + if (ip === 'localhost') { + return true; + } + + const localRanges = ['127.0.0.1', '192.168.0.0/16', '10.0.0.0/8', '172.16.0.0/12']; + + const ipToInt = ip => ip.split('.').reduce((acc, octet) => (acc << 8) + +octet, 0) >>> 0; + + return localRanges.some(range => { + const [rangeStart, rangeSize = 32] = range.split('/'); + const start = ipToInt(rangeStart); + const end = (start | (1 << (32 - +rangeSize))) >>> 0; + return ipToInt(ip) >= start && ipToInt(ip) <= end; + }); + +} \ No newline at end of file diff --git a/html/js/plot_detection.js b/html/js/plot_detection.js index c8d6c78..5c50625 100644 --- a/html/js/plot_detection.js +++ b/html/js/plot_detection.js @@ -1,7 +1,7 @@ -var timestamp = -1; +var timestamp; var nRows = 3; var host = window.location.hostname; -var isLocalHost = (host === "localhost" || host === "127.0.0.1" || host === "192.168.0.112"); +var isLocalHost = is_localhost(host); var range_x = []; var range_y = []; @@ -18,8 +18,6 @@ if (isLocalHost) { } else { urlDetection = '//' + host + '/stash/detection'; } -urlTimestamp = urlTimestamp + '?timestamp=' + Date.now(); -urlDetection = urlDetection + '?timestamp=' + Date.now(); // setup plotly var layout = { diff --git a/html/js/plot_map.js b/html/js/plot_map.js index 690d91e..a2e0517 100644 --- a/html/js/plot_map.js +++ b/html/js/plot_map.js @@ -1,7 +1,7 @@ var timestamp = -1; var nRows = 3; var host = window.location.hostname; -var isLocalHost = (host === "localhost" || host === "127.0.0.1" || host === "192.168.0.112"); +var isLocalHost = is_localhost(host); var range_x = []; var range_y = []; @@ -36,20 +36,17 @@ if (isLocalHost) { } else { urlConfig = '//' + host + '/api/config'; } -urlTimestamp = urlTimestamp + '?timestamp=' + Date.now(); -urlDetection = urlDetection + '?timestamp=' + Date.now(); -urlMap = urlMap + '?timestamp=' + Date.now(); // get truth flag var isTruth = false; -var configData = $.getJSON(urlConfig, function () { }) +$.getJSON(urlConfig, function () { }) .done(function (data_config) { if (data_config.truth.adsb.enabled === true) { isTruth = true; - var adsbLinkData = $.getJSON(urlAdsbLink, function () { }) + $.getJSON(urlAdsbLink, function () { }) .done(function (data) { urlAdsb = data.url; - if (window.location.protocol === 'https:') { + if (!is_localhost(new URL(urlAdsb).hostname)) { urlAdsb = urlAdsb.replace(/^http:/, 'https:'); } }) @@ -120,21 +117,21 @@ Plotly.newPlot('data', data, layout, config); var intervalId = window.setInterval(function () { // check if timestamp is updated - var timestampData = $.get(urlTimestamp, function () { }) + $.get(urlTimestamp, function () { }) .done(function (data) { if (timestamp != data) { timestamp = data; // get detection data (no detection lag) - var detectionData = $.getJSON(urlDetection, function () { }) + $.getJSON(urlDetection, function () { }) .done(function (data_detection) { detection = data_detection; }); // get ADS-B data if enabled in config if (isTruth) { - var adsbData = $.getJSON(urlAdsb, function () { }) + $.getJSON(urlAdsb, function () { }) .done(function (data_adsb) { adsb['delay'] = []; adsb['doppler'] = []; @@ -150,7 +147,7 @@ var intervalId = window.setInterval(function () { } // get new map data - var apiData = $.getJSON(urlMap, function () { }) + $.getJSON(urlMap, function () { }) .done(function (data) { // case draw new plot diff --git a/html/js/plot_spectrum.js b/html/js/plot_spectrum.js index bddde12..1839a6b 100644 --- a/html/js/plot_spectrum.js +++ b/html/js/plot_spectrum.js @@ -1,7 +1,7 @@ var timestamp = -1; var nRows = 3; var host = window.location.hostname; -var isLocalHost = (host === "localhost" || host === "127.0.0.1" || host === "192.168.0.112"); +var isLocalHost = is_localhost(host); var range_x = []; var range_y = []; @@ -18,8 +18,6 @@ if (isLocalHost) { } else { urlMap = '//' + host + '/stash/iqdata'; } -urlTimestamp = urlTimestamp + '?timestamp=' + Date.now(); -urlMap = urlMap + '?timestamp=' + Date.now(); // setup plotly var layout = { @@ -82,14 +80,14 @@ Plotly.newPlot('data', data, layout, config); var intervalId = window.setInterval(function () { // check if timestamp is updated - var timestampData = $.get(urlTimestamp, function () { }) + $.get(urlTimestamp, function () { }) .done(function (data) { if (timestamp != data) { timestamp = data; // get new map data - var apiData = $.getJSON(urlMap, function () { }) + $.getJSON(urlMap, function () { }) .done(function (data) { // case draw new plot diff --git a/html/js/plot_timing.js b/html/js/plot_timing.js index ede471a..2d503c4 100644 --- a/html/js/plot_timing.js +++ b/html/js/plot_timing.js @@ -1,7 +1,7 @@ var timestamp = -1; var nRows = 3; var host = window.location.hostname; -var isLocalHost = (host === "localhost" || host === "127.0.0.1" || host === "192.168.0.112"); +var isLocalHost = is_localhost(host); // setup API var urlTimestamp; @@ -16,8 +16,6 @@ if (isLocalHost) { } else { urlTiming = '//' + host + '/stash/timing'; } -urlTimestamp = urlTimestamp + '?timestamp=' + Date.now(); -urlTiming = urlTiming + '?timestamp=' + Date.now(); // setup plotly var layout = { @@ -89,14 +87,14 @@ Plotly.newPlot('data', data, layout, config); var intervalId = window.setInterval(function () { // check if timestamp is updated - var timestampData = $.get(urlTimestamp, function () { }) + $.get(urlTimestamp, function () { }) .done(function (data) { if (timestamp != data) { timestamp = data; // get new data - var apiData = $.getJSON(urlTiming, function () { }) + $.getJSON(urlTiming, function () { }) .done(function (data) { // case draw new plot