Translation to italian language

This commit is contained in:
Stefano Consolaro 2019-11-18 10:18:35 +01:00
parent df53bf845b
commit 611c971a85
16 changed files with 1352 additions and 1308 deletions

View File

@ -1,89 +1,89 @@
# Frequently asked questions
# Domande frequenti
#### Do I need to have a port opened?
#### Deve esserci una porta aperta?
This is __optional__, you can browse and use ZeroNet sites without an open port.
If you want to create a new site it's highly recommended to have an open port.
Questo è __opzionale__, è possibile navigare e usare i siti ZeroNet senza una pora aperta.
Se si vuole creare un nuovo sito è raccomandato avere una porta aperta.
At startup ZeroNet tries to open a port for you on your router using
[UPnP](https://wikipedia.org/wiki/Universal_Plug_and_Play), if this fails you have to do it manually:
All'avvio ZeroNet tenta di aprire una porta sul vostro router utilizzando
[UPnP](https://wikipedia.org/wiki/Universal_Plug_and_Play), se fallisce deve essere eseguito manualmente:
- Try to access your router's web interface using [http://192.168.1.1](http://192.168.1.1)
or [http://192.168.0.1](http://192.168.0.1)
- Look for an "Enable UPnP support" or similar option then restart ZeroNet.
- tentare di accedere all'interfaccia web del router utilizzando [http://192.168.1.1](http://192.168.1.1) o [http://192.168.0.1](http://192.168.0.1)
- cercare l'opzione "Abilitare supporto UPnP" o opzioni simili e riavviare ZeroNet.
If it still doesn't work then try to find a 'port forwarding' section of your router page. This is different for every router. [Here is a tutorial on YouTube.](https://www.youtube.com/watch?v=aQXJ7sLSz14) The port to forward is 15441.
Se ancora non funziona allora cercare la sezione 'inoltro porte' (port forwarding) nelle pagine del router.
Questo è diverso per ogni router. [Qui si trova un tutorial su YouTube.](https://www.youtube.com/watch?v=aQXJ7sLSz14). La porta da inoltrare è la 15441.
---
#### Is ZeroNet anonymous?
#### ZeroNet è anonimo?
It's no more anonymous than BitTorrent, but privacy (the possibility to find out who is the owner of the comment/site) will increase as the network and the sites gains more peers.
Non è più anonimo di BitTorrent, ma la riservatezza (la possibilità di individuare chi è il proprietario del commento/sito) diminuirà man mano che la rete e i siti otterranno altri collegamenti.
ZeroNet is made to work with anonymity networks: you can easily hide your IP using the Tor network.
ZeroNet è realizzato per funzionare con reti anonime: è facile nascondere il proprio IP utilizzando le reti Tor.
---
#### How to use ZeroNet with the Tor browser?
#### Come si utilizza ZeroNet con il browser Tor?
In Tor mode it is recommended to use ZeroNet from within the Tor Browser:
In modalità Tor è consigliato utilizzare ZeroNet con un browser Tor:
- Start the Tor Browser
- Go to address `about:preferences#advanced`
- Click `Settings...`
- Enter `127.0.0.1` to field **No proxy for**
- Open http://127.0.0.1:43110 in the browser
- avviare il browser Tor
- accedere all'indirizzo `about:preferences#advanced`
- fare clic su `Impostazioni...` (`Settings...`)
- inserire `127.0.0.1` nel campo **Non usare proxy per**
- accedere a http://127.0.0.1:43110 nel browser
If you still see a blank page:
- Click on NoScript's button (first on the toolbar)
- Choose "Temporary allow all this page"
- Reload the page
Se si vede ancora una pagina bianca:
- fare clic sul bottone SenzaScript (NoScript) (primo nella barra strumenti)
- scegliere "Abilita temporaneamente tutto per questa pagina"
- ricaricare la pagina
---
#### How to use ZeroNet with Tor?
#### Come si utilizza ZeroNet con Tor?
If you want to hide your IP address, install the latest version of ZeroNet then click Tor > Enable Tor for every connection on ZeroHello.
Se si vuole nascondere il proprio indirizzo IP, installare l'ultima versione di ZeroNet e fare clic su Tor > Abilita Tor per ogni connessione su ZeroHello.
On Windows, Tor is bundled with ZeroNet. ZeroNet will attempt to download and unpack Tor on its first run. If this fails for any reason, you can install it manually following the instruction in `core\tools\tor\manual_install.txt`.
In Windows, Tor è fornito con ZeroNet. ZeroNet tenterà di scaricare e aprire Tor al primo avvio. Se fallisce per qualsiasi ragione, può essere installato manualmente seguendo le istruzioni in `core\tools\tor\manual_install.txt`.
For other OS's, follow the instructions in the "How to make ZeroNet work with Tor under Linux/MacOS" section.
Per altri sistemi operativi, seguire le istruzioni nella sezione "Come far funzionare ZeroNet con Tor in Linux/MacOS".
> __Tip:__ You can verify your IP address using ZeroNet's [Stats](http://127.0.0.1:43110/Stats) page.
> __Suggerimento:__ Si può verificare il proprio indirizzo IP utilizzando la pagina ZeroNet [Statistiche](http://127.0.0.1:43110/Stats).
> __Tip:__ If you get connection errors, make sure you have the latest version of Tor installed. (0.2.7.5+ required)
> __Suggerimento:__ Se si hanno errori di connessione, assicurarsi di avere l'ultima versione di Tor installata. (richiesta 0.2.7.5+)
---
#### How to make ZeroNet work with Tor under Linux/MacOS?
#### Come si utilizza ZeroNet con Tor in Linux/MacOS?
- Install Tor for your OS following Tor's official guidelines: [Linux](https://www.torproject.org/docs/tor-doc-unix.html.en) [Mac](https://www.torproject.org/docs/tor-doc-osx.html.en).
- Installare Tor per il sistema operativo usato seguendo la guda ufficiale Tor: [Linux](https://www.torproject.org/docs/tor-doc-unix.html.en) [Mac](https://www.torproject.org/docs/tor-doc-osx.html.en).
- `sudo nano /etc/tor/torrc`
- Remove the `#` character from lines `ControlPort 9051` and `CookieAuthentication 1` (line ~57)
- Restart tor
- Add permission for yourself to read the auth cookie. With Debian Linux, the command is `sudo usermod -a -G debian-tor [yourlinuxuser]`<br>(if you are not on Debian check the file's user group by `ls -al /var/run/tor/control.authcookie`)
- Logout/Login with your user to apply group changes
- Eliminare il carattere `#` dalle linee `ControlPort 9051` e `CookieAuthentication 1` (linea ~57)
- Riavviare Tor
- Aggiungere il permesso a se stessi alla lettura del cookie di autorizzazione. Con Linux Debian, il comando è `sudo usermod -a -G debian-tor [vostroUtenteLinux]`<br>(se non siete in una Debian controllare il file dei gruppi utente in `ls -al /var/run/tor/control.authcookie`)
- Eseguire logout/login con il vostro utente per applicare le modifiche
> __Tip:__ Use the `ls -ld /var/run/tor` command to make sure it has the correct `drwxr-sr-x` permission bits. (fix it with `chmod g+sx /var/run/tor/` if necessary)
> __Suggerimento:__ Usare il comando `ls -ld /var/run/tor` per essere sicuri di avere i permessi `drwxr-sr-x` corretti. (sistemare con `chmod g+sx /var/run/tor/` se necessario)
> __Tip:__ You can verify if your Tor setup is running correctly using `echo 'PROTOCOLINFO' | nc 127.0.0.1 9051`
> __Suggerimento:__ Si può verificare se Tor sta funzionando correttamente utilizzando `echo 'PROTOCOLINFO' | nc 127.0.0.1 9051`
> __Tip:__ It's also possible to use Tor without modifying torrc (or to use older versions of Tor clients), by running `zeronet.py --tor disable --proxy 127.0.0.1:9050 --disable_udp`, but then you will lose ability to talk with other .onion addresses.
> __Suggerimento:__ É anche possibile utilizzare Tor senza modificare torrc (o usare vecchie versioni dei client Tor), eseguendo `zeronet.py --tor disable --proxy 127.0.0.1:9050 --disable_udp`, ma questo impedirà la possibilità di dialogare con altri indirizzi .onion.
---
#### Is it possible to use a configuration file?
#### É possibile usare un file di configurazione?
Any command line configuration flag can also be used as a configuration option. Place these options line-by-line into a file called `zeronet.conf` in your top-level zeronet directory (the one with zeronet.py). Example:
Ogni parametro di configurazione della riga di comando può essere utilizzato come una opzione di configurazione. Inserire queste opzioni una per riga in un file nominato `zeronet.conf` nella cartella principale di zeronet (quella in cui è presente zeronet.py). Esempio:
```
[global]
@ -94,14 +94,14 @@ ui_restrict =
2.3.4.5
```
To list possible options, use the `zeronet.py --help` command
Per visualizzare le possibili opzioni, tilizzare il comando `zeronet.py --help`
---
#### How to make Tor work if my ISP or goverment blocks it?
#### Come far funzionare Tor se l'ISP o il governo lo bloccano?
ZeroNet does not include [Tor pluggable transports](https://www.torproject.org/docs/pluggable-transports.html.en) yet. The easiest way to make Tor work in a censored network is to start the Tor browser, configure it to connect to the Tor network with working pluggable transports, and modify ZeroNet's config to use Tor browser's proxy and control port by starting ZeroNet with `--tor_controller 127.0.0.1:9151 --tor_proxy 127.0.0.1:9150` or by adding these parameters to `zeronet.conf`.
ZeroNet non include ancora i [trasporti Tor collegabili ](https://www.torproject.org/docs/pluggable-transports.html.en). Il modo più semplice per far funzionare Tor in una rete censurata è di avviare il browser Tor, configurarlo per connettersi con la rete Tor attraverso i trasporti collegabili attivi, e modificare la configurazione di ZeroNet per usare il proxy del browser Tor e la porta di controllo avviando ZeroNet con `--tor_controller 127.0.0.1:9151 --tor_proxy 127.0.0.1:9150` o aggiungendo questi parametri al file `zeronet.conf`.
```
[global]
@ -113,30 +113,30 @@ tor_proxy = 127.0.0.1:9150
---
#### Can I use the same username on multiple machines?
#### É possibile usare lo stesso nome utente su macchine diverse?
Yes, simply copy the `data/users.json` file to your new machine.
Sì, basta copiare il file `data/users.json` nella nuova macchina.
---
#### How to create a "fancy" (non .bit) site address?
#### Come si crea un indirizzo di "fantasia" (non .bit) di un sito?
Use [vanitygen](https://bitcointalk.org/index.php?topic=25804.0) to generate one. Once you get your keys, create `data/1YourPublicKey...tCkBzAXTKvJk4uj8` directory. Put some files there.
Utilizzare [vanitygen](https://bitcointalk.org/index.php?topic=25804.0) per generarne uno. Ua volta ottenute le chiavi, creare la cartella `data/1YourPublicKey...tCkBzAXTKvJk4uj8`. Inserire i file desiderati.
Then navigate to [http://127.0.0.1:43110/1YourPublicKey...tCkBzAXTKvJk4uj8/](http://127.0.0.1:43110/1YourPublicKey...tCkBzAXTKvJk4uj8/). Drag the `0` button to the left and use the sidebar to sign your site.
Navigare a [http://127.0.0.1:43110/1YourPublicKey...tCkBzAXTKvJk4uj8/](http://127.0.0.1:43110/1YourPublicKey...tCkBzAXTKvJk4uj8/). Trascinare il bottone `0` a sinistra e usare la barra scorrevole per registrare il sito.
---
#### How can I register a .bit domain?
#### Come si registra un dominio .bit?
You can register .bit domains using [Namecoin](https://namecoin.info/).
Manage your domains using the client's GUI or by the [command line interface](https://github.com/namecoin/wiki/blob/master/How-to-register-and-configure-.bit-domains.md).
Si può registrare un dominio .bit utilizzando [Namecoin](https://namecoin.info/).
Gestire i propri domini con l'interfaccia grafica del client o attraverso l'[interfaccia a riga comando](https://github.com/namecoin/wiki/blob/master/How-to-register-and-configure-.bit-domains.md).
After the registration is done you have to edit your domain's record by adding a zeronet section to it, e.g.:
Completata la registrazione deve essere modificato il registro del dominio aggiungendo la sezione `zeronet`, es.:
```
{
@ -150,107 +150,107 @@ After the registration is done you have to edit your domain's record by adding a
}
```
> __Tip:__ Other possibilities to register .bit domains: [domaincoin.net](https://domaincoin.net/), [peername.com](https://peername.com/), [dotbit.me](https://dotbit.me/)
> __Suggerimento:__ Altre possibilità per registrare un dominio .bit: [domaincoin.net](https://domaincoin.net/), [peername.com](https://peername.com/), [dotbit.me](https://dotbit.me/)
> __Tip:__ You can verify your domain on [namecha.in](http://namecha.in/), for example: [zeroid.bit](http://namecha.in/name/d/zeroid)
> __Suggerimento:__ Il dominio può essere verificato in [namecha.in](http://namecha.in/), per esempio: [zeroid.bit](http://namecha.in/name/d/zeroid)
> __Tip:__ You should use only [lower-cased letters, numbers and - in your domains](http://wiki.namecoin.info/?title=Domain_Name_Specification_2.0#Valid_Domains).
> __Suggerimento:__ Devono essere utilizzate solo [lettere minuscole, numeri e - nel dominio](http://wiki.namecoin.info/?title=Domain_Name_Specification_2.0#Valid_Domains).
> __Tip:__ To make ZeroHello display your domain name instead of your site's Bitcoin address, add a domain key to your content.json. ([Example](https://github.com/HelloZeroNet/ZeroBlog/blob/master/content.json#L6))
> __Suggerimento:__ Perché ZeroHello visualizzi il nome del dominio invece del dell'indirizzo Bitcoin del sito, aggiungere una chiave di dominio al file content.json. ([Esempio](https://github.com/HelloZeroNet/ZeroBlog/blob/master/content.json#L6))
---
#### Can I use the generated site address/private key to accept Bitcoin payments?
#### É possibile utilizzare l'indirizzo del sito/chiave privata per accettare pagamenti Bitcoin?
Yes, it's a standard Bitcoin address. The private key is WIF formatted, so you can import it in most clients.
Sì, è un indirizzo Bitcoin standard. La chiave privata ha un formato WIF, che è possibile importare in molti client.
> __Tip:__ It's not recommended to keep a high amount of money on your site's address, because you have to enter your private key every time you modify your site.
> __Suggerimento:__ Non è raccomandato mantenere un valore rilevante sull'indirizzo del sito, perché è necessario inserire la chiave privata ad ogni modifica del sito.
---
#### What happens when someone hosts malicious content?
#### Cosa succede se si ospita contenuti maligni?
The ZeroNet sites are sandboxed, they have the same privileges as any other website you visit over the Internet.
You are in full control of what you are hosting. If you find suspicious content you can stop hosting the site at any time.
I siti ZeroNet sono isolati (sandbox), hanno gli stessi privilegi degli altri siti web che si visitano in Internet.
Si ha il pieno controllo di ciò che si ospita. Se si trovano dei contenuti sospetti è possibile smettere di ospitare il sito in qualsiasi momento.
---
#### Is it possible to install ZeroNet to a remote machine?
#### É possibile installare ZeroNet su una macchina remota?
Yes, you have to enable the UiPassword plugin by renaming the __plugins/disabled-UiPassword__ directory to __plugins/UiPassword__,
then start ZeroNet on the remote machine using <br>`zeronet.py --ui_ip "*" --ui_password anypassword`.
This will bind the ZeroNet UI webserver to all interfaces, but to keep it secure you can only access it by entering the given password.
Sì, serve abilitare il plugin UiPassword rinominando la cartella __plugins/disabled-UiPassword__ in __plugins/UiPassword__,
quindi avviare ZeroNet nella macchina remota utilizzando <br>`zeronet.py --ui_ip "*" --ui_password qualsiasipassword`.
Questo collegherà l'interfaccia utente del webserver ZeroNet UI con tutte le interfaccie, ma per mantenerla sicura si potrà accedere solamente inserendo la password impostata.
> __Tip:__ You can also restrict the interface based on ip address by using `--ui_restrict ip1 ip2`.
> __Suggerimento:__ É possibile limitare l'interfaccia in base all'IP utilizzando `--ui_restrict ip1 ip2`.
> __Tip:__ You can specify the password in the config file by creating a `zeronet.conf` file and adding `[global]` and `ui_password = anypassword` lines to it.
> __Suggerimento:__ É possibile indicare la password nella configurazione creando un file `zeronet.conf` e aggiungendo le righe `[global]` e `ui_password = qualsiasipassword`.
---
#### Is there any way to track the bandwidth ZeroNet is using?
#### É possibile monitorare la banda che ZeroNet sta utilizzando?
The sent/received bytes are displayed at ZeroNet's sidebar.<br>(open it by dragging the topright `0` button to left)
I byte spediti/ricevuto sono visualizzati nella barra laterale ZeroNet.<br>(per aprirla trascinare verso sinistra il bottone `0` in alto a destra)
> __Tip:__ Per connection statistics page: [http://127.0.0.1:43110/Stats](http://127.0.0.1:43110/Stats)
> __Suggerimento:__ Pagina delle statistiche per connessione: [http://127.0.0.1:43110/Stats](http://127.0.0.1:43110/Stats)
---
#### What happens if two people use the same keys to modify a site?
#### Cosa succede se due persone utilizzano la stessa kiave per modificare un sito?
Every content.json file is timestamped, the clients always accept the newest one with a valid signature.
Ogni file content.json ha un riferimento data-ora, il client accetta sempre il più recente con una firma valida.
---
#### Does ZeroNet use Bitcoin's blockchain?
#### ZeroNet utilizza la blockchain Bitcoin?
No, ZeroNet only uses the cryptography of Bitcoin for site addresses and content signing/verification.
User identification is based on Bitcoin's [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) format.
No, ZeroNet utilizza soltanto la critografia Bitcoin per l'indirizzamento del sito e la fimra/verifica del contenuto.
L'identificazione dell'utente si basa sul formato Bitcoin [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki).
Namecoin's blockchain is being used for domain registrations, however clients do not download the blockchain. Blockchain metadata is instead passed over the ZeroNet network.
La blockchain Namecoin è utilizzata per la registrazione del dominio, comunque il client non scarica la blockchain. I metadati della blockchain sono invece trasmessi attraverso la rete ZeroNet.
---
#### Does ZeroNet only support HTML, CSS websites?
#### ZeroNet supporta solo siti HTML, CSS?
ZeroNet is built for dynamic, real-time updated websites, but you can serve any kind of files using it, such as (VCS repositories, your own thin-client, database, etc.
ZeroNet è sviluppata per siti dinamici aggiornati in tempo reale, ma posso essere distribuiti file di qualsiasi tipo, come depositi VCS, il proprio thin-client, database, ecc.
---
#### How can I create a new ZeroNet site?
#### Come si crea un nuovo sito ZeroNet?
[Follow these instructions.](../using_zeronet/create_new_site/)
[Seguire queste istruzioni.](../using_zeronet/create_new_site/)
---
#### What happens when I access a site?
#### Cosa succede quando si accede ad un sito?
- When you want to open a new site it asks for visitor's IP addresses from BitTorrent trackers.
- Initially, a file named __content.json__ is downloaded, which holds all other filenames,
__hashes__ and the site owner's cryptographic signature.
- The downloaded content.json file is __verified__ using the site's __address__ and the site owner's __signature__ from the file.
- Other files (html, css, js...) are then __downloaded__ and verified using their size and SHA512 hash from content.json.
- Each visited site then becomes __also served by you__.
- If the site owner (who has the private key for the site address) __modifies__ the site, then he/she signs
the new content.json and __publishes it to peers__. After the peers have verified the file's
integrity (using the signature), they __download the modified files__ and serve the new content to other peers.
- Quando si richiede di aprire un nuovo sito viene richiesto l'IP del visitatore dal registro BitTorrent.
- Inizialmente, viene scaricato il file __content.json__, che contiene tutti i nomi degli altri file,
__chiavi__ (hashe) e la firma criptografica del proprietario del sito.
- Il file content.json scaricato viene __verificato__ utilizzando l'__indirizzo__ del sito e la __firma__ del proprietario del sito presente nel file.
- Quindi vengono __scaricati__ gli altri file (html, css, js...) e verificati utilizzando la loro dimensione e la chiave SHA512 dal file content.json.
- Ogni sito visitato diventa __distribuito dal visitatore__.
- Se il proprietario del sito (che ha la chiave privata dell'indirizzo dle sito) __modifica__ il sito, allora viene firmato il nuovo
content.json e __pubbicato ai peer (distributori)__. Dopo che i peer hanno verificato l'integrità del file
(utilizzando la firma), __scaricano i file modificati__ e forniscono i nuovi contenuti ad altri peer.
More info:
[ZeroNet sample sites](../using_zeronet/sample_sites/),
[Slideshow about how ZeroNet works](https://docs.google.com/presentation/d/1_2qK1IuOKJ51pgBvllZ9Yu7Au2l551t3XBgyTSvilew/pub)
Ulteriori informazioni:
[Siti esempio ZeroNet](../using_zeronet/sample_sites/),
[Presentazione di come lavora ZeroNet](https://docs.google.com/presentation/d/1_2qK1IuOKJ51pgBvllZ9Yu7Au2l551t3XBgyTSvilew/pub)

View File

@ -1,20 +1,20 @@
# Coding standards if you want to collaborate to ZeroNet
- Follow [PEP8](https://www.python.org/dev/peps/pep-0008/)
- Simple is better than complex
- Premature optimization is the root of all evil
# Standard di programmazione per collaborare a ZeroNet
- Seguire [PEP8](https://www.python.org/dev/peps/pep-0008/)
- Semplice è meglio che complesso
- L'ottimizzazione prematura è la strada verso la perdizione
### Naming
- ClassNames: Capitalized, CamelCased
- functionNames: starts with lowercase, camelCased
- variable_names: lowercased, under_scored
### Nomenclatura
- NomiDelleClassi: iniziali delle parole maiuscole (CamelCased)
- nomiDelleFunzioni: iniziale minuscola, le altre parole con inziale maiuscola (camelCased)
- nomi_delle_variabili: minuscolo con parole separate da underscore (under_scored o snaked_name)
### Variables
- file_path: File path realtive to working dir (data/17ib6teRqdVgjB698T4cD1zDXKgPqpkrMg/css/all.css)
- inner_path: File relative to site dir (css/all.css)
- file_name: all.css
- file: Python file object
- privatekey: Private key for the site (without _)
### Variabili
- percorso_file: percorso dei file relativo alla cartella di lavoro (data/17ib6teRqdVgjB698T4cD1zDXKgPqpkrMg/css/all.css)
- percorsi_interni: percorsi relativi alle cartelle del sito (css/all.css)
- nomi_file: all.css
- file: oggetti Python
- privatekey: chiave privata per il sito (senza _)
### Source files directories and naming
- One class per file is preferred
- Source file name and directory comes from ClassName: WorkerManager class = Worker/WorkerManager.py
### Cartelle file sorgenti e nomenclatura
- É preferibile un file per classe
- I nomi dei file sorgenti e delle cartelle derivano dal NomeClasse: WorkerManager class = Worker/WorkerManager.py

View File

@ -1,64 +1,64 @@
# Contributing to ZeroNet
# Contribuire a ZeroNet
Thank you for using ZeroNet. ZeroNet is a collaborative effort of 67+ decentralization enthusiasts just like you. We appreciate all users that catch bugs, improve documentation and have good ideas of designing new protocols. Here are a few guidelines we ask you to follow to get started with making your contribution.
Grazie di utilizzare ZeroNet. ZeroNet è un impegno collaborativo di più di 67 entusiasti decentralizzati come te. Apprezziamo tutti gli utenti che trovano errori, migliorano la documentazione e hanno buone idee per progettare nuovi protocolli. Qui ci sono alcune linee guida che chiediamo di seguire per iniziare a contribuire.
### You dont have to contribute source code
### Non serve contribuire con il codice sorgente
In fact, a majority of contributors do not submit source code. Even if you like to write programs, other types of contribution are also welcomed.
In fatti, la maggior parte dei contributori non invia codice. Anche se ti piace scrivere codice sono apprezzati altri tipi di contribuzione.
### Do you like to write?
### Ti piace scrivere?
- Write about ZeroNet.
- Write tutorials to help people set things up.
- Help translate ZeroNet.
- Improve this documentation. This documentation is a written by many community members all over the world.
- Racconta ZeroNet.
- Scrivi tutorial per aiutare le persone ad impostare le cose.
- Aiuta a tradurre ZeroNet.
- Migliora la documentazione. Questa documentazione è composta da diversi membri della comunità provenienti da tutto il mondo.
### Do you like helping people?
### Ti piace aiutare le persone?
- Subscribe to our [issue tracker on GitHub](https://github.com/HelloZeroNet/ZeroNet/issues) and help people solve problems.
- Join us on [Gitter](https://gitter.im/HelloZeroNet/ZeroNet) and IRC channel [#zeronet @ freenode](https://kiwiirc.com/client/irc.freenode.net/zeronet) and help answer questions.
- Set up a seed box and help make the network faster.
- Iscriviti sul nostro [gestore di argomenti su GitHub](https://github.com/HelloZeroNet/ZeroNet/issues) e aiuta le persone a risolvere i problemi.
- Unisciti a noi su [Gitter](https://gitter.im/HelloZeroNet/ZeroNet) e canale IRC [#zeronet @ freenode](https://kiwiirc.com/client/irc.freenode.net/zeronet) e aiuta a risposndere ai quesiti.
- Attiva una condivisione e aiuta a mantenere veloce la rete.
### Do you like to make websites?
### Ti piace realizzare siti Web?
- Create new ZeroNet sites. Go ahead and make your own blog on ZeroNet. [It is easy and costs little.](../using_zeronet/create_new_site.md)
- “Content is king!” as NoFish puts. The network is worth nothing without content, so we need You to make it succeed.
- Crea nuovi siti ZeroNet. Crea il tuo blog su ZeroNet. [É semplice e costa poco.](../using_zeronet/create_new_site.md)
- “Il contenuto è re!” come dice NoFish. La rete non vale nulla senza contnuti, quindi ci servi TU per avere successo.
### Do you like to do research?
### Ti piace la ricerca?
- Help us investigate our [hard issues](https://github.com/HelloZeroNet/ZeroNet/labels/help%20wanted).
- Join our discussion of designing new features and protocols, such as [I2P support](https://github.com/HelloZeroNet/ZeroNet/issues/45) and [DHT support](https://github.com/HelloZeroNet/ZeroNet/issues/57).
- Do you own a [Raspberry Pi](https://github.com/HelloZeroNet/ZeroNet#linux-terminal), a [C.H.I.P.](http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:94:Running+ZeroNet+on+a+$9%C2%A0computer) or an [open router](https://github.com/HelloZeroNet/ZeroNet/issues/783)? Try running ZeroNet on it and tell us how well ZeroNet works on your device.
- Aiutaci ad investigare i nostri [problemi difficili](https://github.com/HelloZeroNet/ZeroNet/labels/help%20wanted).
- Unisciti alle nostre discussioni sul progeto di nuove funzionalità e protocolli, come il [supporto a I2P](https://github.com/HelloZeroNet/ZeroNet/issues/45) e [il supporto a DHT](https://github.com/HelloZeroNet/ZeroNet/issues/57).
- Possiedi un [Raspberry Pi](https://github.com/HelloZeroNet/ZeroNet#linux-terminal), un [C.H.I.P.](http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:94:Running+ZeroNet+on+a+$9%C2%A0computer) o un [open router](https://github.com/HelloZeroNet/ZeroNet/issues/783)? Prova a farlo funzionare con ZeroNet e raccontaci come lavora ZeroNet sul tuo dispositivo.
### Do you like to write code?
### Ti piace scrivere codice?
- If you know Python, you can pick a task from our [issue tracker on GitHub](https://github.com/HelloZeroNet/ZeroNet/issues).
- You are also welcomed develop your own ideas. Before you start, please [open a new discussion](https://github.com/HelloZeroNet/ZeroNet/issues/new) to let the community know, so you can make sure we can share our ideas to make the best out of it.
- Keep your coding style consistent. We ask you to follow our coding convention below.
- Se conosci Python, puoi sceglere un lavoro dal nostro [gestore di argomenti su GitHub](https://github.com/HelloZeroNet/ZeroNet/issues).
- Sono apprezzate anche le tue idee di sviluppo. Prima di iniziare, perfavore [apri una nuova discussione](https://github.com/HelloZeroNet/ZeroNet/issues/new) per farlo sapere alla comunità, così sarai sicuro che condivideremo le tue idee per farle rendere al meglio.
- Mantieni il tuo stile coerente. Ti chiediamo di seguire le convenzioni riportare più avanti.
### Do you like to offer financial support?
### Vorresti offrire supporto finanziario?
- You can [donate bitcoins](donate.md) to support ZeroNet.
- Puoi [donare Bitcoins](donate.md) per supportare ZeroNet.
## Coding convention
## Convenzioni di sviluppo codice
- Follow [PEP8](https://www.python.org/dev/peps/pep-0008/)
- Simple is better than complex
- Premature optimization is the root of all evil
- Seguire [PEP8](https://www.python.org/dev/peps/pep-0008/)
- Semplice è meglio che complesso
- L'ottimizzazione prematura è la strada per la perdizione
### Naming
- ClassNames: Capitalized, CamelCased
- functionNames: starts with lowercase, camelCased
- variable_names: lowercased, under_scored
### Nomenclatura
- NomiDelleClassi: iniziali delle parole maiuscole (CamelCased)
- nomiDelleFunzioni: iniziale minuscola, le altre parole con inziale maiuscola (camelCased)
- nomi_delle_variabili: minuscolo con parole separate da underscore (under_scored o snaked_name)
### Variables
- file_path: File path relative to working dir (data/17ib6teRqdVgjB698T4cD1zDXKgPqpkrMg/css/all.css)
- inner_path: File relative to site dir (css/all.css)
- file_name: all.css
- file: Python file object
- privatekey: Private key for the site (without `_`)
### Variabili
- percorso_file: percorso dei file relativo alla cartella di lavoro (data/17ib6teRqdVgjB698T4cD1zDXKgPqpkrMg/css/all.css)
- percorsi_interni: percorsi relativi alle cartelle del sito (css/all.css)
- nomi_file: all.css
- file: oggetti Python
- privatekey: chiave privata per il sito (senza _)
### Source files directories and naming
- One class per file is preferred
- Source file name and directory comes from ClassName: WorkerManager class = Worker/WorkerManager.py
### Cartelle file sorgenti e nomenclatura
- É preferibile un file per classe
- I nomi dei file sorgenti e delle cartelle derivano dal NomeClasse: WorkerManager class = Worker/WorkerManager.py

View File

@ -1,13 +1,13 @@
<link rel=stylesheet href="../../bitcoinbar/bitcoinbar.css">
# Help to keep ZeroNet development alive
# Contribuisci a mantenere vivo lo sviluppo di ZeroNet
## ZeroNet general development
## Sviluppo generale di ZeroNet
<a href="bitcoin:1QDhxQ6PraUZa21ET5fYUCPgdrwBomnFgX?Label=ZeroNet+donation" class="bitcoinbar" data-address="1QDhxQ6PraUZa21ET5fYUCPgdrwBomnFgX" data-goal="0"></a>
<div>or using PayPal:
<div>o usando PayPal:
<a href="https://www.paypal.me/zeronet/0usd"><img alt="" border="0" src="https://www.paypalobjects.com/webstatic/en_US/btn/btn_donate_pp_142x27.png"></a>
</form>
@ -16,110 +16,110 @@
---
## Bitmessage support
## Supporto Bitmessage
<a href="bitcoin:1JxwXnjkv5M822aoJEVJawnS2uKnnT216Z?Label=ZeroNet+Bitmessage+donation" class="bitcoinbar" data-address="1JxwXnjkv5M822aoJEVJawnS2uKnnT216Z" data-goal="1.0"></a>
* Send and receive Bitmessage messages using local client's XMLRPC API interface
* Invia e ricevi messaggi Bitmessage utilizzando l'interfaccia XMLRPC API del client locale
Benefits:
Benefici:
* Send your permission request to site owner via bitmessage
* Possible private messaging/commenting webui integration to sites
* Invia la richiesta di accesso al proprietario del sito via Bitmessage
* Possibilità di integrare con l'interfaccia web i messaggi/commenti privati
[Github issue](https://github.com/HelloZeroNet/ZeroNet/issues/65)
[Segnalazione Github ](https://github.com/HelloZeroNet/ZeroNet/issues/65)
---
## <s>Namecoin domain support</s> (done in version 0.2.8)
## <s>Supporto dominio Namecoin</s> (dalla versione 0.2.8)
* Use Namecoin domain names to access sites
* Utilizzare i nomi di dominio Namecoin per accedere ai siti
Benefits:
Benefici:
* Easier to remember site addresses
* Indirizzi dei siti facili da ricordare
[Github issue](https://github.com/HelloZeroNet/ZeroNet/issues/31)
[Segnalazione Github](https://github.com/HelloZeroNet/ZeroNet/issues/31)
---
## DHT support
## Supporto DHT
<a href="bitcoin:122tqTo5jTsZfF4xFodhM54b5HUkeVQL4E?Label=ZeroNet+DHT+donation" class="bitcoinbar" data-address="122tqTo5jTsZfF4xFodhM54b5HUkeVQL4E" data-goal="3.0"></a>
* Peer discovery using DHT
* Trovare i peer utilizzando DHT
Benefits:
Benefici:
* Peer discovery no longer relies on torrent network
* Ipv6 and Tor peer discovery
* La ricerca dei peer non si appoggia più alla rete Torrent
* Ricerca dei peer Ipv6 e Tor
[Github issue](https://github.com/HelloZeroNet/ZeroNet/issues/57)
[Segnalazione Github](https://github.com/HelloZeroNet/ZeroNet/issues/57)
---
## Private sites
## Siti privati
<a href="bitcoin:1Q3jV3bAZxKBdMtVjnzfpcsmtXDspjGMnG?Label=ZeroNet+Private+sites" class="bitcoinbar" data-address="1Q3jV3bAZxKBdMtVjnzfpcsmtXDspjGMnG" data-goal="2.0"></a>
* Passworded or public key based peer auth to sites
* Autenticazione dei peer ai siti con password o chiave pubblica
Benefits:
Benefici:
* Secure control over peers who has access to your site
* Controllo sicuro dei peer cha hanno accesso al tuo sito
[Github issue](https://github.com/HelloZeroNet/ZeroNet/issues/62)
[Segnalazione Github ](https://github.com/HelloZeroNet/ZeroNet/issues/62)
---
## <s>Full Tor support</s> (done in version 0.3.5)
## <s>Completo supporto Tor</s> (dalla versione 0.3.5)
* Allow to seed sites and connect other peers using Tor network (Probably depends on DHT support)
* Consente di condividere i siti e connettere altri peer utilizzando la rete Tor (Probabilmente dipende dal supporto DHT)
Benefits:
Benefici:
* Hiding your IP when distributing new content or downloading site
* Nascondere il proprio IP nella distribuzione di nuovi contenuti o scaricando i siti
[Github issue](https://github.com/HelloZeroNet/ZeroNet/issues/60)
[Segnalazione Github](https://github.com/HelloZeroNet/ZeroNet/issues/60)
---
## <s>Multiuser proxy support</s> (done in version 0.2.7)
## <s>Supporto proxy multiutente</s> (dalla versione 0.2.7)
* User login/logout using bip32 master seed
* Login/logout utente utilizzando la chiave principale bip32
Benefits:
Benefici:
* Makes open ZeroNet proxies usable
* Use local ZeroNet more than one user
* Rende i proxy aperti ZeroNet utilizzabili
* Utilizzare ZeroNet locale per più utenti
[Github issue](https://github.com/HelloZeroNet/ZeroNet/issues/58)
[Segnalazione Github](https://github.com/HelloZeroNet/ZeroNet/issues/58)
---
## Where does the donation go?
## Dove finiscono le donazioni?
The task's received donation goes directly to the developer(s) who successfully and properly integrates the feature (please add your plans and ideas to the issue before you start working on anything big).
Le donazioni ricevute da un lavoro vanno direttamente agli sviluppatori che realizzano con successo la nuova funzione (per favore aggiungere i piani e le idee alla segnalazione prima di iniziare a lavorare su progetti rilevanti).
# Sponsors
* Better OSX/Safari compatibility made possible by [BrowserStack.com](https://www.browserstack.com/)
* Migliore compatibilità OSX/Safari resa possibile da [BrowserStack.com](https://www.browserstack.com/)
<script src='../../jquery.min.js'></script>
<script src='../../bitcoinbar/bitcoinbar.js'></script>

View File

@ -1,52 +1,52 @@
# ZeroNet network protocol
# Protocollo di rete ZeroNet
- Every message is encoded using [MessagePack](http://msgpack.org/)
- Every request has 3 parameters:
* `cmd`: The request command
* `req_id`: The request's unique id (simple, incremented nonce per-connection), the client has to include this when reply to the command.
* `params`: Parameters for the request
- Example request: `{"cmd": "getFile", "req_id": 1, "params:" {"site": "1EU...", "inner_path": "content.json", "location": 0}}`
- Example response: `{"cmd": "response", "to": 1, "body": "content.json content", "location": 1132, "size": 1132}`
- Example error response: `{"cmd": "response", "to": 1, "error": "Unknown site"}`
- Ogni messaggio è codificato utilizzando [MessagePack](http://msgpack.org/)
- Ogni richiesta ha tre parametri:
* `cmd`: il comando richiesto
* `req_id`: un ID univoco della richiesta (semplice parola univoca incrementata per connessione), il client deve includerla nella risposta al comando
* `params`: parametri della richiesta
- Esempio di richiesta: `{"cmd": "getFile", "req_id": 1, "params:" {"site": "1EU...", "inner_path": "content.json", "location": 0}}`
- Esempio di risposta: `{"cmd": "response", "to": 1, "body": "content.json content", "location": 1132, "size": 1132}`
- Esmpio risposta con errore: `{"cmd": "response", "to": 1, "error": "Unknown site"}`
# Handshake
Every connection begins with a handshake by sending a request to the target network address:
Ogni connessione inizia con un riconoscimento (handshake) inviando una richiesta all'indirizzo richiesto della rete:
Parameter | Description
Parametro | Descrizione
--- | ---
**crypt** | Null/None, only used in respones
**crypt_supported** | An array of connection encryption methods supported by the client
**fileserver_port** | The client's fileserver port
**onion** | (Only used on tor) The client's onion address
**protocol** | The protocol version the client uses (v1 or v2)
**port_opened** | The client's client port open status
**peer_id** | (Not used on tor) The client's peer_id
**rev** | The client's revision number
**version** | The client's version
**target_ip** | The server's network address
**crypt** | Null/None, utilizzato solo nelle risposte
**crypt_supported** | Un elenco di metodi di crittografia supportati dal client
**fileserver_port** | porta del file server del client
**onion** | (utilizzato solo su Tor) indirizzo onion del client
**protocol** | versione del protocollo utilizzata dal client (v1 o v2)
**port_opened** | stato aperto della porta client del client
**peer_id** | (non utilizzato in Tor) il peer_id del client
**rev** | il numero revisione del client
**version** | versione del client
**target_ip** | indirizzo di rete del server
The target initialize the encryption on the socket based on `crypt_supported`, then return:
La destinazione inizializza la crittografia sul socket in base a `crypt_supported`, quindi restituisce:
Return key | Description
Chiave resa | Descrizione
--- | ---
**crypt** | The encryption to use
**crypt_supported** | An array of connection encryption methods supported by the server
**fileserver_port** | The server's fileserver port
**onion** | (Only used on tor) The server's onion address
**protocol** | The protocol version the server uses (v1 or v2)
**port_opened** | The server's client port open status
**peer_id** | (Not used on tor) The server's peer_id
**rev** | The server's revision number
**version** | The server's version
**target_ip** | The client's network address
**crypt** | la crittografia da utilizzare
**crypt_supported** | un elenco di metodi di crittografia supportati dal server
**fileserver_port** | porta del file server del server
**onion** | (utilizzato solo su Tor) indirizzo onion del server
**protocol** | versione del protocollo utilizzata dal server (v1 o v2)
**port_opened** | stato aperto della porta client del server
**peer_id** | (non utilizzato in Tor) il peer_id del server
**rev** | numero revisione del server
**version** | versione del server
**target_ip** | indirizzo di rete del client
> **Note:** No encryption used on .onion connections, as the Tor network provides the transport security by default.
> **Note:** You can also implicitly initialize SSL before the handshake if you can assume it supported by remote client.
> **Nota:** non si utilizza la crittografia nelle connessioni .onion, perché la rete Tor fornisce la sicurezza di trasporto di default.
> **Nota:** si può anche inizializzare l'SSL prima dell'handshake se si suppone che è supportato dal client remoto.
**Example**:
**Esempio**:
Sent handshake:
Invio handshake:
```json
{
@ -67,7 +67,7 @@ Sent handshake:
}
```
Return:
Risposta:
```
{
@ -86,39 +86,39 @@ Return:
}
```
# Peer requests
# Richiesta peer
#### getFile _site_, _inner_path_, _location_, _[file_size]_
Request a file from the client
Richiesta di un file dal client
Parameter | Description
Parametro | Descrizione
--- | ---
**site** | Site address (example: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**inner_path** | File path relative to site directory
**location** | Request file from this byte (max 512 bytes got sent in a request, so you need multiple requests for larger files)
**file_size** | Total size of the requested file (optional)
**site** | Indirizzo del sito (esempio: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**inner_path** | Percorso del file relativo alla cartella del sito
**location** | Richede il file da questo byte (vengono inviati al massimo 512 byte per richiesta, quindi servono richieste multiple per file grandi)
**file_size** | Dimensione del file richiesto (opzionale)
**Return**:
**Risposta**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**body** | The requested file content
**location** | The location of the last byte sent
**size** | Total size of the file
**body** | Contenuto del file richiesto
**location** | Posizione dell'ultimo byte inviato
**size** | Dimensione del file
---
#### streamFile _site_, _inner_path_, _location_, _[file_size]_
Stream a file from the client
Stream di un file dal client
**Return**:
**Risposta**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**stream_bytes** | The length of file data after the MessagePack payload
**stream_bytes** | Lunghezza dei dati del file dopo il contenuto di MessagePack
To avoid having python-msgpack serialize large binary strings, the file body is appended directly after the MessagePack payload. For example,
Per evitare che python-msgpack serializzi grandi stringhe binarie, il corpo del file è aggiunto direttamente dopo il contenuto di MessagePack. Per esempio,
```
> {"cmd": "streamFile", "id": 1, "inner_path": "content.json", "size": 1234}
@ -126,17 +126,17 @@ To avoid having python-msgpack serialize large binary strings, the file body is
< content of the file
```
> ZeroNet implementation detail: For file segments larger than 256 kb, streaming is enabled by default.
> Dettaglio implementazione ZeroNet: per segmenti di file maggiori di 256 kb, lo streaming è abilitato di default.
---
#### ping
Checks if the client is still alive
Controlla se il client è ancora attivo
**Return**:
**Risposta**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**body** | Pong
@ -145,94 +145,94 @@ Return key | Description
#### pex _site_, _peers_, _need_
Exchange peers with the client.
Peers packed to 6 bytes (4byte IP using inet_ntoa + 2byte for port)
Scambio di peer con il client.
I peer sono compressi in 6 bytes (4 byte per l'IP utilizzando inet_ntoa + 2 byte per la porta)
Parameter | Description
Parametro | Descrizione
--- | ---
**site** | Site address (example: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**peers** | List of peers that the requester has (packed)
**peers_onion** | List of Tor Onion peers that the requester has (packed)
**need** | Number of peers the requester want
**site** | Indirizzo del sito (esempio: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**peers** | Elenco dei peer che ha il richiedente (compressi)
**peers_onion** | Elenco dei peer di Tor Onion che ha il richiedente (compressi)
**need** | Numero dei peer che vuole il richiedente
**Return**:
**Risposta**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**peers** | List of IPv4 peers he has for the site (packed)
**peers_onion** | List of Tor Onion peers for this site (packed)
**peers** | Elenco dei peer IPv4 disponibili per il sito (compressi)
**peers_onion** | Elenco dei peer di Tor onion per il sito (compressi)
Each element in the `peers` list is a packed IPv4 address.
Ogni elemento nell'elenco `peers` è un indirizzo compresso IPv4 .
IP address | Port
---------- | ----
`4 bytes` | `2 bytes`
Indirizzo IP | Porta
------------ | -----
`4 byte` | `2 byte`
Each element in the `peers_onion` list is a packed Tor Onion Service address.
Ogni elemento nell'elenco `peers_onion` è un indirizzo compresso del servizio Tor onion.
B32-decoded onion address | Port
------------------------- | ----
`binary_str[0:-2]` | `binary_str[-2:]`
Indirizzo onion B32-decoded | Porta
--------------------------- | -----
`binary_str[0:-2]` | `binary_str[-2:]`
To restore the onion address, pass the first part through `base64.b32encode` and append `.onion` to the return value.
Per ripristinare l'indirizzo onion, passare la prima parte attraverso `base64.b32encode` e appendere `.onion` al valore restituito.
---
#### update _site_, _inner_path_, _body_, _[diffs]_
Update a site file.
Aggiornare il file di un sito.
Parameter | Description
Parametro | Descrizione
--- | ---
**site** | Indirizzo del sito (esempio: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**inner_path** | Percorso del file relativo alla cartella del sito
**body** | Contenuto completo del file content.json aggiornato
**diffs** (opzionale) | [Codici variazioni](#possibili-codici-variazione) per i file modificati in content.json
**Risposta**:
Chiave resa | Descrizione
--- | ---
**site** | Site address (example: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**inner_path** | File path relative to site directory
**body** | Full content of the updated content.json
**diffs** (optional) | [Diff opcodes](#possible-diff-opcodes) for the modified files in the content.json
**ok** | Messaggio di ringraziamento per aggiornamento riuscito :)
**Return**:
##### Formato variazioni
Return key | Description
--- | ---
**ok** | Thanks message on successful update :)
Un dizionario che contiene le modifiche
##### Diffs format
- Chiave: percorso relativo del file modificato rispetto a content.json (es.: `data.json`)
- Valore: Elenco dei codici variazione per il file (es.: `[['=', 5], ['+', '\nCiao nuova riga'], ['-', 6]]`)
A dict that contains the modifications
##### Possibili codici variazione
- Key: changed file's relative path to content.json (eg.: `data.json`)
- Value: The list of diff opcodes for the file (eg.: `[['=', 5], ['+', '\nhello new line'], ['-', 6]]`)
##### Possible diff opcodes:
Opcode | Description
Codice | Descrizione
--- | ---
**['=', number of same characters]** | Have not changed part of the file (eg.: `['=', 5]`)
**['+', new text]** | Added characters (eg.: `['+', '\nhello new line']`)
**['-', number of removed characters]** | Full content of the updated file (eg.: `['-', 6]`)
**['=', numero di caratteri uguali]** | Non ha modificato parte del file (es.: `['=', 5]`)
**['+', nuovo testo]** | Caratteri inseriti (es.: `['+', '\nCiao nuova riga']`)
**['-', numero di caratteri rimossi]** | Contenuto completo del file modificiato (es.: `['-', 6]`)
After the update received, the client tries to patch the files using the diffs.
If it failes to match the sha hash provided by the content.json (had different version of the file) it automatically re-downloads the whole file from the sender of the update.
Dopo la ricezione delle modifiche, il client tenta di allineare il file utilizzando le differenze.
Se fallisce il controllo della chiave SHA fornita dal file content.json (aveva una versione diversa del file) riscarica automaticamente l'intero file da chi ha inviato l'aggiornamento.
> __Note:__ The patches are limited to 30KB per file and only used for .json files
> __Nota:__ Le correzioni sono limitate a 30KB per file e utilizzate solo per i file .json
---
#### listModified _site_, _since_
Lists the content.json files modified since the given parameter. It used to fetch the site's user submitted content.
Elenco dei file content.json modificati da un certo parametro. Viene utilizzato per recuperare il contenuto inviato dall'utente del sito.
Parameter | Description
Parametro | Descrizione
--- | ---
**site** | Site address (example: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**since** | List content.json files since this timestamp.
**site** | Indirizzo del sito (esempio: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**since** | Elenco dei file content.json da questa data.
**Return**:
**Risposta**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**modified_files** | Key: content.json inner_path<br>Value: last modification date
**modified_files** | Chiave: content.json inner_path<br>Valore: data ultima modifica
**Example**:
**Esempio**:
```json
> zeronet.py --silent peerCmd 127.0.0.1 15441 listModified "{'site': '1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8', 'since': 1497507030}"
@ -269,19 +269,19 @@ Return key | Description
#### getHashfield _site_
Get the client's downloaded [optional file ids](#optional-file-id).
Ottiene gli [id dei file opzionali](#file-id-opzionale) scaricati.
Parameter | Description
Parametro | Descrizione
--- | ---
**site** | Site address (example: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**site** | Indirizzo sito (esempio: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**Return**:
**Risposta**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**hashfield_raw** | Optional file ids encoded using `array.array("H", [1000, 1001..]).tostring()`
**hashfield_raw** | Id opzionali del file codificati utilizzando `array.array("H", [1000, 1001..]).tostring()`
**Example**:
**Esempio**:
```json
> zeronet.py --silent peerCmd 192.168.1.13 15441 getHashfield "{'site': '1Gif7PqWTzVWDQ42Mo7np3zXmGAo3DXc7h'}
{
@ -295,39 +295,39 @@ Return key | Description
#### setHashfield _site_, _hashfield_raw_
Set the list of [optional file ids](#optional-file-id) that the requester client has.
Imposta l'elenco degli [id dei file opzionali](#file-id-opzionale) che possiede il client richiedente.
Parameter | Description
Parametro | Descrizione
--- | ---
**site** | Site address (example: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**hashfield_raw** | Optional file ids encoded using `array.array("H", [1000, 1001..]).tostring()`
**site** | Indirizzo sito (esempio: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**hashfield_raw** | Id file opzionali codificato utilizzando `array.array("H", [1000, 1001..]).tostring()`
**Return**:
**Risposta**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**ok** | Updated
**ok** | Aggiornato
---
#### findHashIds _site_, _hash_ids_
Queries if the client know any peer that has the requested hash_ids
Richiede se il client conosce un peer che ha la chiave hash_ids richiesta
Parameter | Description
Parametro | Descrizione
--- | ---
**site** | Site address (example: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**hash_ids** | List of optional file ids the client currently looking for
**site** | Indirizzo sito (esempio: 1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr)
**hash_ids** | Elenco degli id dei file opzionali che il client sta cercando
**Return**:
**Risposta**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**peers** | Key: Optional file id<br>Value: List of ipv4 peers encoded using `socket.inet_aton(ip) + struct.pack("H", port)`
**peers_onion** | Key: Optional file id<br>Value: List of onion peers encoded using `base64.b32decode(onion.replace(".onion", "").upper()) + struct.pack("H", port)`
**peers** | Chiave: id del file opzionale<br>Valore: elenco dei peer ipv4 codificati utilizzando `socket.inet_aton(ip) + struct.pack("H", port)`
**peers_onion** | Chiave: id del file opzionale<br>Valore: elenco dei peer onion codificati utilizzando `base64.b32decode(onion.replace(".onion", "").upper()) + struct.pack("H", port)`
**Example**:
**Esempio**:
```json
> zeronet.py --silent peerCmd 192.168.1.13 15441 findHashIds "{'site': '1Gif7PqWTzVWDQ42Mo7np3zXmGAo3DXc7h', 'hash_ids': [59948, 29811]}"
{
@ -355,8 +355,8 @@ Return key | Description
}
```
##### Optional file id
Integer representation of the first 4 character of the hash:
##### File id opzionale
Rappresentazione intera dei primi 4 caratteri della chiave (hash):
```
>>> int("ea2c2acb30bd5e1249021976536574dd3f0fd83340e023bb4e78d0d818adf30a"[0:4], 16)
59948
@ -365,84 +365,84 @@ Integer representation of the first 4 character of the hash:
---
#### checkport _port_
Check requested port of the other peer.
Controlla la porta richiesta dell'altro peer.
Parameter | Description
Parametro | Descrizione
--- | ---
**port** | Port which will be checked.
**port** | Porta che verrà controllata.
**Return**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**status** | Status of the port ("open" or "closed")
**ip_external** | External IP of the requestor
**status** | Stato della porta ("open" o "closed")
**ip_external** | IP esterno del richiedente
---
# Bigfile Plugin
# Plugin file grandi
#### getPieceFields _site_
Returns all big file [piecefield](#bigfile-piecefield) that client has for that site in a dict.
Restituisce tutte le [sezioni](#sezioni-di-file-grandi) del file che il cliente ha per questo sito in un dizionario.
Parameter | Description
Parametro | Descrizione
--- | ---
**site** | Requested site
**site** | Sito richiesto
**Return**:
**Risposta**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**piecefields_packed** | Key: Bigfile's sha512/256 [merkle root hash](#bigfile-merkle-root)<br>Value: Packed [piecefield](#bigfile-piecefield)
**piecefields_packed** | Chiave: [chiave merkle root](#merkle-root-per-file-grandi) sha512/256 di Bigfile<br>Valore: [sezioni](#sezioni-di-file-grandi) compresse
---
#### setPieceFields _site_, _piecefields_packed_
Set the client's [piecefields](#picefield) for that site.
Imposta le [sezioni](#sezioni-di-file-grandi) del client per quel sito.
Parameter | Description
Parametro | Descrizione
--- | ---
**site** | Requested site
**piecefields_packed** | Key: Bigfile's sha512/256 [merkle root hash](#bigfile-merkle-root)<br>Value: Packed [piecefield](#bigfile-piecefield)
**site** | Sito richiesto
**piecefields_packed** | Chiave: [chiave merkle root](#merkle-root-per-file-grandi) sha512/256 del file grande<br>Valore: [sezione](#sezioni-di-file-grandi) compressa
**Return**:
**Risposta**:
Return key | Description
Chiave resa | Descrizione
--- | ---
**ok** | Updated
**ok** | Aggiornato
##### Bigfile piecefield
##### Sezioni di file grandi
Holds the big files downloaded pieces information in a simple string with 1/0 values. (1 = Downloaded, 0 = Not downloaded)
Contiene le informazioni dei pezzi dei file grandi scaricati in una semplice stringa di valori 1/0. (1 = scaricato, 0 = non scaricato)
> __Example__: `1110000001` means the file is sized 9-10MB and the client downloaded the first 3MB and the last 1MB at 1MB piecesize.
> __Esempio__: `1110000001` significa che il file ha una dimensione di 9-10MB e il client ha scaricato i primi 3MB e l'ultimo MB a pezzi da 1MB.
**Packed format**:
**Formato compressione**:
Turns the string to an list of int by counting the repeating characters starting with `1`.
Converte una stringa in una lista di interi contando i caratteri che si ripetono iniziando con `1`.
> __Example__: `1110000001` to `[3, 6, 1]`, `0000000001` to `[0, 9, 1]`, `1111111111` to `[10]`
> __Esempio__: `1110000001` in `[3, 6, 1]`, `0000000001` in `[0, 9, 1]`, `1111111111` in `[10]`
After the conversion it turns it to more efficient [typed array](https://docs.python.org/2/library/array.html) using `array.array('H', piecefield)`
Dopo la conversione viene convertito in un più efficente [array specializzato](https://docs.python.org/2/library/array.html) utilizzando `array.array('H', piecefield)`
##### Bigfile merkle root
##### Merkle root per file grandi
During the big file hashing procedure, in addition to storing the per-piece sha512/256 hash digests in the [piecemap](#bigfile-piecemap) file, the algorithm also calculates the SHA-512/256 merkle root of the file using the [merkle-tools](https://github.com/tierion/merkle-tools) implementation.
The merkle root is only used as an ID to identify the big file, not (yet) for verifying the pieces.
Nella procedura di codifica dei file grandi, oltre a salvare l'elenco delle chiavi sha512/256 per peer nel file [piecemap](#mappa-sezioni-di file-grandi), l'algoritmo calcola anche la merkle root SHA-512/256 del file utilizzando l'implementazione [merkle-tools](https://github.com/tierion/merkle-tools).
La merkle root è utilizzata solo come un ID per identificare i grandi file, non (ancora) per verificare i pezzi.
> __Note__: The merkle root is chosen to identify the file, instead of the file's actual SHA-512/256 hash. Obviously, using the latter results in hashing the same file twice. (once for piecemap once for the whole file)
> __Nota__: La merkle root è scelta per identificare il file al posto dell'attuale chiave SHA-512/256 del file. Ovviamente, utilizzando la seconda risulterebbe nel calcolare due volte la chiave del file (una per la piecemap e una per l'intero file).
> __Note__: The merkle root is not used to verify the integrity of the pieces or the big file, because doing so would take more bandwidth and space to transfer and store the merkle-proofs for partial verification, than the per-piece hash map file itself.
> __Nota__: La merkle root non è utilizzata per verificare l'integrità dei pezzi o dei file grandi, perché ciò utilizzerebbe più banda e spazio per trasferire e salvare la merkle-proofs per verifiche parziali, rispetto alla mappa delle chiavi per pezzo del file stesso.
##### Bigfile piecemap
##### Mappa sezioni di file grandi
It holds the per-piece SHA-512/256 hashes. The piece size and the picemap filename is defined in `content.json`, eg.:
Contiene le chiavi SHA-512/256 per peer. La dimensione del pezzo e il nome del file della picemap è definita in `content.json`, es.:
```
...
@ -456,7 +456,7 @@ It holds the per-piece SHA-512/256 hashes. The piece size and the picemap filena
...
```
Having the following data structure, the piecemap file is packed into the [msgpack](https://msgpack.org/) format:
Avendo la seguente struttura dati, il file piecemap è compresso nel formato [msgpack](https://msgpack.org/):
```
{

View File

@ -1,70 +1,68 @@
## What is ZeroNet?
## Cos'è ZeroNet?
ZeroNet uses Bitcoin cryptography and BitTorrent technology to build a **decentralized censorship-resistant network**.
ZeroNet utilizza la crittografia Bitcoin e la tecnologia BitTorrent per realizzare una **rete decentralizzata resistente alla censura**.
Users can publish static or dynamic websites to ZeroNet and visitors can choose to also serve the site themselves. Websites will remain online as long as one peer is still online.
Gli utenti possono pubblicare siti web statici o dinamici su ZeroNet e i visitatori possono scelglere a loro volta di ospitare i siti. I siti rimarranno online finché almeno un peer (distributore, un server ospitante) è online.
When a site is updated by its owner, all nodes serving that site (previous visitors) will receive only the incremental updates made to the site content.
Quando un sito viene aggiornato dal proprietario, tutti i nodi che offrono il sito (precedenti visitatori) ricevono solo gli aggiornamenti aggiuntivi fatti al contenuto del sito.
ZeroNet comes with a built-in SQL database. This makes content-heavy site development easy. The DB is then synced to hosting nodes via incremental updates.
ZeroNet ha un proprio database SQL. Questo rende semplice lo sviluppo di siti con contenuti rilevanti. Il DB è sincronizzato per ospitare i nodi con aggiornamenti incrementali.
## Why?
## Perché?
* We believe in open, free, and uncensored communication.
* No censorship: After something is published there is no way to remove it.
* No single point of failure: Content remains online even if only one peer is serving it.
* Impossible to shut down: It's nowhere because it's everywhere. Content is served by any user who wishes to.
* Fast: ZeroNet uses BitTorrent technology to deliver content faster than centralised servers.
* Works offline: You can access the site even if your internet is unavailable.
* Secure: Content ownership is secured using the same cryptography that secures your Bitcoin wallet.
* Crediamo nella comunicazione aperta, libera e non censurata.
* Nessuna censura: quando qualcosa è pubblicato non c'è modo per rimuoverlo.
* Non c'è un unico punto debole: il contenuto rimane online finché c'è almeno un peer che lo ospita.
* Impossiblile da chiudere: non è da nessuna parte perché è ovunque. Il contenuto è offerto da ogni utente che lo desidera.
* Veloce: ZeroNet utilizza la tecnologia BitTorrent per distribuire i contenuti più velocemente di un server centralizzato.
* Funziona offline: è possibile accedere al sito anche se la connessione ad Internet è assente.
* Sicura: la proprietà dei contenuti è garantita utilizzando la stessa crittografia che garantisce i portafogli Bitcoin.
[comment]: <> (I'm unsure about the following bit. Thoughts?)
[comment]: <> (# What problem is ZeroNet solving?)
[commento]: <> (Non sono sicuro di quello che segue. Idee?)
[comment]: <> (When Tim Berners-Lee created the internet, he meant for it to be free. Not surveilled nor censored. And [he is still fighting for that](http://edition.cnn.com/2014/03/12/tech/web/tim-berners-lee-web-freedom/).)
[commento]: <> (# What problem is ZeroNet solving?)
[comment]: <> (The internet is centralized mainly in two places: Content and Domain Names (URLs) are hosted and controlled by central servers. If you control the central servers (and if you are powerful enough you do) you control the network.)
[commento]: <> (Quando Tim Berners-Lee creò internet, la intendeva libera. Non sorvegliata e non censurata. E [sta ancora lottando per questo](http://edition.cnn.com/2014/03/12/tech/web/tim-berners-lee-web-freedom/).)
[comment]: <> (**Decentralized content storage**)
[commento]: <> (Internet è centralizzata principalmente in due modi: contenuti e nomi di dominio (URL) sono ospitati e controllati da server centrali. Se controlli i server centrali (e se sei abbastanza potente lo fai) controlli la rete.)
[comment]: <> (ZeroNet tackles the content storage problem by giving everyone the ability to store content. Site visitors can choose to store a website on their computers, and when they do this they also help to serve the site to other users. The site is online even if only one user is hosting it.)
[commento]: <> (**Archivio contenuti decentralizzato**)
[comment]: <> (**Shared DNS cache**)
[commento]: <> (ZeroNet affronta il problema della conservazione dei contenuti dando ad ognuno l'abilità di conservare contenuti. I visitatori dei siti possono scegliere di ospitare un sito sui loro computer, e quando lo fanno aiutano ad offrire il sito ad altri utenti. Il sito è online finché un utente lo ospita.)
[comment]: <> (Site addresses on ZeroNet are cached by all network members. When you type a ZeroNet site URL on your browser this will query other peers connected to you about the site. If one of these peers happen to have the site they will send it to you, if not, they will forward your query along.)
[commento]: <> (**Cache DNS condivisa**)
[comment]: <> (This architecture means that when a site URL is created, as long as one peer is serving it, there is no way to take the URL down.)
[commento]: <> (Gli indirizzi dei siti su ZeroNet sono memorizzati da tutti i membri della rete. Quando si richiama l'URL di un sito ZeroNet sul browser questo chiede ad altri peer connessi informazioni. Se uno dei peer ha il sito a disposizione invierà i contenuti, altrimenti inoltrerà la richiesta ad altri peer.)
[commento]: <> (Questa architettura comporta che quando viene creato l'URL di un sito finché un peer lo mantiene non c'è modo di chiudere l'URL.)
## Features
* Easy, zero configuration setup.
* Password-less [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)
based authorization: Your account is protected by the same cryptography as your Bitcoin wallet.
* Sites updated in real-time, no refreshing needed.
* Namecoin .bit domains support.
* SQL Database support: Allows for easier site development and faster page load times.
* Anonymity: Full Tor network support with .onion hidden services instead of ipv4 addresses.
* TLS encrypted connections.
* Automatic, uPnP port opening.
* Plugin for multiuser (openproxy) support.
* Works with any browser/OS.
## Caratteristiche
* Setup semplice senza configurazione.
* Autorizzazione senza password basata su [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki): l'account è protetto dalla stessa crittografia dei portafogli Bitcoin.
* I siti sono aggiornati in tempo reale, non serve aggiornarli.
* Supporto domini Namecoin .bit.
* Supporto database SQL: consente un facile sviluppo dei siti e tempi rapidi di caricamento delle pagine.
* Anonimo: completo supporto della rete Tor con servizio nascosto .onion al posto di indirizzi IPv4.
* Connessioni criptate TLS.
* Apertura automatica porte uPnP.
* Plugin per il supporto multi utente (openproxy).
* Funziona con qualsiasi browser/SO.
## How does it work?
## Come funziona?
* After you install and run ZeroNet, you open a site by visiting:
* Dopo l'installazione e l'avvio di ZeroNet, aprire un sito accedendo a:
`http://127.0.0.1:43110/{zeronet_site_address}`
(e.g. `http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D`).
* ZeroNet will then use the BitTorrent network to find peers that are seeding the site and will download the site content (HTML, CSS, JS...) from these peers.
* Each site visited is then served by your client. Sites can removed or blacklisted if necessary.
* Every site contains a list of all of its files, each entry containing a SHA512 hash and a signature generated using the site owner's private key.
* If the site owner modifies the site, then he/she signs a new list and publishes it to the peers.
After the peers have verified the files list integrity (using the
signature), they download the modified files and publish the new content to
other peers.
(es. `http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D`).
* ZeroNet utilizzerà la rete BitTorrent per trovare peer che ospitano il sito e scaricarne il contenuto (HTML, CSS, JS...).
* Ogni sito visitato viene ospitato dal tuo client. I siti possono essere rimossi o esclusi (blacklist) se necessario.
* Ogni sito contiene un elenco di tutti i suoi file, ogni elemento contiene una chiave SHA512 e una firma generata utilizzando la chiave privata del proprietario del sito.
* Se il proprietario del sito modifica il sito, allora firma una nuovo elenco e lo pubblica ai peer.
Dopo che i peer hanno verificato l'integrità della lista (utilizzando la firma), scaricano i file modificati e pubblicano il contenuto ad altri peer.
##### [Slideshow about ZeroNet cryptography, content updates, multi-user sites &raquo;](https://docs.google.com/presentation/d/1_2qK1IuOKJ51pgBvllZ9Yu7Au2l551t3XBgyTSvilew/pub?start=false&loop=false&delayms=3000)
##### [Presentazione sulla crittografia ZeroNet, aggiornamenti contenuti, siti multi utente &raquo;](https://docs.google.com/presentation/d/1_2qK1IuOKJ51pgBvllZ9Yu7Au2l551t3XBgyTSvilew/pub?start=false&loop=false&delayms=3000)
## Screenshots
@ -73,21 +71,21 @@ ZeroNet comes with a built-in SQL database. This makes content-heavy site develo
![ZeroTalk](./img/zerotalk.png)
##### [More screenshots &raquo;](/using_zeronet/sample_sites/)
##### [Altri screenshots &raquo;](/using_zeronet/sample_sites/)
## Current limitations
## Limitazioni attuali
* <strike>No torrent-like, file splitting for big file support</strike> (BigFile plugin enables this)
* File transactions are not compressed <strike>or encrypted yet</strike> (TLS encryption added)
* No private sites
* <strike>Mancanza divisione grandi file come Torrent</strike> (Abilitato con il plugin BigFile)
* Le transizioni dei file non sono compresse <strike>o criptate ancora</strike> (Aggiunta criptazione TLS)
* Mancanza siti privati
## Help to keep this project alive
## Aiutare a mantenere il progetto attivo
Bitcoin: 1QDhxQ6PraUZa21ET5fYUCPgdrwBomnFgX
[Full donation page](help_zeronet/donate/)
[Pagina completa donazioni](help_zeronet/donate/)
### Thank you!
### Grazie!
* More info, help, changelog, zeronet sites: [http://www.reddit.com/r/zeronet/](http://www.reddit.com/r/zeronet/)
* Come, chat with us: [#zeronet @ FreeNode](https://kiwiirc.com/client/irc.freenode.net/zeronet) or on [gitter](https://gitter.im/HelloZeroNet/ZeroNet)
* Ulteriori informazioni, aiuto, modifiche, siti zeronet: [http://www.reddit.com/r/zeronet/](http://www.reddit.com/r/zeronet/)
* Vieni, parla con noi: [#zeronet @ FreeNode](https://kiwiirc.com/client/irc.freenode.net/zeronet) o su [gitter](https://gitter.im/HelloZeroNet/ZeroNet)

View File

@ -1,78 +1,78 @@
# Certificate Authority
# Autorità di certificazione
An account without password? A certificate for me? You realize the ID system of ZeroNet does not conform to convention. In this section, you are going to learn about how user certificate and certificate authority work in ZeroNet.
Un account senza password? Serve avere un certificato? Si comprende che il sistema di ID di ZeroNet non segue le convenzioni. In questa sezione, si comprenderà come funzionano i certificati utente e le autorità di certificazione in ZeroNet.
## What does a certificate authority do?
## Cosa fa una autorità di certificazione?
In ZeroNet, everything is signed by Bitcoin signing keys. A certificate provides a unique and memorizable name for a Bitcoin address. A certificate authority (or an ID provider) is responsible for proving the relationship between a unique friendly name and a Bitcoin address.
In ZeroNet, tutto è firmato da una chiave Bitcoin. Un certificato fornisce un nome univoco e memorizzabile per un indirizzo Bitcoin. Una autorità di certificazione (o fornitore di ID) è responsabile di fornire la relazione tra un nome facile e un indirizzo Bitcoin.
## Certificate format
## Formato del certificato
### Body
### Corpo
The body of a certificate contains a Bitcoin address, a portal type, and a memorizable user name.
Il corpo di un certificato contiene un indirizzo Bitcoin, un tipo di portale, e un nome utente ricordabile.
```
[BitcoinAddress]#[PortalType]/[UserName]
[IndirizzoBitcoin]#[TipoPortale]/[NomeUtente]
```
**Example:**
**Esempio:**
```
1H28iygiKXe3GUMcD77HiifVqtf3858Aft#web/hellozeronet
```
- Bitcoin address: `1H28iygiKXe3GUMcD77HiifVqtf3858Aft`
- Portal type: `web`
- User name: `hellozeronet`
- Indirizzo Bitcoin: `1H28iygiKXe3GUMcD77HiifVqtf3858Aft`
- Tipo portale: `web`
- Nome utente: `hellozeronet`
**General rules:**
**Regole generali:**
The Bitcoin address, the portal type and the user name **must not** contain the character `#`, `@` or `/`
L'indirizzo Bitcoin, il tipo di portale e il nome utente **non devono** contenere i caratteri `#`, `@` o `/`
Only 0-9 and a-z are allowed in a user name. All English letters in a user name **must** be in lower case. Characters not in the allowed set **must not** be used as parts of a user name. A user name **should not** be too long. A user name **should** be legible and **should not** interfere with user interface rendering.
Sono ammessi solo 0-9 e a-z nel nome utente. Tutte le lettere nel nome utente **devono** essere minuscole. I caratteri non consentiti **non devono** essere utilizzati nel nome utente. Un nome utente **non dovrebbe** essere troppo lungo. Un nome utente **dovrebbe** essere leggibile e **non dovrebbe** interferire il rendering dell'intercaccia utente.
A user name **must** be unique in the pool of all registered user names.
Un nome utente **deve** essere univoco nell'insieme dei nomi registrati.
### Signature
### Firma
A certificate signing algorithm loads a secret signing key and generates a deterministic Bitcoin signature for the body.
Un algoritmo di firma dei certificati carica una chiave di firma segreta e crea una firma Bitcoin deterministica per il corpo.
**From the source code:**
**Dal codice sorgente:**
```python
sign = os.popen("python zeronet.py --debug cryptSign %s#bitmsg/%s %s 2>&1" % (auth_address, user_name, config.site_privatekey)).readlines()[-1].strip()
```
### Certificate
### Certificato
By looking at the source code of ZeroID, we know how a certificate is stored in its public database.
Guardando il codice sorgente di ZeroID, si comprende come un certificato è registrato nel suo database pubblico.
```python
data["users"][user_name] = "bitmsg,%s,%s" % (auth_address, sign)
```
**Example:**
**Esempio:**
```
"hellozeronet": "web,1H28iygiKXe3GUMcD77HiifVqtf3858Aft,HA2A+iKekECD3hasrsN8IrR86BnXQ63kPH+9A85JLO9hLUpRJTBn62UfnuuF92B9CIc6+EewAIqzIn9UoVq2LPA="
```
A certificate can be stored in various formats. However, all formats must include:
Un certificato può essere archiviato in diversi formati. Comunque tutti i formati devono includere:
- The Bitcoin address: `1H28iygiKXe3GUMcD77HiifVqtf3858Aft`
- The portal type: `web`
- The user name: `hellozeronet`
- The signature from authority: `HA2A+iKekECD3hasrsN8IrR86BnXQ63kPH+9A85JLO9hLUpRJTBn62UfnuuF92B9CIc6+EewAIqzIn9UoVq2LPA=`
- L'indirizzo Bitcoin: `1H28iygiKXe3GUMcD77HiifVqtf3858Aft`
- Il tipo portale: `web`
- Il nome utente: `hellozeronet`
- La firma dell'autorità: `HA2A+iKekECD3hasrsN8IrR86BnXQ63kPH+9A85JLO9hLUpRJTBn62UfnuuF92B9CIc6+EewAIqzIn9UoVq2LPA=`
## Usage in `content.json`
## Utilizzo in `content.json`
Site owners can choose which certificate authorities to trust.
Il proprietario del sito può scelgliere l'autorità di certificazione da usare.
The Blue Hub, for example, accepts certificates signed by ZeroID. This rule is defined in its `data/users/content.json`
Blue Hub, per esempio, accetta certificati firmati da ZeroID. Questa regola è definita nel suo `data/users/content.json`
- The ID provider has a friendly name: `zeroid.bit`
- The public key digest of the ID provider is: `1iD5ZQJMNXu43w1qLB8sfdHVKppVMduGz`
- Il provider di ID ha come nome: `zeroid.bit`
- La chiave pubblica sintetica del provider ID è: `1iD5ZQJMNXu43w1qLB8sfdHVKppVMduGz`
```json
"user_contents": {
@ -84,7 +84,7 @@ The Blue Hub, for example, accepts certificates signed by ZeroID. This rule is d
}
```
Every user presents his certificate in the manifest file in his Bitcoin folder. For example, `data/users/1J3rJ8ecnwH2EPYa6MrgZttBNc61ACFiCj/content.json` says:
Ogni utente mostra il suo certificato nel file manifesto nella sua cartella Bitcoin. Per esempio, `data/users/1J3rJ8ecnwH2EPYa6MrgZttBNc61ACFiCj/content.json` contiene:
```json
{
@ -106,43 +106,43 @@ Every user presents his certificate in the manifest file in his Bitcoin folder.
}
```
Site specific:
Specifico del sito:
- Expected site URL: `"address": "1BLueGvui1GdbtsjcKqCf4F67uKfritG49"`
- Expected file path: `"inner_path": "data/users/1J3rJ8ecnwH2EPYa6MrgZttBNc61ACFiCj/content.json"`
- URL atteso del sito: `"address": "1BLueGvui1GdbtsjcKqCf4F67uKfritG49"`
- percorso del file atteso: `"inner_path": "data/users/1J3rJ8ecnwH2EPYa6MrgZttBNc61ACFiCj/content.json"`
Certificate information:
Informazioni del certificato:
- ID provider: `zeroid.bit`
- User name: `nofish`
- User Bitcoin address: `1J3rJ8ecnwH2EPYa6MrgZttBNc61ACFiCj`
- Portal type: `web`
- Signature from ID provider: `HPiZsWEJ5eLnspUj8nQ75WXbSanLz0YhQf5KJDq+4bWe6wNW98Vv9PXNyPDNu2VX4bCEXhRC65pS3CM7cOrjjik=`
- Provider ID: `zeroid.bit`
- Nome utente: `nofish`
- Indirizzo Bitcoin utente: `1J3rJ8ecnwH2EPYa6MrgZttBNc61ACFiCj`
- Tipo portale: `web`
- Firma del provider ID: `HPiZsWEJ5eLnspUj8nQ75WXbSanLz0YhQf5KJDq+4bWe6wNW98Vv9PXNyPDNu2VX4bCEXhRC65pS3CM7cOrjjik=`
### The verifying process
### Il processo di verifica
1. The verifying algorithm reads `data/users/content.json` to determine what is the expected site for the user content.
1. L'algoritmo di verifica legge `data/users/content.json` per determinare qual'è il sito previsto per il contenuto dell'utente.
2. The verifying algorithm reads `data/users/content.json` to look up the public key digest of the ID provider.
2. L'algoritmo di verifica legge `data/users/content.json` per estrarre la sintesi della chiave pubblica del provider ID.
3. Given a user Bitcoin address, a portal type and a user name, the verifying algorithm reconstructs the body of the certificate.
3. Fornendo un indirizzo utente Bitcoin, un tipo di portale e un nome utente, l'algoritmo di verifica ricostruisce il corpo del certificato.
4. The verifying algorithm checks the signature from the ID provider, with the public key defined in `data/users/content.json`, to ensure the authenticity of the certificate body.
4. L'algoritmo di verifica controlla la firma dal provider ID, con la chiave pubblica definita in `data/users/content.json`, per verificare l'autenticità del corpo del certificato.
5. The verifying algorithm loads the user public key and checks the authenticity of the user content.
5. L'algoritmo di verifica carica la chiave pubblica dell'utente e verifica l'autenticità del contenuto dell'utente.
## Features and limitations of certificate authorities
## Caratteristiche e limitazioni delle autorità di certificazione
- A certificate authority provides memorizable names for user public key digests. It also helps mitigate spam and unsolicited content.
- Una atuorità di certificazione fornisce nomi memorizzabili per sintesi di chiavi pubbiche degli utenti. Inoltre aiuta a limitare spam e contenuti non richiesti.
- A user does not have to give away secret information such as passwords. In addition, a user only has to authenticate once.
- L'utente non deve comunicare informazioni segrete come le password. In aggiunta l'utente si deve autenticare una sola volta.
- A certificate authority does not have to be approved by any ZeroNet developers. A site owner can choose which certificate authorities to trust for the sake of user content quality.
- Un'autorità di certificazione non deve essere approvata da nessun sviluppatore ZeroNet. Il proprietario di un sito può scegliere quale autorità di certificazione usare per definire la qualità dei contenuti di un utente.
- A certificate authority is responsible for maintaining its user name pool.
- Un'autorità di certificazione è responsabile del mantenimento dell'insieme dei suoi nomi utente.
- ZeroID does not revoke or renew certificates.
- ZeroID non rimuove o rinnova certificati.
## Can I live without certificate authorities?
## Si può rimanere senza autorità di certificazione?
Generally, a certificate is required when you add things to someone else's site. You do not need a certificate when you are modifying your own site.
In generale, un certificato è necessario quando si aggiungono elementi al sito di qualcun'altro. Non è necessario avere un certificato per modificare i propri siti.

View File

@ -1,23 +1,23 @@
# Structure of content.json
# Struttura di content.json
Every ZeroNet site has a `content.json` file. ([Example content.json file](https://github.com/HelloZeroNet/ZeroTalk/blob/master/content.json))
Ogni sito ZeroNet ha un file `content.json`. ([Esempio di file content.json](https://github.com/HelloZeroNet/ZeroTalk/blob/master/content.json))
This file will carry, among other things, a list of all files on your site and a signature created with your private key. This is used to ensure authenticity of site files and avoid tampering (ie: only you, or people you trust, can update your site's content).
Questo file contiene, oltre ad altre cose, un elenco di tutti i file del sito e una firma creata con la chiave privata dell'autore. Questo per assicurare l'autenticità dei file del sito ed evitare le manomissioni (i.e.: solo l'autore, o persone autorizzate, possono modificare il contenuto del sito).
Here is a list of supported `content.json` keys:
Qui c'è una lista di chiavi `content.json` supportate:
---
## Generated automatically
## Generato automaticamente
_These keys are added automatically when the site is created or cloned._
_Queste chiavi sono aggiunte automaticamente quando il sito viene creato o clonato._
### address
Your site address
L'indirizzo del sito
**Example**: 1TaLk3zM7ZRskJvrh3ZNCDVGXvkJusPKQ
**Esempio**: 1TaLk3zM7ZRskJvrh3ZNCDVGXvkJusPKQ
---
@ -25,27 +25,27 @@ Your site address
### address_index
The site address's BIP32 sub-key index of your BIP32 seed. Auto-added when you clone a site. It allows recovery of the site's privatekey from your BIP32 seed.
L'indice della sottochiave BIP32 del sito del seed BIP32. Aggiunta automaticamente quando si clona un sito. Consente di recuperare la chiave privata del sito dal seed BIP32.
**Example**: 30926910
**Esempio**: 30926910
---
### cloned_from
Only for cloned sites. The site address where the site is cloned from.
Solo per siti clonati. L'indirizzo del sito da cui è stato clonato.
**Example**: 1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8
**Esempio**: 1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8
---
### clone_root
Only for cloned sites. The sub-directory on the site which this was cloned from.
Solo per siti clonati. La sotto cartella sul sito da cui è stato clonato.
**Example**: template-new
**Esempio**: template-new
---
@ -53,9 +53,9 @@ Only for cloned sites. The sub-directory on the site which this was cloned from.
### files
Size and sha512 hashes of automatically downloaded files contained in your site. Automatically added by the command `zeronet.py siteSign siteaddress privatekey`.
Dimensione e chiave sha512 dei file scaricati automaticamente nel sito. Aggiunto automaticamente dal comando `zeronet.py siteSign siteaddress privatekey`.
**Example**:
**Esempio**:
```python
"css/all.css": {
"sha512": "869b09328f07bac538c313c4702baa5276544346418378199fa5cef644c139e8",
@ -69,9 +69,9 @@ Size and sha512 hashes of automatically downloaded files contained in your site.
### files_optional
Size and sha512 hashes of optional files contained in your site. Automatically added by the command `zeronet.py siteSign siteaddress privatekey`.
Dimensione e chiave sha512 per file opzionali contenuti nel sito. Aggiunto automaticamente dal comando `zeronet.py siteSign siteaddress privatekey`.
**Example**:
**Esempio**:
```python
"data/myvideo.mp4": {
"sha512": "538c09328aa52765443464135cef644c144346418378199fa5cef61837819538",
@ -86,19 +86,19 @@ Size and sha512 hashes of optional files contained in your site. Automatically a
### modified
Time when the content.json was generated.
Data in cui è stato generato il file content.json.
**Example**: 1425857522.076
**Esempio**: 1425857522.076
---
### sign (deprecated)
### sign (deprecato)
ECDSA sign of the content.json file content. (keys sorted, without whitespace and the `sign` and `signers_sign` nodes). For backward compatibility, will be removed soon.
Firma ECDSA del contenuto del file content.json (chiavi ordinate, senza spazi vuoti e senza i nodi `sign` e `signers_sign`). Per retrocompatibilità, verrà rimossa a breve.
**Example**:
**Esempio**:
```python
"sign": [
43117356513690007125104018825100786623580298637039067305407092800990252156956,
@ -112,39 +112,39 @@ ECDSA sign of the content.json file content. (keys sorted, without whitespace an
### signers_sign
Possible signer addresses for the root content.json signed using the site address private key. Multiple entries are allowed here, allowing for site Multisig functionality.
Possibile indirizzo del firmatario della root content.json firmato utilizzando la chiave privata del sito. Sono consentiti più valori abilitando la funzionalità Multisig.
**Format of the signed string**: [number_of_signers_required]:[signer address],[signer address]
**Formato della stringa firmata**: [numero_dei_firmatari_richiesto]:[indirizzi firmatari],[indirizzi firmatari]
*Example*:
**Esempio**:
```
signs_required: 1:1PcxwuHYxuJEmM4ydtB1vbiAY6WkNgsz9G,1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE
signers_sign: MEUCIQDuz+CzOVvFkv1P2ra9i5E1p1G0/1cOGecm7GpLpMLhuwIgBIbCL0YHXD1S2+x48QS5VO/rISrkdLiUR+o+x1X0y1A=
```
The above signed message is signed using the address "1PcxwuHYxuJEmM4ydtB1vbiAY6WkNgsz9G".
Il precedente messaggio è firmato utilizzando l'indirizzo "1PcxwuHYxuJEmM4ydtB1vbiAY6WkNgsz9G".
---
### signs
ECDSA signature for the content.json file content:
Firma ECDSA per il contenuto del file content.json:
- `sign`, `signs` JSON nodes removed
- JSON dumped with keys sorted alphabetically, without whitespace
- Signature generated on the dumped data, using Electrum Bitcoin message signature format:
* [Message encoding](https://github.com/vbuterin/pybitcointools/blob/87806f3c984e258a5f30814a089b5c29cbcf0952/bitcoin/main.py#L405): `sha256("\x18" || "Bitcoin Signed Message:\n" || num_to_var_int(len(message)) || message)`
* [Serialization format](https://github.com/MuxZeroNet/zerolib/blob/f13126e04bf99b1b416a7ea5b5cad7924cdc15a4/zerolib/integrity/bitcoin.py#L82-L93): `recovery_id || r || s`, where 27 ≤ recovery_id ≤ 30; signature length = 1 + 32 + 32 = 65 bytes.
* Double vertical bar `||` denotes byte concatenation.
- `sign`, `signs` nodi JSON rimossi
- JSON scaricati con le chiavi ordinate alfabeticamente, senza spazi
- Firma generata sui dati scaricati, usando il formato di firma dei messaggi Electrum Bitcoin:
* [Codifica messaggio](https://github.com/vbuterin/pybitcointools/blob/87806f3c984e258a5f30814a089b5c29cbcf0952/bitcoin/main.py#L405): `sha256("\x18" || "Bitcoin Signed Message:\n" || num_to_var_int(len(message)) || message)`
* [Formato seriale](https://github.com/MuxZeroNet/zerolib/blob/f13126e04bf99b1b416a7ea5b5cad7924cdc15a4/zerolib/integrity/bitcoin.py#L82-L93): `recovery_id || r || s`, dove 27 ≤ recovery_id ≤ 30; lunghezza firma = 1 + 32 + 32 = 65 byte.
* La doppia barra verticale `||` indica la concatenazione di byte.
**Example**:
**Esempio**:
```python
"signs": {
"1TaLk3zM7ZRskJvrh3ZNCDVGXvkJusPKQ": "G6/QXFKvACPQ7LhoZG4fgqmeOSK99vGM2arVWkm9pV/WPCfc2ulv6iuQnuzw4v5z82qWswcRq907VPdBsdb9VRo="
},
```
**Code example**
**Esempio di codice**
```python
import json
import btctools
@ -167,22 +167,22 @@ new_content["signs"][privatekey_address] = sign
### zeronet_version
The ZeroNet version used to generate content.json file.
La versione ZeroNet utilizzata per creare il file content.json.
**Example**: 0.2.5
**Esempio**: 0.2.5
---
## Optional Settings
## Impostazioni opzionali
_These options can be added if the functionality is needed._
_Queste opzioni possono essere aggiunte se sono richieste le funzionalità._
### background-color
Background color of the wrapper
Colore di sfondo del contenitore
**Example**: #F5F5F5
**Esempio**: #F5F5F5
---
@ -190,13 +190,12 @@ Background color of the wrapper
### cloneable
Allow to clone the site if **true**.
Consente di clonare il sito se impostato a **true**.
To make your site properly cloneable you have to have a separate folder of data
files for a clean start (e.g. without any blog posts). To do this you have to
add the **-default** postfix to your data files and directories. During the
cloning process, only directories with the **-default** postfix are
copied. The postfix is removed from the new site.
Per rendere un sito correttamente clonabile serve avere una cartella separata per i file dati
per una inizializzazione pulita (es. senza messaggi del blog). Per far questo serve aggiungere
il suffisso **-default** ai file dati e cartelle. Durante il processo di copia, solo le
cartelle con il suffisso **-default** vengono copiate. Il suffisso viene rimosso nel nuovo sito.
@ -205,9 +204,9 @@ copied. The postfix is removed from the new site.
### description
Description of your site, displayed under the site title on ZeroHello.
Descrizione del sito, visualizzata sotto il titolo del sito in ZeroHello.
**Example**: Decentralized forum demo
**Esempio**: Demo formum decentralizzato
---
@ -215,9 +214,9 @@ Description of your site, displayed under the site title on ZeroHello.
### domain
Namecoin domain name of your site. ZeroHello will link to this if the user has Zeroname plugin enabled.
Nome del dominio Namecoin del sito. ZeroHello si collegherà a questo se l'utente ha il plugin Zeroname abilitato.
**Example**: Blog.ZeroNetwork.bit
**Esempio**: Blog.ZeroNetwork.bit
@ -227,31 +226,31 @@ Namecoin domain name of your site. ZeroHello will link to this if the user has Z
### ignore
Do not sign files matching this pattern.
Non firmare i file con quesa modello.
**Example**: `((js|css)/(?!all.(js|css))|data/users/.*)` (ignore all js and css files except all.js and all.css and don't add anything from the `data/users/` directory)
**Esempio**: `((js|css)/(?!all.(js|css))|data/users/.*)` (ignora tutti i file js e css eccetto all.js e all.css e non aggiunge niente dalla cartella `data/users/`)
Note: [Some restrictions](#regular-expression-limitations) apply to regular expressions.
Nota: [Alcune restrizioni](#limitazioni-espressioni-regolari) si applicano alle espressioni regolari.
---
### includes
Include another content.json in the site. This is typically used for subsequent content.json files that are used to govern user data.
Include un altro content.json nel sito. Questo viene usato tipicamente per file content.json successivi utilizzati per gestire i dati utente.
**Example**:
**Esempio**:
```python
"includes": {
"data/users/content.json": {
"signers": [ # Possible signers address for the file
"signers": [ # Possibili indirizzi dei firmatari del file
"1LSxsKfC9S9TVXGGNSM3vPHjyW82jgCX5f"
],
"signers_required": 1 # The *number* of Valid signs required to accept the file (Multisig possibility),
"files_allowed": "data.json", # Preg pattern for the allowed files in the include file
"includes_allowed": false, # Whether nested includes are allowed
"max_size": 10000, # Max allowed size of included content.json and files it signs (in bytes)
"signers_required": 1 # Il *numero* di firme valide per accettare il file (possibilità Multisig),
"files_allowed": "data.json", # Modello dei file consentiti nel file include
"includes_allowed": false, # Abilitazione all'inclusione ricorsiva
"max_size": 10000, # Massima dimensione consentita per i file content.json inclusi e i file che firmano (in byte)
}
}
```
@ -262,9 +261,9 @@ Include another content.json in the site. This is typically used for subsequent
### merged_type
The type of merger this site is a part of.
Parte dell'unione di cui il file fa parte.
**Example**: `ZeroMe`
**Esempio**: `ZeroMe`
---
@ -272,21 +271,21 @@ The type of merger this site is a part of.
### optional
Preg pattern of optional files.
Modello file opzionali.
**Example**: `(data/mp4/.*|updater/.*)` (everything in `data/mp4` and `updater` directory is optional)
**Esempio**: `(data/mp4/.*|updater/.*)` (qualsiasi cosa nelle cartella `data/mp4` e `updater` è opzionale)
Note: [Some restrictions](#regular-expression-limitations) apply to regular expressions.
Nota: [Alcune restrizioni](#limitazioni-espressioni-regolari) si applicano alle espressioni regolari.
---
### signs_required
The **number** of valid signs required to accept the file. Allows for Multisig functionality.
Il **numero** di firme valide richieste per accettare il file. Consente la funzionalità Multisig.
**Example**: 1
**Esempio**: 1
---
@ -294,9 +293,9 @@ The **number** of valid signs required to accept the file. Allows for Multisig f
### title
The site's title, visible in the browser title and on ZeroHello.
Il titolo del sito, visibile nel titolo del browser e su ZeroHello.
**Example**: ZeroTalk
**Esempio**: ZeroTalk
----
@ -304,9 +303,9 @@ The site's title, visible in the browser title and on ZeroHello.
### translate
Files need be translated. (use language json files in the `languages` directory)
I file che devono essere tradotti. (utilizzare il file linguaggio json nella cartella `languages`)
**Example**: ["index.html", "js/all.js"]
**Esempio**: ["index.html", "js/all.js"]
----
@ -314,9 +313,9 @@ Files need be translated. (use language json files in the `languages` directory)
### favicon
The site's favicon. Replaces the default ZeroNet logo with a site-specific icon. Can be a .ico, .png, .svg, etc.
La favicon del sito. Sostituisce il logo di default ZeroNet con una icona specifica del sito. Può essere una .ico, .png, .svg, etc.
**Example**: favicon.ico
**Esempio**: favicon.ico
----
@ -324,18 +323,18 @@ The site's favicon. Replaces the default ZeroNet logo with a site-specific icon.
### user_contents
Rules of allowed user content within the current directory.
Regole dei contenuti utente consentiti all'interno della cartella corrente.
Node | Description
Nodo | Descrizione
--- | ---
**archived** | Delete the specified user content directory that is signed earlier than the specified timestamp (key: directory name, value: timestamp)
**archived_before** | Delete all user content directory if that is signed earlier than the specified timestamp
**cert_signers** | Accepted domains and valid signer addresses
**cert_signers_pattern** | Accepted cert signers regexp pattern
**permission_rules** | Allowed file names and total directory size based on cert domain or authorization method
**permissions** | Per-user permissions. (false = banned user)
**archived** | Cancella la cartella del contenuto utente specificata che è firmata prima della data specificata (key: nome cartella, value: timestamp)
**archived_before** | Cancella tutte le cartelle dei contenuti utente firmate prima della data specifica
**cert_signers** | Domini accettati e indirizzi dei firmatari validi
**cert_signers_pattern** | Modello regexp dei firmatari certificati accettati
**permission_rules** | Nomi file consentiti e dimensione totale delle cartelle in base a domini certificati o metodi di autorizzazione
**permissions** | Autorizzazioni per utente. (false = utente bloccato)
**Example**:
**Esempio**:
```python
"user_contents": {
"archived": {
@ -363,29 +362,29 @@ Node | Description
}
```
Note: [Some restrictions](#regular-expression-limitations) apply to regular expressions.
Nota: [Alcune restrizioni](#limitazioni-espressioni-regolari) si applicano alle espressioni regolari.
----
### viewport
Content for the viewport meta tag. (Used for mobile-friendly pages)
Contenuto del meta tag viewport. (utilizzato per le pagine mobile-friendly)
**Example**: width=device-width, initial-scale=1.0
**Esempio**: width=device-width, initial-scale=1.0
----
## Regular expression limitations
## Limitazioni espressioni regolari
To avoid the [ReDoS](https://en.wikipedia.org/wiki/ReDoS) algorithmic complexity attack, the following restrictions are applied to each pattern:
Per evitare il complesso attacco algoritmico [ReDoS](https://en.wikipedia.org/wiki/ReDoS), le seguenti restrizioni si applicano ad ogni modello:
- `.` character is mandatory before repetition characters of `*,+,{`
- Maximum 9 repetitions are allowed in a single pattern
- The maximum length of a pattern is 255 characters
- il carattere `.` è obbligatorio prima della ripetizione dei caratteri `*,+,{`
- In un singolo modello sono consentite al massimo 9 ripetizioni
- La massima lunghezza di un modello è 255 caratteri
### Examples:
### Esempi:
- `((?!json).)*$` not allowed, because of `)` before the `*` character. Possible fix: `.*(?!json)$`
- `(.*.epub|.*.jpg|.*.jpeg|.*.png|data/.*.gif|.*.avi|.*.ogg|.*.webm|.*.mp4|.*.mp3|.*.mkv|.*.eot)` not allowed, because it has 12 `.*` repetition patterns. Possible fix: `.*(epub|jpg|jpeg|png|data/gif|avi|ogg|webm|mp4|mp3|mkv|eot)`
- non è consentito `((?!json).)*$`, per la `)` prima del carattere `*`. Correzione possibile: `.*(?!json)$`
- non è consentito `(.*.epub|.*.jpg|.*.jpeg|.*.png|data/.*.gif|.*.avi|.*.ogg|.*.webm|.*.mp4|.*.mp3|.*.mkv|.*.eot)`, perché ci sono 12 `.*`. Possibile soluzione: `.*(epub|jpg|jpeg|png|data/gif|avi|ogg|webm|mp4|mp3|mkv|eot)`

View File

@ -1,47 +1,47 @@
# Structure of dbschema.json
# Struttuda di dbschema.json
[Example dbschema.json file](https://github.com/HelloZeroNet/ZeroTalk/blob/master/dbschema.json)
[Esempio file dbschema.json](https://github.com/HelloZeroNet/ZeroTalk/blob/master/dbschema.json)
The code below will do the following:
Il codice sottostante fa quanto segue:
- If an updated data/users/*/data.json file is received (eg.: a user posted something):
- Every row in `data["topics"]` is loaded to the `topic` table
- Every key in `data["comment_votes"]` is loaded to the `comment_vote` table as `comment_hash` col and the values stored in same line as `vote`
- If an updated data/users/content.json file is received (eg.: new user created):
- The `"user_id", "user_name", "max_size", "added"` key in value of `content["include"]` is loaded into the `user` table and the key is stored as `path`
- Se viene ricevuto un file data/users/*/data.json aggiornato (es.: un utente ha inviato qualcosa):
- Ogni riga in `data["topics"]` viene caricata nella tabella `topic`
- Ogni chiave in `data["comment_votes"]` viene caricata nella tabella `comment_vote` come colonna `comment_hash` e il valore salvato nella stessa riga come `vote`
- Se viene ricevuto un file data/users/content.json aggiornato (es.: è stato creato un nuovo utente):
- Le chiavi `"user_id", "user_name", "max_size", "added"` per valore di `content["include"]` vengono salvate nella tabella `user` e la chiave è salvata come `path`
> Note: [Some restriction](content_json/#regular-expressions-limitations) apply to regular expressions to avoid possible ReDoS vulnerability.
> Nota: [Alcune restrizioni](content_json/#limitazioni-espressioni-regolari) si applicano alle espressioni regolari per evitare la vulnerabilità ReDoS.
```json
{
"db_name": "ZeroTalk", # Database name (only used for debugging)
"db_file": "data/users/zerotalk.db", # Database file relative to site's directory
"version": 2, # 1 = Json table has path column that includes directory and filename
# 2 = Json table has separate directory and file_name column
# 3 = Same as version 2, but also has site column (for merger sites)
"maps": { # Json to database mappings
".*/data.json": { # Regex pattern of file relative to db_file
"to_table": [ # Load values to table
"db_name": "ZeroTalk", # nome del database (utilizzato solo per ricerca errori)
"db_file": "data/users/zerotalk.db", # file database relativo alla cartella del sito
"version": 2, # 1 = la tabella json ha una colonna path che include cartella e nome del file
# 2 = la tabella json ha colonne separate per la cartella e il nome del file
# 3 = Come la versione 2 ma ha anche una colonna per il sito (per unione di siti)
"maps": { # mappa da json a database
".*/data.json": { # modello regex dei file relativi al file del database
"to_table": [ # carica i valori nella tabella
{
"node": "topics", # Reading data.json[topics] key value
"table": "topic" # Feeding data to topic table
"node": "topics", # lettura del valore della chiave data.json[argomenti]
"table": "topic" # alimentazione dati alla tabella degli argomenti
},
{
"node": "comment_votes", # Reading data.json[comment_votes] key value
"table": "comment_vote", # Feeding data to comment_vote table
"node": "comment_votes", # lettura del valore della chiave data.json[comment_votes]
"table": "comment_vote", # alimentazione dei dati nella tabella comment_vote
"key_col": "comment_hash",
# data.json[comment_votes] is a simple dict, the keys of the
# dict are loaded to comment_vote table comment_hash column
# data.json[comment_votes] è un semplice dizionario, le chiavi del dizionario
# sono caricate nella tabella comment_vote, colonna comment_hash
"val_col": "vote"
# The data.json[comment_votes] dict values loaded to comment_vote table vote column
# dizionario dei valori data.json[comment_votes] caricato nella colonna vote della tabella comment_vote
}
],
"to_keyvalue": ["next_message_id", "next_topic_id"]
# Load data.json[next_topic_id] to keyvalue table
# (key: next_message_id, value: data.json[next_message_id] value)
# Carica data.json[next_topic_id] nella tabella keyvalue
# (key: next_message_id, value: data.json[next_message_id])
},
"content.json": {
@ -51,20 +51,20 @@ The code below will do the following:
"table": "user",
"key_col": "path",
"import_cols": ["user_id", "user_name", "max_size", "added"],
# Only import these columns to user table
# importa solo queste colonne nella tabella user
"replaces": {
"path": {"content.json": "data.json"}
# Replace content.json to data.json in the
# value of path column (required for joining)
# sostituisce content.json con data.json nel valore
# della colonna del path (richiesta per le unioni)
}
}
],
"to_json_table": [ "cert_auth_type", "cert_user_id" ] # Save cert_auth_type and cert_user_id directly to json table (easier and faster data queries)
"to_json_table": [ "cert_auth_type", "cert_user_id" ] # Salva cert_auth_type e cert_user_id direttamente nella tabella json (quey semplici e veloci)
}
},
"tables": { # Table definitions
"topic": { # Define topic table
"cols": [ # Cols of the table
"tables": { # definizione tabella
"topic": { # definisce la tabella topic
"cols": [ # colonne della tabella
["topic_id", "INTEGER"],
["title", "TEXT"],
["body", "TEXT"],
@ -74,11 +74,11 @@ The code below will do the following:
["json_id", "INTEGER REFERENCES json (json_id)"]
],
"indexes": ["CREATE UNIQUE INDEX topic_key ON topic(topic_id, json_id)"],
# Indexes automatically created
# indice creato automaticamente
"schema_changed": 1426195822
# Last time of the schema changed, if the client's version is different then
# automatically destroy the old, create the new table then reload the data into it
# ultima modifica dello schema, se la versione del client è diversa allora la
# vecchia viene distrutta atomaticamente, crea la nuova tabella e ricarica in essa i dati
},
"comment_vote": {
@ -102,7 +102,7 @@ The code below will do the following:
"indexes": ["CREATE UNIQUE INDEX user_id ON user(user_id)", "CREATE UNIQUE INDEX user_path ON user(path)"],
"schema_changed": 1426195825
},
"json": { # Json table format only required if you have specified to_json_table pattern anywhere
"json": { # formato tabella json richiesto solo se è stato specificato il modello to_json_table
"cols": [
["json_id", "INTEGER PRIMARY KEY AUTOINCREMENT"],
["directory", "TEXT"],
@ -117,7 +117,7 @@ The code below will do the following:
}
```
## Example for data.json file
## Esempio di data.json file
```json
{
"next_topic_id": 2,
@ -175,7 +175,7 @@ The code below will do the following:
}
```
## Example for content.json file
## Esempio di content.json file
```json
{

View File

@ -1,83 +1,83 @@
# Getting Started
# Per iniziare
ZeroNet allows you to publish static and dynamic websites on a distributed web platform.
ZeroNet consente di pubblicare siti web statici e dinamici in una piattaforma web distribuita.
In ZeroNet there is no concept of servers. Thus, server-side languages like PHP or Ruby are not needed. Instead, one can create dynamic content using ZeroNet's API (called ZeroFrame), JavaScript (or CoffeeScript) and the SQL database provided to all websites.
In ZeroNet non c'è il concetto di server. Pertanto, linguaggi lato server come PHP o Ruby non servono. Invece, si possono creare contenuti dinamici utilizzando le API ZeroNet (chiamate ZeroFrame), JavaScript (o CoffeeScript) e il database SQL database fornito a tutti i siti web.
## Tutorials
## Tutorial
### ZeroChat tutorial
### Tutorial ZeroChat
In this tutorial we are going to build a P2P, decentralized, server-less chat site in less then 100 lines of code.
In questo tutorial si svilupperà un sito di chat P2P, decentralizzato, senza-server in meno di 100 righe di codice.
* [Read on ZeroBlog](http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:99:ZeroChat+tutorial)
* [Read on Medium.com](https://decentralize.today/decentralized-p2p-chat-in-100-lines-of-code-d6e496034cd4)
* [Leggi su ZeroBlog](http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:99:ZeroChat+tutorial)
* [Leggi su Medium.com](https://decentralize.today/decentralized-p2p-chat-in-100-lines-of-code-d6e496034cd4)
## Useful Information
## Informazioni utili
### ZeroNet Debug mode
### Modalità debug ZeroNet
ZeroNet comes with a `--debug` flag that will make site development easier.
ZeroNet presenta una opzione `--debug` che consente di sviluppare siti facilmente.
To run ZeroNet in debug mode use: `python zeronet.py --debug`
Per avviare ZeroNet in modalità debug usare: `python zeronet.py --debug`
If you are using compiled/bundled version of ZeroNet:
Se si sta usando una versione compilata/bundled di ZeroNet:
* On Windows: `lib\ZeroNet.cmd --debug`
* On Linux: `./ZeroNet.sh --debug`
* On Mac: `./ZeroNet.app/Contents/MacOS/ZeroNet --debug`
* Su Windows: `lib\ZeroNet.cmd --debug`
* Su Linux: `./ZeroNet.sh --debug`
* Su Mac: `./ZeroNet.app/Contents/MacOS/ZeroNet --debug`
#### Debug mode features:
#### Funzionalità modalità debug:
- Automatic [CoffeeScript](http://coffeescript.org/) -> JavaScript conversion (if a coffeescript compiler is installed)
- Debug messages will appear in the console
- Auto reload of some source files (UiRequest, UiWebsocket, FileRequest) on modification to prevent restarting (Requires [PyFilesystem](http://pyfilesystem.org/) on GNU/Linux)
- `http://127.0.0.1:43110/Debug` Traceback and interactive Python console at the last error position (using the wonderful Werkzeug debugger - Requires [Werkzeug](http://werkzeug.pocoo.org/))
- `http://127.0.0.1:43110/Console` Spawns an interactive Python console (Requires [Werkzeug](http://werkzeug.pocoo.org/))
- Conversione automatica [CoffeeScript](http://coffeescript.org/) -> JavaScript (se è installato un compilatore coffeescript)
- I messaggi di debug compaiono nella console
- Auto ricarica di alcuni file sorgenti (UiRequest, UiWebsocket, FileRequest) su modifica per prevenire il riavvio (Richiede [PyFilesystem](http://pyfilesystem.org/) su GNU/Linux)
- `http://127.0.0.1:43110/Debug` Tracciamento e console Python interattiva all'ultima posizione di errore (utilizzando il meraviglioso debugger Werkzeug - Richiede [Werkzeug](http://werkzeug.pocoo.org/))
- `http://127.0.0.1:43110/Console` Visualizza una cponsole interattiva Python (Richiede [Werkzeug](http://werkzeug.pocoo.org/))
### Writing in CoffeeScript
### Scrivere in CoffeeScript
To aid in writing CoffeeScript-based ZeroNet sites and to make use of ZeroNet's
built-in CoffeeScript -> JavaScript converter, first enable debug mode as
described in [Debug](#zeronet-debug-mode). Additionally, ensure the site you
wish to work on is marked as one you own by enabling "This is my site" via
the site sidebar.
Per aiutare nella scrittura di siti ZeroNet basati su CoffeeScript-based e per utilizzare il convertitore ZeroNet
incluso CoffeeScript -> JavaScript, abilitare per prima cosa la modalità debug come descritto
in [Debug](#modalità-debug-zeronet). Inoltre, assicurarsi che il sito su cui si vuole lavorare
sia marcato come di proprietà abilitando "Questo è il mio sito" attraverso
la barra laterale.
<!-- Is this right? -->
ZeroNet will compile all CoffeeScript files it can find into a file called `all.js`, and deposit it in a `js/` folder at the top level of your site. This file will also include all your JavaScript code as well. Then you can simply import all your dynamic code into your HTML with the following before the `</body>` tag:
<!-- Questo è corretto? -->
ZeroNet compilerà tutti i file CoffeeScript che troverà all'interno del file `all.js`, e li depositerà in una cartella `js/` al livello principale del sito. Questo file incliderà anche tutto il codice JavaScript. Quindi è possibile importare tutto il codice dinamico nell'HTML con la seguente riga prima del tag `</body>`:
```html
<script type="text/javascript" src="js/all.js?lang={lang}"></script>
```
<!-- Why? -->
!!! info "Note"
<!-- Perché? -->
!!! info "Nota"
`{lang}` is a *placeholder variable*, and will be automatically replaced by the appropriate value by ZeroNet when the site is loaded.
`{lang}` è una *variabile segnaposto* e verrà sostituita automaticamente dal valore opportuno da ZeroNet quando il sito viene caricato.
### Disable HTTP Browser Caching
### Disabilitare la chache HTTP del browser
In addition to Debug Mode, disabling HTTP Caching in the browser is an essential part of ZeroNet site development. Modern web browsers attempt to cache web content whenever they can. As all ZeroNet sites run in an iframe, web browsers cannot detect when a ZeroNet site's content changes, and thus site changes are often not reflected if HTTP Caching is enabled.
In aggiunta alla modalità debug, disabilitare la cache HTTP nel browser è una parte essenziale nello sviluppo di siti ZeroNet. I moderni browser tentano di memorizzare in cache i conentuti web quando possono. Siccome tutti i siti ZeroNet funzionano all'interno di un iframe, i web browser non si accorgono quando il contenuto di un sito ZeroNet cambia e pertanto le modifiche dei siti non vengono visualizzate se è attiva la cache HTTP.
To disable, open your browser's devtools, navigate to the devtools settings and check the option along the lines of 'Disable HTTP Cache (when toolbox is open)'. As the setting suggests, make sure to keep devtools open when testing new changes to your site!
Per disabilitarla, aprire gli strumenti sviluppatori del browser, spostarsi sulle impostazioni è settare l'opzione vicino alla riga di 'Disabilitare cache HTTP (quando gli strumenti sviluppatore sono aperti)'. Come suggeriscono le impostazioni, assicurarsi di mantenere aperti gli strumenti sviluppatori quando si testano nuove modifiche del sito!
### Extra features (works only for sites that you own)
### Funzionalità aggiuntive (funzionano folo sui siti di proprietà)
- Merged CSS files: All CSS files inside the site folder will be merged into one file called `all.css`. You can choose to include only this file to your site. If you want to keep the other CSS files to make the development easier, you can add them to the ignore key of your `content.json`. This way, they won't be published with your site. (eg: add to your `content.json` `"ignore": "(js|css)/(?!all.(js|css))"` this will ignore all CSS and JS files except `all.js` and `all.css`)
- Merged JS files: All JS files inside the site folder will be merged into one file called `all.js`. If a CoffeeScript compiler is present (bundled for Windows) it will convert `.coffee` to `.js`.
- Order in which files are merged into all.css/all.js: Files inside subdirectories of the css/js folder comes first; Files in the css/js folder will be merged according to file name ordering (01_a.css, 02_a.css, etc)
- File CSS uniti: tutti i file CSS all'interno della cartella del sito vengono uniti in uno chiamato `all.css`. Si può scegliere di includere solo questo file nel sito. Se si vogliono mantenere gli altri file CSS per sviluppare con facilità, si possono aggiungere alla chiave ignore del relativo file `content.json`. In questo modo, non verranno pubblicati con il sito. (es.: aggiungere a `content.json` `"ignore": "(js|css)/(?!all.(js|css))"` per ignorare tutti i file CSS e JS eccetto `all.js` e `all.css`)
- File JS uniti: tutti i file JS all'interno della cartella del sito vegono uniti in uno chiamato `all.js`. Se è presente un compilatore CoffeeScript (fornito per Windows) convertirà `.coffee` in `.js`.
- L'ordine in cui i file vengono uniti in all.css/all.js: i file all'interno delle sotto cartelle delle cartelle css/js sono i primi; i file nella cartella css/js verranno uniti seguendo l'ordinamento per nome (01_a.css, 02_a.css, etc)
## Need Help?
## Serve aiuto?
ZeroNet has a growing community of developers who hang out in various spaces. If you would like to ask for help, advice or just want to hang out, feel free to connect in to the following services:
ZeroNet ha una comunità in crescita di sviluppatori con diverse specializzazioni. Se serve aiuto, notizie o semplicemente restare in contatto, connettetevi liberamente ai seguenti servizi:
### Forums
### Forum
* [ZeroExchange](http://127.0.0.1:43110/zeroexchange.bit/), a p2p StackOverflow clone
* [ZeroTalk](http://127.0.0.1:43110/Talk.ZeroNetwork.bit/), a p2p Reddit-like forum
* [ZeroExchange](http://127.0.0.1:43110/zeroexchange.bit/), un clone p2p StackOverflow
* [ZeroTalk](http://127.0.0.1:43110/Talk.ZeroNetwork.bit/), un forum p2p Reddit-like
### Chat
* [#zeronet-dev:matrix.org](https://riot.im/app/#/room/#zeronet-dev:matrix.org) on Matrix
* IRC at #zeronet on Freenode
* [#zeronet-dev:matrix.org](https://riot.im/app/#/room/#zeronet-dev:matrix.org) su Matrix
* IRC a #zeronet su Freenode

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,3 @@
# Translation HowTo
# Come tradurre
Instructions goes here.
Inserire qui le istruzioni per la traduzione.

View File

@ -1,62 +1,62 @@
# Create new ZeroNet site
# Creare un nuovo sito ZeroNet
## Easy way: Using the web interface
## Modo semplice: utilizzare l'interfaccia web
* Click on **⋮** > **"Create new, empty site"** menu item on the site [ZeroHello](http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D).
* You will be **redirected** to a completely new site that is only modifiable by you!
* You can find and modify your site's content in **data/[yoursiteaddress]** directory
* After the modifications open your site, drag the topright "0" button to left, then press **sign** and **publish** buttons on the bottom
* Fare clic su **⋮** > voce di menu **"Creare un nuovo sito vuoto"** sul sito [ZeroHello](http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D).
* Si verrà **rediretti** in un sito completamente nuovo modificabile solo da voi!
* Si può accedere e modificare il contenuto del proprio sito nella cartella **data/[indirizzodeltuosito]**
* Dopo le modifiche aprire il sito, trascinare a sinistra l'icona "0" in alto a destra, quindi fare clic sui bottoni **firma** e **pubblica** nella parte bassa
## Manual way: Using the command line
## Modo manuale: utilizzando la riga di comando
### 1. Create site structure
### 1. Creare la struttura del sito
* Shut down ZeroNet if it is running
* Browse to the folder where ZeroNet is installed and run:
* Spegnere ZeroNet se attivo
* Navicare nella cartella dove è installato ZeroNet ed eseguire:
```bash
$ zeronet.py siteCreate
...
- Site private key: 23DKQpzxhbVBrAtvLEc2uvk7DZweh4qL3fn3jpM3LgHDczMK2TtYUq
- Site address: 13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2
- Chiave privata del sito: 23DKQpzxhbVBrAtvLEc2uvk7DZweh4qL3fn3jpM3LgHDczMK2TtYUq
- Indirizzo del sito: 13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2
...
- Site created!
- Sito creato!
$ zeronet.py
...
```
- This will create the initial files for your site inside ```data/13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2```.
- Questo creerà i file iniziali dentro ```data/13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2```.
> __Note:__
> Windows users using the bundle version must browse into the ZeroBundle/ZeroNet folder and run `"../Python/python.exe" zeronet.py siteCreate`
> __Nota:__
> Gli utenti Windows che utilizzano la versione pachettizata devono navigare nella cartella ZeroBundle/ZeroNet ed eseguire `"../Python/python.exe" zeronet.py siteCreate`
### 2. Build/Modify site
### 2. Costruire/modificare un sito
* Update the site files located in ```data/[your site address key]``` (eg: 13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2).
* When your site is ready run:
* Aggiornare i file del sito posizionati in ```data/[chiave dell'indirizzo del sito]``` (es.: 13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2).
* Quando il sito è pronto eseguire:
```bash
$ zeronet.py siteSign 13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2
- Signing site: 13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2...
Private key (input hidden):
- Sito in firma: 13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2...
Chiave privata (inserimento nascosto):
```
* Enter the private key you got when you created the site. This will sign all files so peers can verify that the site owner is who made the changes.
* Inserire la chiave privata ottenuta quando si è creato il sito. Questo applicherà la firma a tutti i file così i peer potranno verificare che chi effettua le modifiche è il proprietario del sito.
### 3. Publish site changes
### 3. Pubblicare le modifiche del sito
* In order to inform peers about the changes you made you need to run:
* Per informare i peer delle modifiche effettuate bisogna eseguire:
```bash
$ zeronet.py sitePublish 13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2
...
Site:13DNDk..bhC2 Publishing to 3/10 peers...
Site:13DNDk..bhC2 Successfuly published to 3 peers
- Serving files....
SiSitote:13DNDk..bhC2 Publishing to 3/10 peers...
Sito:13DNDk..bhC2 Pubblicato con successo da 3 peer
- File distribuiti....
```
* That's it! You've successfully signed and published your modifications.
* Your site will be accessible from: ```http://localhost:43110/13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2```
* Questo è tutto! Le modifiche sono state firmate e pubblicate con successo.
* Il sito sarà accessibile da: ```http://localhost:43110/13DNDkMUExRf9Xa9ogwPKqp7zyHFEqbhC2```
**Next steps:** [ZeroNet Developer Documentation](../../site_development/getting_started/)
**Passi successivi:** [Documentazione sviluppatori ZeroNet](../../site_development/getting_started/)

View File

@ -1,35 +1,33 @@
# Installing ZeroNet
# Installazione ZeroNet
* Download ZeroBundle package: [Microsoft Windows](https://github.com/HelloZeroNet/ZeroNet-win/archive/dist/ZeroNet-win.zip), [Apple macOS](https://github.com/HelloZeroNet/ZeroNet-mac/archive/dist/ZeroNet-mac.zip), [Linux 64bit](https://github.com/HelloZeroNet/ZeroBundle/raw/master/dist/ZeroBundle-linux64.tar.gz), [Linux 32bit](https://github.com/HelloZeroNet/ZeroBundle/raw/master/dist/ZeroBundle-linux32.tar.gz)
* Unpack anywhere
* Run `ZeroNet.exe` (win), `ZeroNet(.app)` (macOS), `ZeroNet.sh` (linux)
* Scaricare il pacchetto ZeroBundle: [Microsoft Windows](https://github.com/HelloZeroNet/ZeroNet-win/archive/dist/ZeroNet-win.zip), [Apple macOS](https://github.com/HelloZeroNet/ZeroNet-mac/archive/dist/ZeroNet-mac.zip), [Linux 64bit](https://github.com/HelloZeroNet/ZeroBundle/raw/master/dist/ZeroBundle-linux64.tar.gz), [Linux 32bit](https://github.com/HelloZeroNet/ZeroBundle/raw/master/dist/ZeroBundle-linux32.tar.gz)
* Estrarre in una qualsiasi cartella
* Eseguire `ZeroNet.exe` (win), `ZeroNet(.app)` (macOS), `ZeroNet.sh` (linux)
### Manual install for Debian Linux
### Installazione manuale per Linux Debian
* `sudo apt-get update`
* `sudo apt-get install msgpack-python python-gevent`
* `wget https://github.com/HelloZeroNet/ZeroNet/archive/master.tar.gz`
* `tar xvpfz master.tar.gz`
* `cd ZeroNet-master`
* Start with `python zeronet.py`
* Open http://127.0.0.1:43110/ in your browser
* Avviare con `python zeronet.py`
* Aprire http://127.0.0.1:43110/ nel browser
### [Vagrant](https://www.vagrantup.com/)
* `vagrant up`
* Access VM with `vagrant ssh`
* Accedere alla VM con `vagrant ssh`
* `cd /vagrant`
* Run `python zeronet.py --ui_ip 0.0.0.0`
* Open http://127.0.0.1:43110/ in your browser
* Eseguire `python zeronet.py --ui_ip 0.0.0.0`
* Aprire http://127.0.0.1:43110/ nel browser
### [Docker](https://www.docker.com/)
* `docker run -d -v <local_data_folder>:/root/data -p 15441:15441 -p 127.0.0.1:43110:43110 nofish/zeronet`
* This Docker image includes the Tor proxy, which is disabled by default. Beware that some
hosting providers may not allow you running Tor in their servers. If you want to enable it,
set `ENABLE_TOR` environment variable to `true` (Default: `false`). E.g.:
* Questa immagine Docker include il proxy Tor, che è disabilitato di default. Fare attenzione che alcuni provider di hosting non consentono di eseguire Tor nei loro server. Se lo si vuole abilitare, impostare la variabile d'ambiente `ENABLE_TOR` a `true` (Predefinito: `false`). Es.:
`docker run -d -e "ENABLE_TOR=true" -v <local_data_folder>:/root/data -p 15441:15441 -p 127.0.0.1:43110:43110 nofish/zeronet`
* Open http://127.0.0.1:43110/ in your browser
* Aprire http://127.0.0.1:43110/ nel browser
### [Virtualenv](https://virtualenv.readthedocs.org/en/latest/)
@ -37,6 +35,4 @@ set `ENABLE_TOR` environment variable to `true` (Default: `false`). E.g.:
* `source env/bin/activate`
* `pip install msgpack-python gevent`
* `python zeronet.py`
* Open http://127.0.0.1:43110/ in your browser
* Aprire http://127.0.0.1:43110/ nel browser

View File

@ -1,129 +1,129 @@
# Sample ZeroNet sites
# Siti ZeroNet di esempio
## ZeroHello
The homepage of ZeroNet
La pagina principale di ZeroNet
- Lists all added sites: Title, Peer number, Modification date, etc.
- Site actions: Update, Pause, Resume, Delete, Check Files and Save as .zip
- Clone sites to have your own blog / forum
- ZeroNet Statistics
- If an update is available, ZeroNet can be updated with one click
- Elenca tutti i siti seguiti: titolo, numero peer, data modifica, etc.
- Azioni sui siti: aggiorna, pausa, riavvia, cancella, controlla file e salva come .zip
- Duplicare siti per avere il proprio blog / forum
- Statistiche ZeroNet
- Se è disponibile un aggiornamento, ZeroNet può essere aggiornato con un clic
![ZeroHello](../img/zerohello.png)
Address: [1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D](http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D)
Indirizzo: [1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D](http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D)
[Source code](https://github.com/HelloZeroNet/ZeroHello)
[Codice sorgente](https://github.com/HelloZeroNet/ZeroHello)
---
## ZeroBlog
Self publishing blog demo
Demo di un blog con pubblicazione automatica
- Inline content editor
- Markdown syntax
- Code syntax highlighting
- Site signing & publishing through the web interface
- Modifica dei contenuti in linea
- Sintassi Markdown
- Evidenza sintassi del codice
- Firma e pubblicazione del sito attraverso l'interfaccia web
How does it work?
Come funziona?
- `data.json` contained within site files contain blog posts and comments. Each user has their own.
- Upon pressing `Sign & Publish new content`, the blogger is asked for the site private key (displayed when [creating a new site using zeronet.py siteCreate command](create_new_site/))
- Your ZeroNet client signs the new/modified files and publishes directly to other peers
- The site will then be accessible until to other peers to view
- `data.json` all'interno dei file del sito contiene i messaggi e i commenti del blog. Ogni utente ha i propri.
- Con l'elaborazione `Firma & Pubblica nuovi contenuti`, viene richiesta al bloggher la chiave privata del sito (visualizzata [creando un nuovo sito utilizzando il comando zeronet.py siteCreate](create_new_site/))
- Il vostro client ZeroNet firma i file nuovo/modificati e li pubblica direttamente agli altri peer
- Il sito sarà quindi accessibile finché altri peer lo pubblicano
![ZeroBlog](../img/zeroblog.png)
Address: [1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8](http://127.0.0.1:43110/1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8) or [blog.zeronetwork.bit](http://127.0.0.1:43110/blog.zeronetwork.bit)
Indirizzo: [1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8](http://127.0.0.1:43110/1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8) o [blog.zeronetwork.bit](http://127.0.0.1:43110/blog.zeronetwork.bit)
[Source code](https://github.com/HelloZeroNet/ZeroBlog)
[Codice sorgente](https://github.com/HelloZeroNet/ZeroBlog)
---
## ZeroTalk
Decentralized, P2P forum demo
Demo di forum P2P decentralizzato
- Post and comment creation, modification, deletion and upvoting
- Commenting and content modifications pushed directly to other peers
- Only you can sign and modify your own files
- Real time display of new comments
- Creazione di messaggi e commenti, modifica, cancellazione e votazioni
- Commenti e contenuti pubblicati direttamente agli altri peer
- Solo l'autore può firmare e modificare i prorpi file
- Visualizzazione in tempo reale di nuovi commenti
How does it work?
Come funziona?
- To post and comment you have to request a certificate of registration (a cryptographic sign) from a ZeroID provider
- After you have the certificate you can publish your content (messages, posts, upvotes) directly to other peers
- Per inserire e commentare messaggi serve richiedere un certificato di registrazione (una firma criprografica) da un provider ZeroID
- Ottenuto il certificato si può pubblicare il contenuto (messaggi, argomenti, voti) direttamente ad altri peer
![ZeroTalk](../img/zerotalk.png)
Address: [1TaLkFrMwvbNsooF4ioKAY9EuxTBTjipT](http://127.0.0.1:43110/1TaLkFrMwvbNsooF4ioKAY9EuxTBTjipT) or [talk.zeronetwork.bit](http://127.0.0.1:43110/talk.zeronetwork.bit)
Indirizzo: [1TaLkFrMwvbNsooF4ioKAY9EuxTBTjipT](http://127.0.0.1:43110/1TaLkFrMwvbNsooF4ioKAY9EuxTBTjipT) o [talk.zeronetwork.bit](http://127.0.0.1:43110/talk.zeronetwork.bit)
[Source code](https://github.com/HelloZeroNet/ZeroTalk)
[Codice sorgente](https://github.com/HelloZeroNet/ZeroTalk)
---
## ZeroMail
End-to-end encrypted, distributed, P2P messaging site. To improve privacy it uses a BitMessage-like solution and will not expose the message recipient.
Sito di messaggistica end-to-end criptato, distribuito, P2P. Per aumentare la riservatezza uilizza una soluzione simile a BitMessage e non espone il contenitore del messaggio.
- Using ECIES for secret exchange, AES256 for message encoding
- When you first visit the site, it adds your public key to your data file. At that point anyone is able to send a message to you
- Everyone tries to decrypt every message, this improves privacy by making it impossible to find the message recipient
- To reduce per message overhead and increase decryption speed, we re-use the AES key, but a new IV is generated every time
- Utilizza ECIES per scambi segreti, AES256 per la codifica dei messaggi
- Quando si visita il sito per la prima volta, viene aggiunta la chiave pubblica dell'utente ai suoi file dati. Da questo momento chiunque può inviare messaggi all'utente
- Ognuno tenta di decifrare ogni messaggio, questo migliora la riservatezza rendendo impossibile trovare il contenitore del messaggio
- Per ridurre il sovraccarico del messaggio e aumentare la velocità di decodifica, si riutilizza la chiave AES, ma viene generato un nuovo IV ogni volta
![ZeroTalk](../img/zeromail.png)
Address: [1MaiL5gfBM1cyb4a8e3iiL8L5gXmoAJu27](http://127.0.0.1:43110/1MaiL5gfBM1cyb4a8e3iiL8L5gXmoAJu27) or [mail.zeronetwork.bit](http://127.0.0.1:43110/mail.zeronetwork.bit)
Indirizzo: [1MaiL5gfBM1cyb4a8e3iiL8L5gXmoAJu27](http://127.0.0.1:43110/1MaiL5gfBM1cyb4a8e3iiL8L5gXmoAJu27) o [mail.zeronetwork.bit](http://127.0.0.1:43110/mail.zeronetwork.bit)
[Source code](https://github.com/HelloZeroNet/ZeroMail)
[Codice sorgente](https://github.com/HelloZeroNet/ZeroMail)
---
## ZeroMe
Decentralized, Twitter-like P2P social network.
Social network decentralizzata, simil-Twitter, P2P.
- Stores user information in ZeroMe user registry
- Stores posts and comments in MergerSites called Hubs
- Upload images as optional files
- Real time display of feed activity
- Archivia le informazioni utente nel registro utente ZeroMe
- Archivia messaggi e commenti in SitiUnione chiamati Hub
- Carica le immagini come file opzionali
- Visualizza in tempo reale le attività dei collegamenti
![ZeroMe](../img/zerome.png)
Address: [1MeFqFfFFGQfa1J3gJyYYUvb5Lksczq7nH](http://127.0.0.1:43110/1MeFqFfFFGQfa1J3gJyYYUvb5Lksczq7nH)
Indirizzo: [1MeFqFfFFGQfa1J3gJyYYUvb5Lksczq7nH](http://127.0.0.1:43110/1MeFqFfFFGQfa1J3gJyYYUvb5Lksczq7nH)
[Source code](https://github.com/HelloZeroNet/ZeroMe)
[SoCodice sorgente](https://github.com/HelloZeroNet/ZeroMe)
---
## ReactionGIFs
Demo for optional files, files which only download from other peers if your browser requests them.
Demo per i file opzionali, file che vengono scaricati dagli altri peer solo se il browser li richiede.
![ReactionGIFs](../img/reactiongifs.jpg)
Address: [1Gif7PqWTzVWDQ42Mo7np3zXmGAo3DXc7h](http://127.0.0.1:43110/1Gif7PqWTzVWDQ42Mo7np3zXmGAo3DXc7h)
Indirizzo: [1Gif7PqWTzVWDQ42Mo7np3zXmGAo3DXc7h](http://127.0.0.1:43110/1Gif7PqWTzVWDQ42Mo7np3zXmGAo3DXc7h)
[Source code](https://github.com/HelloZeroNet/ReactionGIFs)
[SouCodice sorgente](https://github.com/HelloZeroNet/ReactionGIFs)
---
## ZeroChat
The finished site for the tutorial of creating a server-less, SQL backed, real-time updated P2P chat application using ZeroNet in less than 100 lines of code.
Il sito tutorial completo per la creazione di una applicazione di chat P2P, server-less, abilitata da SQL, aggiornata in tempo reale utilizzando ZeroNet in meno di 100 righe di codice.
- Uses ZeroID certificate for authentication
- Stores messages in a SQLite database
- Posts messages and distribute directly to other users in real-time
- Real-time update the messages as they arrive
- Utilizza i certificati ZeroID per l'autenticazione
- Salva i messaggi in un database SQLite
- Invia messaggi e li distribuisce direttamente agli altri utenti in tempo reale
- Aggiorna i messaggi in tempo reale al loro arrivo
![ZeroChat](../img/zerochat.png)
Address of finished site: [1AvF5TpcaamRNtqvN1cnDEWzNmUtD47Npg](http://127.0.0.1:43110/1AvF5TpcaamRNtqvN1cnDEWzNmUtD47Npg)
Indirizzo del sito completato: [1AvF5TpcaamRNtqvN1cnDEWzNmUtD47Npg](http://127.0.0.1:43110/1AvF5TpcaamRNtqvN1cnDEWzNmUtD47Npg)
Tutorial on ZeroBlog:
[Part1](http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:43:ZeroNet+site+development+tutorial+1),
[Part2](http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:46:ZeroNet+site+development+tutorial+2)
Tutorial su ZeroBlog:
[Parte 1](http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:43:ZeroNet+site+development+tutorial+1),
[Parte 2](http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:46:ZeroNet+site+development+tutorial+2)

55
mkdocs-it.yml Normal file
View File

@ -0,0 +1,55 @@
site_name: ZeroNet
site_url: https://zeronet.io
site_description: Site Web decentralizzati utilizzando crittografia Bitcoin e la rete BitTorrent
repo_url: https://github.com/HelloZeroNet/ZeroNet
edit_uri: ../Documentation/edit/master/docs/en/
extra_css: [docs.css, stylesheets/menu.css]
extra_javascript: [ZeroFrame.js, jquery.min.js, docs.js, javascripts/menu.js]
docs_dir: docs/it
site_dir: site
theme:
language: 'it'
palette:
primary: "deep purple"
accent: "deep purple"
logo: "logo/zeronet_logo.svg"
name: "material"
favicon: "logo/favicon.ico"
custom_dir: "docs/resources"
font: false
markdown_extensions:
- toc:
permalink: true
- codehilite
- markdown.extensions.admonition
- pymdownx.superfences
- pymdownx.details
plugins:
- search:
lang: ['it']
nav:
- Introduction: "index.md"
- Frequently asked questions: "faq.md"
- Start using ZeroNet:
- "using_zeronet/installing.md"
- "using_zeronet/sample_sites.md"
- "using_zeronet/create_new_site.md"
- Site Development:
- "site_development/getting_started.md"
- "site_development/zeroframe_api_reference.md"
- "site_development/content_json.md"
- "site_development/dbschema_json.md"
- "site_development/cert_authority.md"
- Help ZeroNet development:
- "help_zeronet/contributing.md"
- "help_zeronet/coding_conventions.md"
- "help_zeronet/network_protocol.md"
- "help_zeronet/donate.md"