templates and build

This commit is contained in:
coulisse 2021-11-18 16:41:49 +00:00
parent 6ad18664c5
commit fd4a47e9ed
17 changed files with 430 additions and 701 deletions

View File

@ -3,4 +3,4 @@
## Reporting a Vulnerability ## Reporting a Vulnerability
Reporting a Vulnerability Reporting a Vulnerability
Please report (suspected) security vulnerabilities to <corrado.gerbaldo@gmail.com> . Please report (suspected) security vulnerabilities to <corrado.gerbaldo@gmail.com> .
You will receive a response as soon as possible. If the issue is confirmed, we will release a patch. You will receive a response as soon as possible. If the issue is confirmed, we will try to release a patch.

View File

@ -1,8 +1,9 @@
### Change log ### Change log
13/11/2021: 2.0.3 xx/xx/2021: 2.1
- jquery upgraded to 3.6 - jquery upgraded to 3.6
- bootstrap upgraded to 5.0.2 - bootstrap upgraded to 5.0.2
- managed connection error to telnet host - managed connection error to telnet host
- used a base template in order to put all csv/scripts on a page
___ ___
16/05/2021: 2.0.2 16/05/2021: 2.0.2
- Fixed frequency mode on 40 meters - Fixed frequency mode on 40 meters

30
scripts/build.sh Executable file
View File

@ -0,0 +1,30 @@
path_templates='../templates'
base_template='_base.html'
path_static_html='../static/html'
echo '*** SPIDERWEB building process ***'
echo 'get version from git'
ver=`git tag|tail -1`
if [ "$?" != "0" ]; then
echo 'ERROR on get version from git'
exit 1
fi
if [ ${ver} == "" ]; then
echo 'ERROR git version is empty'
exit 1
fi
echo 'version: '${ver}
echo 'writing version in '${base_template} '...'
sed -i 's/<span id="version">v.*<\/span>/<span id="version">'$ver'<\/span>/g' ${path_templates}/${base_template}
if [ "$?" != "0" ]; then
echo 'ERROR writing version in '${base_template}
exit 1
fi
echo 'generating static pages...'
staticjinja build --srcpath=${path_static_html}/templates/ --outpath=${path_static_html}/
if [ "$?" != "0" ]; then
echo 'ERROR generating static pages'
exit 1
fi

View File

