Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposta sperimentazione WebTorrent / Search-ID #69

Open
Clodo76 opened this issue Apr 11, 2020 · 1 comment
Open

Proposta sperimentazione WebTorrent / Search-ID #69

Clodo76 opened this issue Apr 11, 2020 · 1 comment

Comments

@Clodo76
Copy link

Clodo76 commented Apr 11, 2020

Ciao a tutti.
Ho letto che cercate una soluzione ai problemi di file-sharing, e
vorrei proporvi un integrazione con un software che ho scritto, un frontend al protocollo WebTorrent.

Il progetto è https://search-id.org, che in bundle consiste in un'unico file HTML da servire statico.
Funziona anche se scaricato e eseguito in locale (file:///).
Permette l'upload di file, il download, lo sharing (via WebTorrent),
ed è ovviamente compatibile con altri frontend WebTorrent (ad esempio https://instant.io).
Quel che ho implementato io è il formato 'embedded', una UI di controllo, il viewer di tipi di files vari, e altre features varie.

In linea di massima l'idea della proposta è hostarne una copia sul dominio https://iorestoacasa.work/ in modo da:

  • Essere indipendenti dal mio dominio (search-id.org)
  • Avere link interni da sharare nelle chat testuali Jitsi (di MM non so nulla, sorry).

Un vantaggio sarebbe avere una soluzione unica cross-app da usare con Jitsi e MM, o indipendentemente.
Un notevole svantaggio è che se un docente che pubblica un file per la sua classe, se poi non lascia il tab aperto, il contenuto viene perso (dead-share). E' normale in un sistema p2p, ma potrebbe risultare scomodo.
D'altro canto, altre soluzioni (owncloud, seafile, mega.nz o altri) richiederebbero che salvate voi files sui vostri server, con forse problemi di GDPR se esteri.

Comunque, sotto vi racconto come procederei, e se la cosa vi interessa posso provare a preparare una pull github (sotto spiego come la farei, per trasparenza/manutenzione).

Fase 0) Capire, usando direttamente https://search-id.org o altri frontend WebTorrent, se la soluzione è affidabile per le vostre esigenze (anche in situazioni come NAT). Immagino una fase di test in cui shariamo contenuti in una chat testuale Jitsi, per identificare problemi tecnici o di performance.

Fase 1)

La pagina HTML che vedete su https://search-id.org (il testo "This is an APP (as single html file...")
è un file pulito HTML usato come homepage del sistema, nel sistema stesso.

Quindi potreste creare la vostra homepage del sistema, html:

<!DOCTYPE html>
<html>
	<head>
		<title>iorestoacasa - search-id home</title>
		<meta charset="utf-8">
		
		<style>
			body
			{
				text-align:center;
				font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
			}
			body iframe
			{
				width:100%;
				max-width:640px;
				height:360px;
			}
		</style>

	</head>


	<body>
		<p>
			Testo di esempio.
		</p>
		<p>
			Per upload, aprire il menù a destra e cliccate il +.
		</p>
		<div style="text-align:center;color:rgba(0,0,0,0.5)">
			Powered by <a href='https://webtorrent.io/'>WebTorrent</a> and <a href='https://search-id.org'>Search-ID</a>
		</div>	

	</body>
</html>

dopodiche, uploadarla nel sistema stesso.
Questo genererà un ID (infohash webtorrent).

Questo esempio di pagina è in seed qui: https://search-id.org/?db9ec33562f2e63197e695d36f8ca8818a8ddf7b

E' possibile definire un webseed, per far si che l'home sia scaricata al volo dal server stesso ed evitare il dead-share della home.

Fase 2) Hostate il motore dal vostro dominio, scaricando il file html da servire statico nella vostra webroot.

curl https://search-id.org/search-id.min.html -o search-id.html

Editate l'html così copiato sostituendo l'ID di homepage con l'ID precedentemente creato.

Fase 3) Opzionale - Create una pagina nel vostro CMS (blanda, tipo la Privacy Policy) con questo html:

<style>
            .iframe-container {
                overflow: hidden;
                padding-top: 56.25%;
                position: relative;
            }

            .iframe-container iframe {
                border: 0;
                left: 0;
                position: absolute;
                top: 0;
                width: 100%;
                height: 100%;
            }
            </style>
            
            <div class="iframe-container">
                <iframe src="https://iorestoacasa.work/search-id.html?id={vostro-id-home}&autoplay=true" allowfullscreen></iframe>
            </div>

Non c'è nulla di male che sia un iframe, e dato che il sistema può macinare ogni genere di contenuti, se non fosse un iframe ci sarebbero problemi di corruzione di layout.

Bozza per capire: https://search-id.org/test/restoacasa.html

Fase 4) Opzionale - Il sistema di default usa un elenco di tracker definibile nelle opzioni. Potreste semplificarlo o, volendo, installare un tracker sul vs dominio per divenire completamente indipendenti.

Bon, mi fermo qui, se questa proposta vi piace approfondiamo la faccenda. Sto solo cercando di contribuire, non è spam, anche perchè è un progetto tutto GPL no-profit fatto nel tempo libero. Ciao!

Edit: aggiunto qualche vantaggio vs svantaggio

@tapionx
Copy link
Contributor

tapionx commented Apr 14, 2020

grazie @Clodo76 per questo contributo.
Sembra molto interessante, perchè molte persone ci hanno chiesto della possibilità di inviare file.
L'ideale sarebbe integrare la funzionalità direttamente all'interno della videochiamata, ma questo significa chiaramente modificare il software.
MM lo fa già, e stiamo cercando di risolvere i problemi nella issue #67
Jitsi invece non prevede questa possibilità.
Ritengo che sia scomodo per l'utente dover andare in una pagina esterna a caricare il file e poi condividere il link in chat. Può già farlo utilizzando transfer.sh, Firefox Send o simili senza nessun nostro intervento.
L'utilizzo di webtorrent, decentralizzato per sua natura però è molto interessante.
Sicuramente da tenere a mente!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants