Test BitTorrent

This commit is contained in:
octospacc 2022-08-11 21:40:37 +02:00
parent 84da23b9f8
commit 8cb16c519d
9 changed files with 104 additions and 4 deletions

View File

@ -4,7 +4,7 @@ before_script:
- apk update - apk update
- apk add python3 py3-pip npm go git - apk add python3 py3-pip npm go git
- pip3 install requests lxml - pip3 install requests lxml
- npm install -g pug-cli - npm install -g pug-cli planktos
pages: pages:
stage: deploy stage: deploy
@ -19,6 +19,7 @@ pages:
- cd .. - cd ..
- git clone --depth 1 https://gitlab.com/octtspacc/staticoso - git clone --depth 1 https://gitlab.com/octtspacc/staticoso
- Scripts/Deploy.GitLab.sh - Scripts/Deploy.GitLab.sh
- Scripts/Deploy.BitTorrent.sh
- Scripts/Deploy.Gemini.sh - Scripts/Deploy.Gemini.sh
artifacts: artifacts:
paths: paths:

63
Assets/Assets/Privacy.js Normal file
View File

@ -0,0 +1,63 @@
function PlanktosInstall() {
if (!('serviceWorker' in navigator)) return
let attributes = document.currentScript.attributes
let sw = '/planktos.sw.js'
if (attributes['sw']) sw = attributes['sw'].value
if (attributes['data-sw']) sw = attributes['data-sw'].value
navigator.serviceWorker.register(sw)
.catch(function (err) {
console.log('Service worker registration failed with ' + err)
})
}
function PrivacyAccepted() {
PlanktosInstall();
}
function ShowPrivacyPopup() {
PrivacyPopup.style.display = 'block';
PrivacyPopup.style.visibility = 'visible';
PrivacyPopup.innerHTML = `
<p><b> Notifica sulla privacy</b></p>
<p>Cliccando OK, dichiari di comprendere e accettare che il tuo indirizzo IP potrebbe essere condiviso con i computer di altri utenti del sito durante la tua navigazione.</p>
<details>
<summary>Ulteriori informazioni</summary>
<p>Questo sito usa tecnologie per la distribuzione ottimizzata delle risorse, secondo il paradigma peer-to-peer e il protocollo BitTorrent.</p>
<p>Per via del funzionamento tecnico di questa soluzione, il tuo indirizzo IP potrebbe essere rivelato ai computer di altri utenti, da cui il tuo browser scaricherà i dati anziché passare per il server principale. Il tuo computer e la tua linea Internet, inoltre, potrebbero essere utilizzati per permettere ad altri utenti di scaricare i dati del sito in maniera ottimizzata.</p>
<p>
Se ritieni che questo sia per te un rischio di privacy, e non hai interesse nell'avere accesso ottimizzato al sito, anche qualora il server pincipale dovesse andare offline, puoi non accettare.
<br>
Semplicemente, ignora questo pop-up o, dalle impostazioni del browser, disattiva JavaScript o i cookie per farlo sparire completamente.
</p>
</details>
<br>
<button id="AcceptPrivacy" onclick="AcceptPrivacy()"><big><b> OK</b></big></button>
`;
}
function HidePrivacyPopup() {
PrivacyPopup.style.display = 'none';
PrivacyPopup.style.visibility = 'hidden';
PrivacyPopup.innerHTML = '';
}
function AcceptPrivacy() {
document.cookie = "PrivacyAccepted=true; max-age=31536000";
HidePrivacyPopup();
PrivacyAccepted();
window.location.reload();
}
function CheckPrivacyCookie() {
if (navigator.cookieEnabled) {
if (document.cookie.search('PrivacyAccepted=true') != -1) {
PrivacyAccepted();
} else {
ShowPrivacyPopup();
}
}
}
document.body.onload = CheckPrivacyCookie();

View File

