iorestoacasa-work / iorestoacasa.work

Frontend of the video calling platform iorestoacasa.work
https://iorestoacasa.work
GNU Affero General Public License v3.0
35 stars 9 forks source link

Proposta sperimentazione WebTorrent / Search-ID #69

Open Clodo76 opened 4 years ago

Clodo76 commented 4 years ago

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:

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 commented 4 years ago

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!