@ -1,44 +1,53 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta name="robots" content="noindex, nofollow">
<title>DX Cluster from IU1BOW</title> <title>DX Cluster from IU1BOW: OFFLINE</title>
<!-- page generated by staticjinja -->
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="description" content="Amateur Radio DX Cluster online, iPhone, Android, Telnet, spots search"> <meta name="description" content="Amateur Radio DX Cluster online, Telnet, spots search">
<meta name="keywords" content=", ham radio dx cluster, telnet dx cluster, hf dx cluster, dx cluster search, vhf dx cluster, dxfun, dx cluster live, DX spots, dxfuncluster, dxfun cluster, cluster, radio, dx, ham cluster, webcluster, dxcc, iPhone cluster, dx cluster, dx info, locators, grid squares, grid locator, locator, cq, itu, qrz, entity, most wanted, callbook, qrz.com, ham radio, dx contest, amateur radio, spots, search spot, spot, cluster en tu web, lotw, log of the word, propagacion, ham, reportes, reports, propagation, bandas, band, ssb, cw, usb, lsb, fm, am, rtty, psk, psk31, qsl, qth, qso, real time spots, spots en tiempo real, dx spot, dx spots, qsl manager, qsl via, wpx, cqwwdx, iPhone Cluster"> <meta name="keywords" content=", ham radio dx cluster, telnet dx cluster, hf dx cluster, dx cluster search, vhf dx cluster, dxfun, dx cluster live, DX spots, dxfuncluster, dxfun cluster, cluster, radio, dx, ham cluster, webcluster, dxcc, dx cluster, dx info, locators, grid squares, grid locator, locator, cq, itu, qrz, entity, most wanted, callbook, qrz.com, ham radio, dx contest, amateur radio, spots, search spot, spot, cluster en tu web, lotw, log of the word, propagacion, ham, reportes, reports, propagation, bandas, band, ssb, cw, usb, lsb, fm, am, rtty, psk, psk31, qsl, qth, qso, real time spots, spots en tiempo real, dx spot, dx spots, qsl manager, qsl via, wpx, cqwwdx">
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0"> <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0">
<meta name="theme-color" content="#2196f3"> <meta name="theme-color" content="#2196f3">
<link rel="shortcut icon" href="/static/favicon.png"> <link rel="shortcut icon" href="/static/favicon.png">
<link rel="manifest" href="/static/manifest.json"> <link rel="manifest" href="/static/manifest.json">
<link rel="apple-touch-icon" href="/static/images/icons/icon-apple.png"> <link rel="apple-touch-icon" href="/static/images/icons/icon-apple.png">
<link rel="stylesheet" href="/static/css/min/style.min.css"> <link rel="stylesheet" href="/static/css/min/style.min.css">
<link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" as="style" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" onload="this.rel='stylesheet'"> <link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" as="style" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"></noscript> <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"></noscript>
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.1/css/flag-icon.min.css" as="style" integrity="sha512-RYqXH3Tn/sC/iuKrQ0idMEQFSU7HEuPpQDhd/kzsIkE/1WxG43RN2RGp9bx2sX/Gdh1G0Gn3zActuCHqE4t6rg==" crossorigin="anonymous" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.1/css/flag-icon.min.css"></noscript>
<script>
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
!function(a){"use strict";var b=function(b,c,d){function j(a){if(e.body)return a();setTimeout(function(){j(a)})}function l(){f.addEventListener&&f.removeEventListener("load",l),f.media=d||"all"}var g,e=a.document,f=e.createElement("link");if(c)g=c;else{var h=(e.body||e.getElementsByTagName("head")[0]).childNodes;g=h[h.length-1]}var i=e.styleSheets;f.rel="stylesheet",f.href=b,f.media="only x",j(function(){g.parentNode.insertBefore(f,c?g:g.nextSibling)});var k=function(a){for(var b=f.href,c=i.length;c--;)if(i[c].href===b)return a();setTimeout(function(){k(a)})};return f.addEventListener&&f.addEventListener("load",l),f.onloadcssdefined=k,k(l),f};"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b}("undefined"!=typeof global?global:this);
/*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */
!function(a){if(a.loadCSS){var b=loadCSS.relpreload={};if(b.support=function(){try{return a.document.createElement("link").relList.supports("preload")}catch(a){return!1}},b.poly=function(){for(var b=a.document.getElementsByTagName("link"),c=0;c<b.length;c++){var d=b[c];"preload"===d.rel&&"style"===d.getAttribute("as")&&(a.loadCSS(d.href,d,d.getAttribute("media")),d.rel=null)}},!b.support()){b.poly();var c=a.setInterval(b.poly,300);a.addEventListener&&a.addEventListener("load",function(){b.poly(),a.clearInterval(c)}),a.attachEvent&&a.attachEvent("onload",function(){a.clearInterval(c)})}}}(this);
</script>
</head> </head>
<body> <body>
<header> <header>
<!-- nav bar --> <!-- nav bar -->
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark"> <nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="/"> <a class="navbar-brand" href="/">
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt=""> <img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
Offline
</a> </a>
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01" > <button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01" >
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarToggler01"> <div class="collapse navbar-collapse" id="navbarToggler01">
<ul class="navbar-nav me-auto mb-2 mb-lg-0" > <ul class="navbar-nav me-auto mb-2 mb-lg-0" >
{% for dict_item in menu_list %}
<li class="nav-item">
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
{% if dict_item["external"] %}
target="blank" rel="noopener"
{% endif %}
>{{dict_item["label"]}}<span class="sr-only"></span></a>
</li>
{% endfor %}
</ul> </ul>
<form method="POST" class="d-flex" id="form-callsign" enctype="application/x-www-form-urlencoded" > <form method="POST" class="d-flex" id="form-callsign" enctype="application/x-www-form-urlencoded" >
<div class="input-group" id='input-group-callsign'> <div class="input-group" id='input-group-callsign'>
@ -53,108 +62,52 @@
</div> </div>
</div> </div>
</nav> </nav>
</header> </header>
<!-- <div class="mt-1 ml-0 mr-0"> -->
<div class="container-fluid mt-1 ml-0 mr-0 px-0"> <div class="container-fluid mt-1 ml-0 mr-0 px-0">
<div class="ipcs bg-light p-4 rounded-lg m-2"> <div class="ipcs bg-light p-4 rounded-lg m-2">
<h1 class="display-4 text-white">WEB DX Cluster</h1>
<p class="lead text-light">Spots list</p> <h1 class="display-4 text-white">WEB DX Cluster</h1>
<p class="text-light">&nbsp</p> <p class="lead text-light">Spots list</p>
<p class="text-light">&nbsp</p>
<p class="text-light">Telnet access: <a href="telnet://" class="text-white"></a></p>
<p class="text-light">For connect your cluster, write to <a href="mailto:?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white"></a></p>
</div> </div>
<div class="row mx-auto justify-content-between align-middle">
<div class="mx-auto">
<button class="btn btn-primary btn-sm" type="button" data-bs-toggle="collapse" data-bs-target="#collapseFilters" aria-expanded="false" aria-controls="collapseFilters" aria-label="filter">
<span class="filter" aria-label="filter"></span>
</button>
</div>
</div>
<div class="row mx-auto">
<!--Sidebar content-->
<div class="col-md-auto collapse rounded-sm" id="collapseFilters">
<form method="POST" id="form-filters" enctype="multipart/form-data" >
<select class="form-select" id="band" size="14" multiple>
<option selected value="SHF">SHF</option>
<option selected value="UHF">UHF</option>
<option selected value="VHF">VHF</option>
<option selected value="6">6m</option>
<option selected value="10">10m</option>
<option selected value="12">12m</option>
<option selected value="15">15m</option>
<option selected value="17">17m</option>
<option selected value="20">20m</option>
<option selected value="30">30m</option>
<option selected value="40">40m</option>
<option selected value="60">60m</option>
<option selected value="80">80m</option>
<option selected value="160">&gt;160m</option>
</select>
<p></p>
<div class="row">
<b>Mode</b>
</div>
<select class="form-select" id="mode" size="3" multiple>
<option selected value="cw">CW</option>
<option selected value="phone">PHONE</option>
<option selected value="digi">DIGI</option>
</select>
<p></p>
<div class="container"><div class="row"><div class="col"><b>DE</b></div><div class="col"><b>DX</b></div></div></div>
<div class="row">
<div class="col">
<select class="form-select" id="de_re" size="7" multiple>
<option selected value="EU">EU</option>
<option selected value="NA">NA</option>
<option selected value="AS">AS</option>
<option selected value="AF">AF</option>
<option selected value="OC">OC</option>
<option selected value="SA">SA</option>
<option selected value="AN">AN</option>
</select>
</div>
<div class="col">
<select class="form-select" id="dx_re" size="7" multiple>
<option selected value="EU">EU</option>
<option selected value="NA">NA</option>
<option selected value="AS">AS</option>
<option selected value="AF">AF</option>
<option selected value="OC">OC</option>
<option selected value="SA">SA</option>
<option selected value="AN">AN</option>
</select>
</div>
</div>
<p></p>
<button type="submit" class="btn btn-primary btn-block" aria-pressed="true" data-toggle="collapse" data-target="#collapseFilters" aria-expanded="false" aria-controls="collapseFilters" aria-label="filter">Search</button>
</form>
</div>
<!-- table --> <!-- table -->
<div class="col">
<table id="spotsTable" class="table table-striped table-sm text-responsive table-borderless table-hover"> <!-- <div class="container">
<thead> <div class="row">
<tr> <div class="col align-self-center"> -->
<th>DX De</th> <div class="jumbotron alert alert-warning" role="alert">
<th>Freq</th> <h2 class="display-4">No internet connection</h2>
<th>DX</th> <p class="lead">The features in this area require Internet connectivity. Please connect your computer to the Internet</p>
<th></th> <p class="lead">
<th class="d-none d-lg-table-cell d-xl-table-cell">Country</th> <a class="btn btn-primary btn-lg" href="/" role="button">Try again</a>
<th class="d-none d-lg-table-cell d-xl-table-cell">Comments</th> </p>
<th>UTC</th> <!-- </div>
</tr> </div>
</thead> </div> -->
<tbody id="bodyspot"> </div>
</tbody>
</table>
</div>
</div>
</div> </div>
<div class="row bg-warning" style="margin:10px;"> <footer class="page-footer font-small blue">
<div class="d-flex justify-content-center p-3 mb-2 text-dark" ><h3>Sorry, but you are off-line: check your connectivity.</h3></div> <div class="footer-copyright text-center py-3">2020-<script>document.write(new Date().getFullYear())</script> <span class="copyleft">&copy;</span> Copyleft:
</div> <a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
<footer class="page-footer font-small blue"> <span id="version">v2.1</span>
<div class="footer-copyright text-center py-3">2020 <span class="copyleft">&copy;</span> Copyleft: </div>
<a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a> </footer>
</div> <script async src="static/js/min/load-sw.min.js"></script>
</footer> <script>
</script>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.slim.min.js" integrity="sha512-6ORWJX/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX/Z9mBFfCJZ4A==" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<script defer src="static/js/min/application.min.js"></script>
</body> </body>
</html> </html>

View File

@ -1 +0,0 @@
../../templates/replace_version.sh

View File

@ -0,0 +1 @@
../../../templates/_base.html

View File

@ -0,0 +1 @@
../../../templates/offline.html

188
templates/_base.html Normal file
View File

@ -0,0 +1,188 @@
<!DOCTYPE html>
<html lang="en">
<head>
{% block title %}
{% endblock title %}
{% block head %}
<meta charset="utf-8">
<meta name="description" content="Amateur Radio DX Cluster online, Telnet, spots search">
<meta name="keywords" content=", ham radio dx cluster, telnet dx cluster, hf dx cluster, dx cluster search, vhf dx cluster, dxfun, dx cluster live, DX spots, dxfuncluster, dxfun cluster, cluster, radio, dx, ham cluster, webcluster, dxcc, dx cluster, dx info, locators, grid squares, grid locator, locator, cq, itu, qrz, entity, most wanted, callbook, qrz.com, ham radio, dx contest, amateur radio, spots, search spot, spot, cluster en tu web, lotw, log of the word, propagacion, ham, reportes, reports, propagation, bandas, band, ssb, cw, usb, lsb, fm, am, rtty, psk, psk31, qsl, qth, qso, real time spots, spots en tiempo real, dx spot, dx spots, qsl manager, qsl via, wpx, cqwwdx">
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0">
<meta name="theme-color" content="#2196f3">
<link rel="shortcut icon" href="/static/favicon.png">
<link rel="manifest" href="/static/manifest.json">
<link rel="apple-touch-icon" href="/static/images/icons/icon-apple.png">
<link rel="stylesheet" href="/static/css/min/style.min.css">
<link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" as="style" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"></noscript>
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.1/css/flag-icon.min.css" as="style" integrity="sha512-RYqXH3Tn/sC/iuKrQ0idMEQFSU7HEuPpQDhd/kzsIkE/1WxG43RN2RGp9bx2sX/Gdh1G0Gn3zActuCHqE4t6rg==" crossorigin="anonymous" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.1/css/flag-icon.min.css"></noscript>
<script>
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
!function(a){"use strict";var b=function(b,c,d){function j(a){if(e.body)return a();setTimeout(function(){j(a)})}function l(){f.addEventListener&&f.removeEventListener("load",l),f.media=d||"all"}var g,e=a.document,f=e.createElement("link");if(c)g=c;else{var h=(e.body||e.getElementsByTagName("head")[0]).childNodes;g=h[h.length-1]}var i=e.styleSheets;f.rel="stylesheet",f.href=b,f.media="only x",j(function(){g.parentNode.insertBefore(f,c?g:g.nextSibling)});var k=function(a){for(var b=f.href,c=i.length;c--;)if(i[c].href===b)return a();setTimeout(function(){k(a)})};return f.addEventListener&&f.addEventListener("load",l),f.onloadcssdefined=k,k(l),f};"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b}("undefined"!=typeof global?global:this);
/*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */
!function(a){if(a.loadCSS){var b=loadCSS.relpreload={};if(b.support=function(){try{return a.document.createElement("link").relList.supports("preload")}catch(a){return!1}},b.poly=function(){for(var b=a.document.getElementsByTagName("link"),c=0;c<b.length;c++){var d=b[c];"preload"===d.rel&&"style"===d.getAttribute("as")&&(a.loadCSS(d.href,d,d.getAttribute("media")),d.rel=null)}},!b.support()){b.poly();var c=a.setInterval(b.poly,300);a.addEventListener&&a.addEventListener("load",function(){b.poly(),a.clearInterval(c)}),a.attachEvent&&a.attachEvent("onload",function(){a.clearInterval(c)})}}}(this);
</script>
{% endblock head %}
</head>
<body>
<header>
{% block menu %}
<!-- nav bar -->
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
{{ mycallsign }}
</a>
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01" >
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarToggler01">
<ul class="navbar-nav me-auto mb-2 mb-lg-0" >
{% for dict_item in menu_list %}
<li class="nav-item">
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
{% if dict_item["external"] %}
target="blank" rel="noopener"
{% endif %}
>{{dict_item["label"]}}<span class="sr-only"></span></a>
</li>
{% endfor %}
</ul>
<form method="POST" class="d-flex" id="form-callsign" enctype="application/x-www-form-urlencoded" >
<div class="input-group" id='input-group-callsign'>
<input type="text" class="form-control" placeholder="callsign" aria-label="callsign" aria-describedby="button-addon2" id="callsignInput" >
<div class="input-group-append">
<button class="btn btn-secondary" type="submit" onclick="myCallsignSearch()" formaction='javascript:myCallsignSearch();'>
<span class="bi-search" aria-label="search-callsign"></span>
</button>
</div>
</div>
</form>
</div>
</div>
</nav>
{% endblock menu %}
</header>
<!-- <div class="mt-1 ml-0 mr-0"> -->
<div class="container-fluid mt-1 ml-0 mr-0 px-0">
<div class="ipcs bg-light p-4 rounded-lg m-2">
{% block titles %}
{% endblock %}
<p class="text-light">Telnet access: <a href="telnet://{{ telnet }}" class="text-white">{{ telnet }}</a></p>
<p class="text-light">For connect your cluster, write to <a href="mailto:{{ mail }}?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white">{{ mail }}</a></p>
</div>
{% block filters %}
<div class="row mx-auto justify-content-between align-middle">
<div class="mx-auto">
<button class="btn btn-primary btn-sm" type="button" data-toggle="collapse" aria-expanded="false" aria-label="filter" data-bs-toggle="collapse" data-bs-target="#collapseFilters">
<span class="bi-funnel-fill" aria-label="funnel-fill"></span>
</button>
</div>
</div>
<div class="row mx-auto">
<!--Sidebar content-->
<div class="col-md-auto collapse rounded-sm" id="collapseFilters">
<form method="POST" id="form-filters" enctype="multipart/form-data" >
<select class="form-select" id="band" size="14" multiple>
<option selected value="SHF">SHF</option>
<option selected value="UHF">UHF</option>
<option selected value="VHF">VHF</option>
<option selected value="6">6m</option>
<option selected value="10">10m</option>
<option selected value="12">12m</option>
<option selected value="15">15m</option>
<option selected value="17">17m</option>
<option selected value="20">20m</option>
<option selected value="30">30m</option>
<option selected value="40">40m</option>
<option selected value="60">60m</option>
<option selected value="80">80m</option>
<option selected value="160">&gt;160m</option>
</select>
<p></p>
<div class="row">
<b>Mode</b>
</div>
<select class="form-select" id="mode" size="3" multiple>
<option selected value="cw">CW</option>
<option selected value="phone">PHONE</option>
<option selected value="digi">DIGI</option>
</select>
<p></p>
<div class="container"><div class="row"><div class="col"><b>DE</b></div><div class="col"><b>DX</b></div></div></div>
<div class="row">
<div class="col">
<select class="form-select" id="de_re" size="7" multiple>
<option selected value="EU">EU</option>
<option selected value="NA">NA</option>
<option selected value="AS">AS</option>
<option selected value="AF">AF</option>
<option selected value="OC">OC</option>
<option selected value="SA">SA</option>
<option selected value="AN">AN</option>
</select>
</div>
<div class="col">
<select class="form-select" id="dx_re" size="7" multiple>
<option selected value="EU">EU</option>
<option selected value="NA">NA</option>
<option selected value="AS">AS</option>
<option selected value="AF">AF</option>
<option selected value="OC">OC</option>
<option selected value="SA">SA</option>
<option selected value="AN">AN</option>
</select>
</div>
</div>
<p></p>
<button type="submit" class="btn btn-primary btn-block" aria-pressed="true" data-toggle="collapse" data-target="#collapseFilters" aria-expanded="false" aria-controls="collapseFilters" aria-label="filter">Search</button>
</form>
</div>
{% endblock filters %}
<!-- table -->
{% block contents %}
<div class="col">
<table id="spotsTable" class="table table-striped table-sm text-responsive table-borderless table-hover">
<thead>
<tr>
<th>DX De</th>
<th>Freq</th>
<th>DX</th>
<th></th>
<th class="d-none d-lg-table-cell d-xl-table-cell">Country</th>
<th class="d-none d-lg-table-cell d-xl-table-cell">Comments</th>
<th>UTC</th>
</tr>
</thead>
<tbody id="bodyspot">
</tbody>
</table>
</div>
</div>
{% endblock contents %}
</div>
<footer class="page-footer font-small blue">
<div class="footer-copyright text-center py-3">2020-<script>document.write(new Date().getFullYear())</script> <span class="copyleft">&copy;</span> Copyleft:
<a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
<span id="version">v2.1</span>
</div>
</footer>
<script async src="static/js/min/load-sw.min.js"></script>
<script>
{% block app_data %}
var my_callsign='{{callsign}}';
{% endblock app_data %}
</script>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.slim.min.js" integrity="sha512-6ORWJX/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX/Z9mBFfCJZ4A==" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
{% block app_scripts %}
<script defer src="static/js/min/application.min.js"></script>
{% endblock app_scripts %}
</body>
</html>

View File

@ -1,117 +1,24 @@
<!DOCTYPE html> {% extends "_base.html" %}
<html lang="en"> <head>
<head> {% block title %}
<title>Spot search for a specific Callsign</title> <title>Spot search for a specific Callsign</title>
<meta charset="utf-8"> {% endblock %}
<meta name="description" content="search spot for a specific callsign"> {% block head %}
<meta name="description" content="Amateur Radio DX Cluster online, Telnet, spots search"> {{ super() }}
<meta name="keywords" content=", ham radio dx cluster, telnet dx cluster, hf dx cluster, dx cluster search, vhf dx cluster, dxfun, dx cluster live, DX spots, dxfuncluster, dxfun cluster, cluster, radio, dx, ham cluster, webcluster, dxcc, iPhone cluster, dx cluster, dx info, locators, grid squares, grid locator, locator, cq, itu, qrz, entity, most wanted, callbook, qrz.com, ham radio, dx contest, amateur radio, spots, search spot, spot, cluster en tu web, lotw, log of the word, propagacion, ham, reportes, reports, propagation, bandas, band, ssb, cw, usb, lsb, fm, am, rtty, psk, psk31, qsl, qth, qso, real time spots, spots en tiempo real, dx spot, dx spots, qsl manager, qsl via, wpx, cqwwdx, iPhone Cluster"> {% endblock %}
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0"> </head>
<meta name="theme-color" content="#2196f3"> {% block titles %}
<link rel="shortcut icon" href="/static/favicon.png"> <h1 class="display-4 text-white">{{callsign}}</h1>
<link rel="manifest" href="/static/manifest.json"> <p class="lead text-light">Some statistics about this callsign</p>
<link rel="apple-touch-icon" href="/static/images/icons/icon-apple.png"> {% endblock %}
<link rel="stylesheet" href="/static/css/min/style.min.css"> {% block app_data %}
{{ super() }}
<link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" as="style" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"></noscript>
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.1/css/flag-icon.min.css" as="style" integrity="sha512-RYqXH3Tn/sC/iuKrQ0idMEQFSU7HEuPpQDhd/kzsIkE/1WxG43RN2RGp9bx2sX/Gdh1G0Gn3zActuCHqE4t6rg==" crossorigin="anonymous" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.1/css/flag-icon.min.css"></noscript>
<script>
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
!function(a){"use strict";var b=function(b,c,d){function j(a){if(e.body)return a();setTimeout(function(){j(a)})}function l(){f.addEventListener&&f.removeEventListener("load",l),f.media=d||"all"}var g,e=a.document,f=e.createElement("link");if(c)g=c;else{var h=(e.body||e.getElementsByTagName("head")[0]).childNodes;g=h[h.length-1]}var i=e.styleSheets;f.rel="stylesheet",f.href=b,f.media="only x",j(function(){g.parentNode.insertBefore(f,c?g:g.nextSibling)});var k=function(a){for(var b=f.href,c=i.length;c--;)if(i[c].href===b)return a();setTimeout(function(){k(a)})};return f.addEventListener&&f.addEventListener("load",l),f.onloadcssdefined=k,k(l),f};"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b}("undefined"!=typeof global?global:this);
/*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */
!function(a){if(a.loadCSS){var b=loadCSS.relpreload={};if(b.support=function(){try{return a.document.createElement("link").relList.supports("preload")}catch(a){return!1}},b.poly=function(){for(var b=a.document.getElementsByTagName("link"),c=0;c<b.length;c++){var d=b[c];"preload"===d.rel&&"style"===d.getAttribute("as")&&(a.loadCSS(d.href,d,d.getAttribute("media")),d.rel=null)}},!b.support()){b.poly();var c=a.setInterval(b.poly,300);a.addEventListener&&a.addEventListener("load",function(){b.poly(),a.clearInterval(c)}),a.attachEvent&&a.attachEvent("onload",function(){a.clearInterval(c)})}}}(this);
</script>
</head>
<body>
<header>
<!-- nav bar -->
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
{{ mycallsign }}
</a>
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01" >
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarToggler01">
<ul class="navbar-nav me-auto mb-2 mb-lg-0" >
{% for dict_item in menu_list %}
<li class="nav-item">
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
{% if dict_item["external"] %}
target="blank" rel="noopener"
{% endif %}
>{{dict_item["label"]}}<span class="sr-only"></span></a>
</li>
{% endfor %}
</ul>
<form method="POST" class="d-flex" id="form-callsign" enctype="application/x-www-form-urlencoded" >
<div class="input-group" id='input-group-callsign'>
<input type="text" class="form-control" maxlength="14" placeholder="callsign" aria-label="callsign" aria-describedby="button-addon2" id="callsignInput" >
<div class="input-group-append">
<button class="btn btn-secondary" type="submit" onclick="myCallsignSearch()" formaction='javascript:myCallsignSearch();'>
<span class="bi-search" aria-label="search-callsign"></span>
</button>
</div>
</div>
</form>
</div>
</div>
</nav>
</header>
<!-- <div class="mt-1 ml-0 mr-0"> -->
<div class="container-fluid mt-1 ml-0 mr-0 px-0">
<div class="ipcs bg-light p-4 rounded-lg m-2">
<h1 class="display-4 text-white">{{callsign}}</h1>
<p class="lead text-light">Some statistics about this callsign</p>
<p class="text-light">Telnet access: <a href="telnet://dxcluster.iu1bow.it:7300" class="text-white">dxcluster.iu1bow.it 7300</a></p>
<p class="text-light">For connect your cluster, write to <a href="mailto:corrado.gerbaldo@gmail.com?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white">corrado.gerbaldo@gmail.com</a></p>
</div>
<div class="row mx-auto">
<!--Sidebar content-->
<div class="col mr-3">
<table id="spotsTable" class="table table-striped table-sm text-responsive table-borderless table-hover">
<thead>
<tr>
<th>DX De</th>
<th>Freq</th>
<th>DX</th>
<th></th>
<th class="d-none d-lg-table-cell d-xl-table-cell">Country</th>
<th class="d-none d-lg-table-cell d-xl-table-cell">Comments</th>
<th>UTC</th>
</tr>
</thead>
<tbody id="bodyspot">
</tbody>
</table>
</div>
</div>
</div>
<footer class="page-footer font-small blue">
<div class="footer-copyright text-center py-3">2020-<script>document.write(new Date().getFullYear())</script><span class="copyleft">&copy;</span> Copyleft:
<a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
</div>
</footer>
<script async src="static/js/min/load-sw.min.js"></script>
<script>
var my_countries_json='{{ country_data|tojson|safe }}';
var payload_json={{payload|tojson|safe}}; var payload_json={{payload|tojson|safe}};
var my_callsign='{{callsign}}'; var timer_interval_json = {{timer_interval}};
var my_countries_json='{{ country_data|tojson|safe }}';
var my_adxo_events_json='{{ adxo_events|tojson|safe }}'; var my_adxo_events_json='{{ adxo_events|tojson|safe }}';
</script> {% endblock app_data %}
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.slim.min.js" integrity="sha512-6ORWJX/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX/Z9mBFfCJZ4A==" crossorigin="anonymous"></script> {% block app_scripts %}
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> {{ super() }}
<script defer src="static/js/min/application.min.js"></script> <script defer src="static/js/min/callsign_inline.min.js"></script>
<script defer src="static/js/min/callsign_inline.min.js"></script> {% endblock app_scripts %}
</body>
</html>

View File

@ -1,76 +1,19 @@
<!DOCTYPE html> {% extends "_base.html" %}
<html lang="en">
<head> <head>
<meta name="robots" content="noindex, nofollow"> {% block title %}
<title>DX Cluster from IU1BOW: Cookies</title> <title>DX Cluster from IU1BOW: Cookies</title>
<meta charset="utf-8"> {% endblock %}
<meta name="KEYWORDS" content="dxcluster,iu1bow,cluster,ham radio,web dx cluster"> {% block head %}
<meta name="description" content="dx cluster for hamradio, by IU1BOW"> {{ super() }}
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0"> {% endblock %}
<meta name="theme-color" content="#2196f3">
<link rel="shortcut icon" href="/static/favicon.png">
<link rel="manifest" href="/static/manifest.json">
<link rel="stylesheet" href="/static/css/min/style.min.css">
<link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" as="style" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"></noscript>
<script>
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
!function(a){"use strict";var b=function(b,c,d){function j(a){if(e.body)return a();setTimeout(function(){j(a)})}function l(){f.addEventListener&&f.removeEventListener("load",l),f.media=d||"all"}var g,e=a.document,f=e.createElement("link");if(c)g=c;else{var h=(e.body||e.getElementsByTagName("head")[0]).childNodes;g=h[h.length-1]}var i=e.styleSheets;f.rel="stylesheet",f.href=b,f.media="only x",j(function(){g.parentNode.insertBefore(f,c?g:g.nextSibling)});var k=function(a){for(var b=f.href,c=i.length;c--;)if(i[c].href===b)return a();setTimeout(function(){k(a)})};return f.addEventListener&&f.addEventListener("load",l),f.onloadcssdefined=k,k(l),f};"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b}("undefined"!=typeof global?global:this);
/*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */
!function(a){if(a.loadCSS){var b=loadCSS.relpreload={};if(b.support=function(){try{return a.document.createElement("link").relList.supports("preload")}catch(a){return!1}},b.poly=function(){for(var b=a.document.getElementsByTagName("link"),c=0;c<b.length;c++){var d=b[c];"preload"===d.rel&&"style"===d.getAttribute("as")&&(a.loadCSS(d.href,d,d.getAttribute("media")),d.rel=null)}},!b.support()){b.poly();var c=a.setInterval(b.poly,300);a.addEventListener&&a.addEventListener("load",function(){b.poly(),a.clearInterval(c)}),a.attachEvent&&a.attachEvent("onload",function(){a.clearInterval(c)})}}}(this);
</script>
</head> </head>
<body> {% block titles %}
<header>
<!-- nav bar -->
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
{{ mycallsign }}
</a>
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01" >
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarToggler01">
<ul class="navbar-nav me-auto mb-2 mb-lg-0" >
{% for dict_item in menu_list %}
<li class="nav-item">
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
{% if dict_item["external"] %}
target="blank" rel="noopener"
{% endif %}
>{{dict_item["label"]}}<span class="sr-only"></span></a>
</li>
{% endfor %}
</ul>
<form method="POST" class="d-flex" id="form-callsign" enctype="application/x-www-form-urlencoded" >
<div class="input-group" id='input-group-callsign'>
<input type="text" class="form-control" placeholder="callsign" aria-label="callsign" aria-describedby="button-addon2" id="callsignInput" >
<div class="input-group-append">
<button class="btn btn-secondary" type="submit" onclick="myCallsignSearch()" formaction='javascript:myCallsignSearch();'>
<span class="bi-search" aria-label="search-callsign"></span>
</button>
</div>
</div>
</form>
</div>
</div>
</nav>
</header>
<main>
<!-- jumbotron -->
<div class="container-fluid mt-1 ml-0 mr-0 px-0">
<div class="ipcs bg-light p-4 rounded-lg m-2">
<h1 class="display-4 text-white">COOKIES</h1> <h1 class="display-4 text-white">COOKIES</h1>
<p class="lead text-light">WEB DX Cluster For HAM Radio</p> <p class="lead text-light">WEB DX Cluster For HAM Radio</p>
<p class="text-light">Telnet access: <a href="telnet://dxcluster.iu1bow.it:7300" class="text-white">dxcluster.iu1bow.it 7300</a></p> {% endblock %}
<p class="text-light">For connect your cluster, write to <a href="mailto:corrado.gerbaldo@gmail.com?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white">corrado.gerbaldo@gmail.com</a></p> {% block filters %}
</div> {% endblock %}
</div> {% block contents %}
<div class="col mr-3 px-2"> <div class="col mr-3 px-2">
<p class="text-justify"><span class="font-weight-bold">Cookies</span> are small text files that can be used by websites to make a user's experience more efficient. This site uses different types of cookies. You can at any time change or withdraw <p class="text-justify"><span class="font-weight-bold">Cookies</span> are small text files that can be used by websites to make a user's experience more efficient. This site uses different types of cookies. You can at any time change or withdraw
your consent from the Cookies page on my website. Some cookies are placed by third party services that appear on our pages, for example if you view or listen to any embedded audio or video content. I don't control the setting of these cookies, so your consent from the Cookies page on my website. Some cookies are placed by third party services that appear on our pages, for example if you view or listen to any embedded audio or video content. I don't control the setting of these cookies, so
@ -83,18 +26,8 @@
valuable for publishers and third party advertisers.</p> valuable for publishers and third party advertisers.</p>
<p class="text-justify"><span class="font-weight-bold">Unclassified</span> cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.</p> <p class="text-justify"><span class="font-weight-bold">Unclassified</span> cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.</p>
</div> </div>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.slim.min.js" integrity="sha512-6ORWJX/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX/Z9mBFfCJZ4A==" crossorigin="anonymous"> {% endblock %}
</script> {% block app_data %}
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> {% endblock %}
<script defer src="/static/js/min/application.min.js"> {% block app_scritps %}
</script> {% endblock %}
</main>
<footer class="page-footer font-small blue">
<div class="footer-copyright text-center py-3">
2020-<script>document.write(new Date().getFullYear())</script><span class="copyleft">©</span> Copyleft: <a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
</div>
</footer>
</body>
</html>

View File

@ -1,183 +1,27 @@
<!DOCTYPE html> {% extends "_base.html" %}
<html lang="en"> <head>
<head> {% block title %}
<title>DX Cluster / DX Spot for Hamradio</title> <title>DX Cluster / DX Spot for Hamradio</title>
<meta charset="utf-8"> {% endblock %}
<meta name="description" content="Amateur Radio DX Cluster online, Telnet, spots search"> {% block head %}
<meta name="keywords" content=", ham radio dx cluster, telnet dx cluster, hf dx cluster, dx cluster search, vhf dx cluster, dxfun, dx cluster live, DX spots, dxfuncluster, dxfun cluster, cluster, radio, dx, ham cluster, webcluster, dxcc, dx cluster, dx info, locators, grid squares, grid locator, locator, cq, itu, qrz, entity, most wanted, callbook, qrz.com, ham radio, dx contest, amateur radio, spots, search spot, spot, cluster en tu web, lotw, log of the word, propagacion, ham, reportes, reports, propagation, bandas, band, ssb, cw, usb, lsb, fm, am, rtty, psk, psk31, qsl, qth, qso, real time spots, spots en tiempo real, dx spot, dx spots, qsl manager, qsl via, wpx, cqwwdx"> {{ super() }}
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0"> {% endblock %}
<meta name="theme-color" content="#2196f3"> </head>
<link rel="shortcut icon" href="/static/favicon.png"> {% block titles %}
<link rel="manifest" href="/static/manifest.json"> <h1 class="display-4 text-white">WEB DX Cluster</h1>
<link rel="apple-touch-icon" href="/static/images/icons/icon-apple.png"> <p class="lead text-light">Spots list</p>
<link rel="stylesheet" href="/static/css/min/style.min.css"> {% endblock %}
{% block app_data %}
<link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" as="style" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" onload="this.rel='stylesheet'"> {{ super() }}
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"></noscript>
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.1/css/flag-icon.min.css" as="style" integrity="sha512-RYqXH3Tn/sC/iuKrQ0idMEQFSU7HEuPpQDhd/kzsIkE/1WxG43RN2RGp9bx2sX/Gdh1G0Gn3zActuCHqE4t6rg==" crossorigin="anonymous" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.1/css/flag-icon.min.css"></noscript>
<script>
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
!function(a){"use strict";var b=function(b,c,d){function j(a){if(e.body)return a();setTimeout(function(){j(a)})}function l(){f.addEventListener&&f.removeEventListener("load",l),f.media=d||"all"}var g,e=a.document,f=e.createElement("link");if(c)g=c;else{var h=(e.body||e.getElementsByTagName("head")[0]).childNodes;g=h[h.length-1]}var i=e.styleSheets;f.rel="stylesheet",f.href=b,f.media="only x",j(function(){g.parentNode.insertBefore(f,c?g:g.nextSibling)});var k=function(a){for(var b=f.href,c=i.length;c--;)if(i[c].href===b)return a();setTimeout(function(){k(a)})};return f.addEventListener&&f.addEventListener("load",l),f.onloadcssdefined=k,k(l),f};"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b}("undefined"!=typeof global?global:this);
/*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */
!function(a){if(a.loadCSS){var b=loadCSS.relpreload={};if(b.support=function(){try{return a.document.createElement("link").relList.supports("preload")}catch(a){return!1}},b.poly=function(){for(var b=a.document.getElementsByTagName("link"),c=0;c<b.length;c++){var d=b[c];"preload"===d.rel&&"style"===d.getAttribute("as")&&(a.loadCSS(d.href,d,d.getAttribute("media")),d.rel=null)}},!b.support()){b.poly();var c=a.setInterval(b.poly,300);a.addEventListener&&a.addEventListener("load",function(){b.poly(),a.clearInterval(c)}),a.attachEvent&&a.attachEvent("onload",function(){a.clearInterval(c)})}}}(this);
</script>
<!--
<link rel="dns-prefetch" href="https://www.countryflags.io">
-->
</head>
<body>
<header>
<!-- nav bar -->
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
{{ mycallsign }}
</a>
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01" >
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarToggler01">
<ul class="navbar-nav me-auto mb-2 mb-lg-0" >
{% for dict_item in menu_list %}
<li class="nav-item">
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
{% if dict_item["external"] %}
target="blank" rel="noopener"
{% endif %}
>{{dict_item["label"]}}<span class="sr-only"></span></a>
</li>
{% endfor %}
</ul>
<form method="POST" class="d-flex" id="form-callsign" enctype="application/x-www-form-urlencoded" >
<div class="input-group" id='input-group-callsign'>
<input type="text" class="form-control" placeholder="callsign" aria-label="callsign" aria-describedby="button-addon2" id="callsignInput" >
<div class="input-group-append">
<button class="btn btn-secondary" type="submit" onclick="myCallsignSearch()" formaction='javascript:myCallsignSearch();'>
<span class="bi-search" aria-label="search-callsign"></span>
</button>
</div>
</div>
</form>
</div>
</div>
</nav>
</header>
<!-- <div class="mt-1 ml-0 mr-0"> -->
<div class="container-fluid mt-1 ml-0 mr-0 px-0">
<div class="ipcs bg-light p-4 rounded-lg m-2">
<h1 class="display-4 text-white">WEB DX Cluster</h1>
<p class="lead text-light">Spots list</p>
<p class="text-light">Telnet access: <a href="telnet://{{ telnet }}" class="text-white">{{ telnet }}</a></p>
<p class="text-light">For connect your cluster, write to <a href="mailto:{{ mail }}?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white">{{ mail }}</a></p>
</div>
<div class="row mx-auto justify-content-between align-middle">
<div class="mx-auto">
<button class="btn btn-primary btn-sm" type="button" data-toggle="collapse" aria-expanded="false" aria-label="filter" data-bs-toggle="collapse" data-bs-target="#collapseFilters">
<span class="bi-funnel-fill" aria-label="funnel-fill"></span>
</button>
</div>
</div>
<div class="row mx-auto">
<!--Sidebar content-->
<div class="col-md-auto collapse rounded-sm" id="collapseFilters">
<form method="POST" id="form-filters" enctype="multipart/form-data" >
<select class="form-select" id="band" size="14" multiple>
<option selected value="SHF">SHF</option>
<option selected value="UHF">UHF</option>
<option selected value="VHF">VHF</option>
<option selected value="6">6m</option>
<option selected value="10">10m</option>
<option selected value="12">12m</option>
<option selected value="15">15m</option>
<option selected value="17">17m</option>
<option selected value="20">20m</option>
<option selected value="30">30m</option>
<option selected value="40">40m</option>
<option selected value="60">60m</option>
<option selected value="80">80m</option>
<option selected value="160">&gt;160m</option>
</select>
<p></p>
<div class="row">
<b>Mode</b>
</div>
<select class="form-select" id="mode" size="3" multiple>
<option selected value="cw">CW</option>
<option selected value="phone">PHONE</option>
<option selected value="digi">DIGI</option>
</select>
<p></p>
<div class="container"><div class="row"><div class="col"><b>DE</b></div><div class="col"><b>DX</b></div></div></div>
<div class="row">
<div class="col">
<select class="form-select" id="de_re" size="7" multiple>
<option selected value="EU">EU</option>
<option selected value="NA">NA</option>
<option selected value="AS">AS</option>
<option selected value="AF">AF</option>
<option selected value="OC">OC</option>
<option selected value="SA">SA</option>
<option selected value="AN">AN</option>
</select>
</div>
<div class="col">
<select class="form-select" id="dx_re" size="7" multiple>
<option selected value="EU">EU</option>
<option selected value="NA">NA</option>
<option selected value="AS">AS</option>
<option selected value="AF">AF</option>
<option selected value="OC">OC</option>
<option selected value="SA">SA</option>
<option selected value="AN">AN</option>
</select>
</div>
</div>
<p></p>
<button type="submit" class="btn btn-primary btn-block" aria-pressed="true" data-toggle="collapse" data-target="#collapseFilters" aria-expanded="false" aria-controls="collapseFilters" aria-label="filter">Search</button>
</form>
</div>
<!-- table -->
<div class="col">
<table id="spotsTable" class="table table-striped table-sm text-responsive table-borderless table-hover">
<thead>
<tr>
<th>DX De</th>
<th>Freq</th>
<th>DX</th>
<th></th>
<th class="d-none d-lg-table-cell d-xl-table-cell">Country</th>
<th class="d-none d-lg-table-cell d-xl-table-cell">Comments</th>
<th>UTC</th>
</tr>
</thead>
<tbody id="bodyspot">
</tbody>
</table>
</div>
</div>
</div>
<footer class="page-footer font-small blue">
<div class="footer-copyright text-center py-3">2020-<script>document.write(new Date().getFullYear())</script> <span class="copyleft">&copy;</span> Copyleft:
<a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
</div>
</footer>
<script async src="static/js/min/load-sw.min.js"></script>
<script>
var my_countries_json='{{ country_data|tojson|safe }}';
var payload_json={{payload|tojson|safe}}; var payload_json={{payload|tojson|safe}};
var timer_interval_json = {{timer_interval}}; var timer_interval_json = {{timer_interval}};
var my_countries_json='{{ country_data|tojson|safe }}';
var my_adxo_events_json='{{ adxo_events|tojson|safe }}'; var my_adxo_events_json='{{ adxo_events|tojson|safe }}';
</script> {% endblock app_data %}
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.slim.min.js" integrity="sha512-6ORWJX/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX/Z9mBFfCJZ4A==" crossorigin="anonymous"></script> {% block app_scripts %}
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> {{ super() }}
<script defer src="static/js/min/application.min.js"></script> <script defer src="static/js/min/index_inline.min.js"></script>
<script defer src="static/js/min/index_inline.min.js"></script> {% endblock app_scripts %}
</body>
</html>

35
templates/offline.html Normal file
View File

@ -0,0 +1,35 @@
{% extends "_base.html" %}
<head>
{% block title %}
<title>DX Cluster from IU1BOW: OFFLINE</title>
<!-- page generated by staticjinja -->
{% endblock %}
{% block head %}
{{ super() }}
{% endblock %}
</head>
{% block titles %}
<h1 class="display-4 text-white">WEB DX Cluster</h1>
<p class="lead text-light">Spots list</p>
{% endblock %}
{% block filters %}
{% endblock %}
{% block contents %}
<!-- <div class="container">
<div class="row">
<div class="col align-self-center"> -->
<div class="jumbotron alert alert-warning" role="alert">
<h2 class="display-4">No internet connection</h2>
<p class="lead">The features in this area require Internet connectivity. Please connect your computer to the Internet</p>
<p class="lead">
<a class="btn btn-primary btn-lg" href="/" role="button">Try again</a>
</p>
<!-- </div>
</div>
</div> -->
</div>
{% endblock %}
{% block app_data %}
{% endblock %}
{% block app_scritps %}
{% endblock %}

View File

@ -1,76 +1,20 @@
<!DOCTYPE html> {% extends "_base.html" %}
<html lang="en">
<head> <head>
<title>Some plots end stats from the dx clustes node</title> {% block title %}
<meta charset="utf-8"> <title>Some plots end stats from the dx clustes node</title>
<meta name="KEYWORDS" content="Graph, plots, statistics, stats"> {% endblock %}
<meta name="description" content="some informations about this dx cluster node"> {% block head %}
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0"> {{ super() }}
<meta name="theme-color" content="#2196f3"> {% endblock %}
<link rel="shortcut icon" href="/static/favicon.png">
<link rel="manifest" href="/static/manifest.json">
<link rel="stylesheet" href="/static/css/min/style.min.css">
<link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" as="style" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"></noscript>
<script>
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
!function(a){"use strict";var b=function(b,c,d){function j(a){if(e.body)return a();setTimeout(function(){j(a)})}function l(){f.addEventListener&&f.removeEventListener("load",l),f.media=d||"all"}var g,e=a.document,f=e.createElement("link");if(c)g=c;else{var h=(e.body||e.getElementsByTagName("head")[0]).childNodes;g=h[h.length-1]}var i=e.styleSheets;f.rel="stylesheet",f.href=b,f.media="only x",j(function(){g.parentNode.insertBefore(f,c?g:g.nextSibling)});var k=function(a){for(var b=f.href,c=i.length;c--;)if(i[c].href===b)return a();setTimeout(function(){k(a)})};return f.addEventListener&&f.addEventListener("load",l),f.onloadcssdefined=k,k(l),f};"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b}("undefined"!=typeof global?global:this);
/*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */
!function(a){if(a.loadCSS){var b=loadCSS.relpreload={};if(b.support=function(){try{return a.document.createElement("link").relList.supports("preload")}catch(a){return!1}},b.poly=function(){for(var b=a.document.getElementsByTagName("link"),c=0;c<b.length;c++){var d=b[c];"preload"===d.rel&&"style"===d.getAttribute("as")&&(a.loadCSS(d.href,d,d.getAttribute("media")),d.rel=null)}},!b.support()){b.poly();var c=a.setInterval(b.poly,300);a.addEventListener&&a.addEventListener("load",function(){b.poly(),a.clearInterval(c)}),a.attachEvent&&a.attachEvent("onload",function(){a.clearInterval(c)})}}}(this);
</script>
</head> </head>
<body> {% block titles %}
<header>
<!-- nav bar -->
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
{{ mycallsign }}
</a>
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01" >
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarToggler01">
<ul class="navbar-nav me-auto mb-2 mb-lg-0" >
{% for dict_item in menu_list %}
<li class="nav-item">
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
{% if dict_item["external"] %}
target="blank" rel="noopener"
{% endif %}
>{{dict_item["label"]}}<span class="sr-only"></span></a>
</li>
{% endfor %}
</ul>
<form method="POST" class="d-flex" id="form-callsign" enctype="application/x-www-form-urlencoded" >
<div class="input-group" id='input-group-callsign'>
<input type="text" class="form-control" placeholder="callsign" aria-label="callsign" aria-describedby="button-addon2" id="callsignInput" >
<div class="input-group-append">
<button class="btn btn-secondary" type="submit" onclick="myCallsignSearch()" formaction='javascript:myCallsignSearch();'>
<span class="bi-search" aria-label="search-callsign"></span>
</button>
</div>
</div>
</form>
</div>
</div>
</nav>
</header>
<main>
<!-- jumbotron -->
<div class="container-fluid mt-1 ml-0 mr-0 px-0">
<div class="ipcs bg-light p-4 rounded-lg m-2">
<h1 class="display-4 text-white">PLOTS & STATS</h1> <h1 class="display-4 text-white">PLOTS & STATS</h1>
<p class="lead text-light">Some statistics about this node</p> <p class="lead text-light">Some statistics about this node</p>
<p class="text-light">Telnet access: <a href="telnet://dxcluster.iu1bow.it:7300" class="text-white">dxcluster.iu1bow.it 7300</a></p> {% endblock %}
<p class="text-light">For connect your cluster, write to <a href="mailto:corrado.gerbaldo@gmail.com?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white">corrado.gerbaldo@gmail.com</a></p> {% block filters %}
</div> {% endblock %}
</div> {% block contents %}
<div class="row mx-auto"> <div class="row mx-auto">
<div class="col mr-3" id="plotlist"></div> <div class="col mr-3" id="plotlist"></div>
</div> </div>
@ -103,25 +47,14 @@
</table> </table>
</div> </div>
</div> </div>
</main> {% endblock contents %}
<footer class="page-footer font-small blue"> {% block app_data %}
<div class="footer-copyright text-center py-3"> {{ super() }}
2020-<script>document.write(new Date().getFullYear())</script> <span class="copyleft">©</span> Copyleft: <a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
</div>
</footer>
<script async src="static/js/min/load-sw.min.js">
</script>
<script>
var payload_json={{payload|tojson|safe}}; var payload_json={{payload|tojson|safe}};
var timer_interval_json = {{timer_interval}}; var timer_interval_json = {{timer_interval}};
</script> {% endblock app_data %}
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.slim.min.js" integrity="sha512-6ORWJX/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX/Z9mBFfCJZ4A==" crossorigin="anonymous">
</script> {% block app_scripts %}
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> {{ super() }}
<script defer src="static/js/min/application.min.js"> <script defer src="static/js/min/plot_inline.min.js"></script>
</script> {% endblock app_scripts %}
<script defer src="static/js/min/plot_inline.min.js">
</script>
</body>
</html>

View File

@ -1,76 +1,19 @@
{% extends "_base.html" %}
<!DOCTYPE html>
<html lang="en">
<head> <head>
<meta name="robots" content="noindex, nofollow"> {% block title %}
<title>DX Cluster from IU1BOW: Cookies</title> <title>DX Cluster from IU1BOW: Privacy</title>
<meta charset="utf-8"> {% endblock %}
<meta name="KEYWORDS" content="dxcluster,iu1bow,cluster,ham radio,web dx cluster"> {% block head %}
<meta name="description" content="dx cluster for hamradio, by IU1BOW"> {{ super() }}
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0"> {% endblock %}
<meta name="theme-color" content="#2196f3">
<link rel="shortcut icon" href="/static/favicon.png">
<link rel="manifest" href="/static/manifest.json">
<link rel="stylesheet" href="/static/css/min/style.min.css">
<link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" as="style" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"></noscript>
<script>
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
!function(a){"use strict";var b=function(b,c,d){function j(a){if(e.body)return a();setTimeout(function(){j(a)})}function l(){f.addEventListener&&f.removeEventListener("load",l),f.media=d||"all"}var g,e=a.document,f=e.createElement("link");if(c)g=c;else{var h=(e.body||e.getElementsByTagName("head")[0]).childNodes;g=h[h.length-1]}var i=e.styleSheets;f.rel="stylesheet",f.href=b,f.media="only x",j(function(){g.parentNode.insertBefore(f,c?g:g.nextSibling)});var k=function(a){for(var b=f.href,c=i.length;c--;)if(i[c].href===b)return a();setTimeout(function(){k(a)})};return f.addEventListener&&f.addEventListener("load",l),f.onloadcssdefined=k,k(l),f};"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b}("undefined"!=typeof global?global:this);
/*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */
!function(a){if(a.loadCSS){var b=loadCSS.relpreload={};if(b.support=function(){try{return a.document.createElement("link").relList.supports("preload")}catch(a){return!1}},b.poly=function(){for(var b=a.document.getElementsByTagName("link"),c=0;c<b.length;c++){var d=b[c];"preload"===d.rel&&"style"===d.getAttribute("as")&&(a.loadCSS(d.href,d,d.getAttribute("media")),d.rel=null)}},!b.support()){b.poly();var c=a.setInterval(b.poly,300);a.addEventListener&&a.addEventListener("load",function(){b.poly(),a.clearInterval(c)}),a.attachEvent&&a.attachEvent("onload",function(){a.clearInterval(c)})}}}(this);
</script>
</head> </head>
<body> {% block titles %}
<header>
<!-- nav bar -->
<nav class="navbar px-2 navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
{{ mycallsign }}
</a>
<button class="navbar-toggler" type="button" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation" data-bs-toggle="collapse" data-bs-target="#navbarToggler01" >
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarToggler01">
<ul class="navbar-nav me-auto mb-2 mb-lg-0" >
{% for dict_item in menu_list %}
<li class="nav-item">
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
{% if dict_item["external"] %}
target="blank" rel="noopener"
{% endif %}
>{{dict_item["label"]}}<span class="sr-only"></span></a>
</li>
{% endfor %}
</ul>
<form method="POST" class="d-flex" id="form-callsign" enctype="application/x-www-form-urlencoded" >
<div class="input-group" id='input-group-callsign'>
<input type="text" class="form-control" placeholder="callsign" aria-label="callsign" aria-describedby="button-addon2" id="callsignInput" >
<div class="input-group-append">
<button class="btn btn-secondary" type="submit" onclick="myCallsignSearch()" formaction='javascript:myCallsignSearch();'>
<span class="bi-search" aria-label="search-callsign"></span>
</button>
</div>
</div>
</form>
</div>
</div>
</nav>
</header>
<main>
<!-- jumbotron -->
<div class="container-fluid mt-1 ml-0 mr-0 px-0">
<div class="ipcs bg-light p-4 rounded-lg m-2">
<h1 class="display-4 text-white">PRIVACY</h1> <h1 class="display-4 text-white">PRIVACY</h1>
<p class="lead text-light">WEB DX Cluster For HAM Radio</p> <p class="lead text-light">WEB DX Cluster For HAM Radio</p>
<p class="text-light">Telnet access: <a href="telnet://dxcluster.iu1bow.it:7300" class="text-white">dxcluster.iu1bow.it 7300</a></p> {% endblock %}
<p class="text-light">For connect your cluster, write to <a href="mailto:corrado.gerbaldo@gmail.com?Subject=Connect%20my%20DxCluster%20node" target="_top" class="text-white">corrado.gerbaldo@gmail.com</a></p> {% block filters %}
</div> {% endblock %}
</div> {% block contents %}
<div class="col mr-3 px-2"> <div class="col mr-3 px-2">
<h1>Privacy Policy for this web site</h1> <h1>Privacy Policy for this web site</h1>
<p>At this web site, one of our main priorities is the privacy of our visitors. This Privacy Policy document contains types of information that is collected and recorded by this web site and how we use it.</p> <p>At this web site, one of our main priorities is the privacy of our visitors. This Privacy Policy document contains types of information that is collected and recorded by this web site and how we use it.</p>
@ -125,19 +68,8 @@
<p>this web site does not knowingly collect any Personal Identifiable Information from children under the age of 13. If you think that your child provided this kind of information on our website, we strongly encourage you to contact us immediately and we will do our best efforts to promptly remove such information from our records.</p> <p>this web site does not knowingly collect any Personal Identifiable Information from children under the age of 13. If you think that your child provided this kind of information on our website, we strongly encourage you to contact us immediately and we will do our best efforts to promptly remove such information from our records.</p>
</div> </div>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.slim.min.js" integrity="sha512-6ORWJX/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX/Z9mBFfCJZ4A==" crossorigin="anonymous"> {% endblock %}
</script> {% block app_data %}
{% endblock %}
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> {% block app_scritps %}
<script defer src="/static/js/min/application.min.js"> {% endblock %}
</script>
</main>
<footer class="page-footer font-small blue">
<div class="footer-copyright text-center py-3">
2020-<script>document.write(new Date().getFullYear())</script><span class="copyleft">©</span> Copyleft: <a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
</div>
</footer>
</body>
</html>

View File

@ -1,30 +0,0 @@
make_replace() {
for i in `ls -1 *.html`
do
cp ${i} ${i}.old
#replace css
sed -i 's/5.0.0/5.0.2/g' ${i}
sed -i 's/sha384-wEmeIV1mKuiNpC+IOBjI7aAzPcEZeedi5yW5f2yOq55WWLwNGmvvx4Um1vskeMj0/sha384-EVSTQN3\/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC/g' ${i}
sed -i 's/sha384-p34f1UUtsS3wqzfto5wAAmdvj+osOnFyQFpp4Ua3gs\/ZVWx6oOypYoCJhGGScy+8/sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn\/tWtIaxVXM/g' ${i}
#replace js
#sed -i 's/sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf/sha384-p34f1UUtsS3wqzfto5wAAmdvj+osOnFyQFpp4Ua3gs\/ZVWx6oOypYoCJhGGScy+8/g' ${i}
echo ${i}
#sed -i 's/"https:\/\/code.jquery.com\/jquery-3.5.1.slim.min.js" integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs="/https:"\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.6.0\/jquery.slim.min.js" integrity="sha512-6ORWJX\/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX\/Z9mBFfCJZ4A=="/g' ${i}
sed -i 's/"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.6.0\/jquery.slim.min.js" integrity="sha512-6ORWJX\/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX\/Z9mBFfCJZ4A=="/https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.6.0\/jquery.slim.js" integrity="sha512-6ORWJX\/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX\/Z9mBFfCJZ4A=="/g' ${i}
done
}
echo WARNING
echo This script will replace the version of bootrstrap CSS an JS
echo use it only if you know what you are doing
echo
while true; do
read -p "Do you wish to proceed?" yn
case $yn in
[Yy]* ) make_replace; break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
done

1
test.sh Executable file
View File

@ -0,0 +1 @@
python3 webapp.py

View File

@ -204,18 +204,18 @@ def plotlist():
def plots(): def plots():
payload=plotlist() payload=plotlist()
whoj=who_is_connected() whoj=who_is_connected()
response=flask.Response(render_template('plots.html',mycallsign=cfg['mycallsign'],menu_list=cfg['menu']['menu_list'],payload=payload,timer_interval=cfg['plot_refresh_timer']['interval'],who=whoj)) response=flask.Response(render_template('plots.html',mycallsign=cfg['mycallsign'],telnet=cfg['telnet'],mail=cfg['mail'],menu_list=cfg['menu']['menu_list'],payload=payload,timer_interval=cfg['plot_refresh_timer']['interval'],who=whoj))
return response return response
@app.route('/cookies.html', methods=['GET']) @app.route('/cookies.html', methods=['GET'])
def cookies(): def cookies():
response=flask.Response(render_template('cookies.html',mycallsign=cfg['mycallsign'],menu_list=cfg['menu']['menu_list'])) response=flask.Response(render_template('cookies.html',mycallsign=cfg['mycallsign'],telnet=cfg['telnet'],mail=cfg['mail'],menu_list=cfg['menu']['menu_list']))
return response return response
@app.route('/privacy.html', methods=['GET']) @app.route('/privacy.html', methods=['GET'])
def privacy(): def privacy():
response=flask.Response(render_template('privacy.html',mycallsign=cfg['mycallsign'],menu_list=cfg['menu']['menu_list'])) response=flask.Response(render_template('privacy.html',mycallsign=cfg['mycallsign'],telnet=cfg['telnet'],mail=cfg['mail'],menu_list=cfg['menu']['menu_list']))
return response return response
@app.route('/sitemap.xml') @app.route('/sitemap.xml')
@ -227,7 +227,8 @@ def callsign():
payload=spotquery() payload=spotquery()
country_data=load_country() country_data=load_country()
callsign=request.args.get('c') callsign=request.args.get('c')
response=flask.Response(render_template('callsign.html',mycallsign=cfg['mycallsign'],menu_list=cfg['menu']['menu_list'],payload=payload,country_data=country_data,callsign=callsign,adxo_events=adxo_events)) # response=flask.Response(render_template('callsign.html',mycallsign=cfg['mycallsign'],menu_list=cfg['menu']['menu_list'],payload=payload,country_data=country_data,callsign=callsign,adxo_events=adxo_events))
response=flask.Response(render_template('callsign.html',mycallsign=cfg['mycallsign'],telnet=cfg['telnet'],mail=cfg['mail'],menu_list=cfg['menu']['menu_list'],payload=payload,timer_interval=cfg['timer']['interval'],country_data=country_data,callsign=callsign,adxo_events=adxo_events))
return response return response
#@app.route('/who',methods=['GET']) #@app.route('/who',methods=['GET'])