@ -133,8 +133,8 @@ H3:hover {
} }
#LeftBox, #RightBox { #LeftBox, #RightBox {
Max-Width: 90vw; Max-Width: 90vw;
Background: #300030;
Color: #fafaf0; Color: #fafaf0;
Background: #300030;
} }
#LeftBox A, #RightBox A, #BottomBox A { #LeftBox A, #RightBox A, #BottomBox A {
Color: #eeddff; Color: #eeddff;
@ -246,6 +246,20 @@ H3:hover {
Float: Right; Float: Right;
Clear: Both; Clear: Both;
} }
#PrivacyPopup {
Display: None;
Visibility: Hidden;
Position: Fixed;
Z-Index: 16;
Color: #fafaf0;
Background: #300030;
Max-Width: 60vw;
Max-Height: 50vh;
Overflow-Y: Scroll;
Bottom: 64px;
Right: Calc(Var(--ContentPadding) * 2);
Padding: Var(--ContentPadding);
}
#MainBoxGlobalFooter, #MainBoxGlobalFooter,
#StatCounter, #StatCounter,
.Center { .Center {

View File

@ -0,0 +1,12 @@
<div id="PrivacyPopup">
<h3>Notifica sulla privacy</h3>
<p>Cliccando OK, dichiari di comprendere e accettare che il tuo indirizzo IP potrebbe essere condiviso con i computer di altri utenti del sito durante la tua navigazione.</p>
<details>
<summary>Ulteriori informazioni</summary>
<p>Questo sito usa tecnologie per la distribuzione ottimizzata delle risorse, secondo il paradigma peer-to-peer e il protocollo BitTorrent.</p>
<p>Per via del funzionamento tecnico di questa soluzione, il tuo indirizzo IP potrebbe essere rivelato a computer di altri utenti, da cui il tuo browser scaricherà i dati anziché passare per il server principale. Il tuo computer e la tua linea Internet, inoltre, potrebbero essere utilizzati per permettere ad altri utenti di scaricare i dati del sito in maniera ottimizzata.</p>
<p>Se ritieni che questo sia per te un rischio di privacy, e non hai interesse nell'avere accesso ottimizzato al sito, anche qualora il server pincipale dovesse andare offline, puoi ignorare questo pop-up o disattivare JavaScript per farlo sparire completamente.</p>
</details>
<br>
<button id="AcceptPrivacy">OK</button>
</div>

View File

@ -0,0 +1,2 @@
<!-- <script src="[HTML:Site:RelativeRoot]planktos/install.js"></script> -->
<script src="[HTML:Site:RelativeRoot]Assets/Privacy.js" defer></script>

View File

@ -71,8 +71,9 @@ details
summary Lista di script client-side usati nel sito Web (Espandi) summary Lista di script client-side usati nel sito Web (Espandi)
div div
ul ul
li Script interni scritti da me: per gestire la notifica sulla privacy
li Polyfill per supportare le immagini AVIF su vecchi browser: #[a(href='https://github.com/Kagami/avif.js' target='_blank' rel='noopener') avif.js di Kagami] (#[i Non ancora attivato, lo sarà a breve]) li Polyfill per supportare le immagini AVIF su vecchi browser: #[a(href='https://github.com/Kagami/avif.js' target='_blank' rel='noopener') avif.js di Kagami] (#[i Non ancora attivato, lo sarà a breve])
li Sistema di distribuzione P2P dei file del sito a carico dei visitatori: #[a(href='https://github.com/xuset/planktos' target='_blank' rel='noopener') Planktos di xuset] (#[i Non ancora attivato, lo sarà a breve]) li Sistema di distribuzione P2P dei file del sito a carico dei visitatori: #[a(href='https://github.com/xuset/planktos' target='_blank' rel='noopener') Planktos di xuset] (#[i Attivo per la fase di test])
p Di seguito, metto la mia classifica dei possibili modi per visualizzare questo sito, dal migliore al peggiore. Per standardizzazione, tutti presuppongono supporto completo ai colori. p Di seguito, metto la mia classifica dei possibili modi per visualizzare questo sito, dal migliore al peggiore. Per standardizzazione, tutti presuppongono supporto completo ai colori.

View File

@ -6,4 +6,5 @@ python3 ../staticoso/Source/Build.py \
--SiteDomain="https://sitoctt.octt.eu.org" \ --SiteDomain="https://sitoctt.octt.eu.org" \
--FolderRoots="{'*':'https://octtspacc.gitlab.io'}" \ --FolderRoots="{'*':'https://octtspacc.gitlab.io'}" \
--Minify="False" \ --Minify="False" \
--ContextParts="{'Head':'Privacy.html'}" \
--MarkdownExts="('attr_list', 'def_list', 'footnotes', 'md_in_html', 'tables')" --MarkdownExts="('attr_list', 'def_list', 'footnotes', 'md_in_html', 'tables')"

View File

@ -0,0 +1,4 @@
#!/bin/sh
cd public
npx planktos .

View File

@ -15,10 +15,10 @@
<meta property="og:description" content="[HTML:Page:Description]"> <meta property="og:description" content="[HTML:Page:Description]">
<meta property="og:url" content="https://sitoctt.octt.eu.org/[HTML:Page:Path]"> <meta property="og:url" content="https://sitoctt.octt.eu.org/[HTML:Page:Path]">
<meta property="og:image" content="[HTML:Page:Image]"> <meta property="og:image" content="[HTML:Page:Image]">
[HTML:ContextPart:*/Head]
<style> <style>
[HTML:Page:Style] [HTML:Page:Style]
</style> </style>
[HTML:ContextPart:*/Head]
<script src="[HTML:Site:RelativeRoot]Assets/AVIF-Polyfill/index.js"></script> <script src="[HTML:Site:RelativeRoot]Assets/AVIF-Polyfill/index.js"></script>
</head> </head>
<body id="Body"> <body id="Body">
@ -71,6 +71,8 @@
[HTML:Part:Standard/BottomBox.html] [HTML:Part:Standard/BottomBox.html]
</div> </div>
</div> </div>
<div id="PrivacyPopup">
</div>
</div> </div>
</body> </body>
</html> </html>