OpenNap-NG - Manuale d'Uso

Versione 0.60

Giugno 2005

Indice






Introduzione


All'inizio, Napster era un servizio distribuito di condivisione files, che permetteva agli utenti di trasferire files gratis attraverso i loro programmi client. Un server centrale teneva traccia di tutti i files disponibili e forniva ai programmi client la capacita' di ricerca nell'indice dei files disponibili. In piu' erano forniti Messaggi Istantanei (chat privata) e chat di gruppo simile a IRC.

OpenNap e' uno sforzo Open Source per ricreare una versione del server proprietario Napster. Vogliamo esprimere i nostri ringraziamenti a drscholl, che [all'epoca] fece un eccellente lavoro di programmazione.

OpenNap-NG e' la nuova generazione di Opennap, dopo che drscholl smise di sviluppare ulteriormente. Sono state incluse molte nuove caratteristiche e soluzioni di errori .

Opennap NG 0.60 e' l'ultimo sforzo di sviluppo della Primavera 2005 per tenere vivo lo spirito di allora.

Da notare che Opennap NG 0.60 non e' il diretto successore delle precedenti versioni 0.47 e 0.47.2! E' un ramo che si e' sviluppato dalla v.0.46, includendo molti piu errori risolti ed estensioni di caratteristiche della 0.47.2. Nuove caratteristiche, marcate come "dalla 0.47H" non sono contenute nella 0.47.2!

Ci farebbe piacere accogliere felicemente chiunque abbia nuove idee e volesse partecipare a questo progetto. Vogliamo rendere pubblico anche che vogliamo riunire questa diramazione di Opennap con drscholls, non appena ricompare. L'obiettivo e' una base comune del codice sviluppato. La versione piu' aggiornata di questo software e' scaricabile qui.





Caratteristiche:






Descrizione delle nuove caratteristiche


Questa e' un'introduzione e una breve descrizione delle nuove caratteristiche e cambi che sono stati aggiunti dalla Opennap NG 0.47. E' rivolta ad utenti gia' familiari con precedenti versioni di Opennap (NG) ed hanno piacere a conocere ulteriori sviluppi dall'epoca. Cerca di spiegare quali nuove caratteristiche vi sono, perche' sono state implementate, come usarle e perche' probabilmente molte se non tutte vi piaceranno.

Questa lista e' incompleta. Controllate su log dei cambi per un piu' completo elenco dei cambi che troverete spiegati in dettaglio piu' avanti in questo manuale.

Questa pagina non e' intesa per essere una guida per il principiante dell'amministrazione di sistema! Essa non copre tutte le caratteristiche precedenti all' Opennap NG 0.49.

Questa pagina discute i seguenti migliramenti:



Nomi dei File:

Piu' importante: i nomi dei files di Opennap NG sono cambiati dalla NG 0.47. Per rispettare gli utenti di Windows, questi file hanno tutti il prefisso opennap- e il suffisso .txt. Per esempio il precedente file config e' ora stato rinominato opennap-config.txt, il precedente file channels e' ora opennap-channels.txt e cosi' via. Siamo consci che ad alcuni utenti Unix non piacera' questo cambio. Comunque, mentre per gli utenti Unix lo svantaggio e' solo di natura estetica, per gli utenti Windows il guadagno e' di natura pratica.

Formati dei File:

I formati dei file di dati di Opennap NG sono stati tenuti maggiormente compatibili con le precedenti versioni. Comunque, le seguenti estensioni sono state introdotte:

Documentazione:

La documentazione di Opennap NG e' stata notevolmente migliorata. Questo include sia l' homesite quanto il manuale del server. Quest'ultimo - ora disponibile sia come singola pagina in HTML sia come help in formato HTML strutturato e compilato (CHM) - cerca di spiegare ogni variabile di configurazione in dettagio, e sono state aggiunte nuove sezioni, come un glossario, istruzioni per una partenza rapida, e una lista dei programmi client compatibili. Molte delle sezioni preesistenti sono state o riscritte o estese. Anche nuovo e' il supporto Opennap NG FAQ. Vi consigliamo davvero di leggerlo.

Strumento Grafico di Configurazione:

Da Opennap NG 0.49 e' disponibile uno strumento di configurazione grafica per una facile configurazione del server. Tale programma e' scritto in C, e usa il GTK+ come libreria di sviluppo grafico; e' disponibile sia per Unix che per Windows. Supporta tutte le nuove variabili di configurazione di Opennap NG, offre una breve descrizione inline della variabile, e assistenza per scegliere valori ottimizzati. Adesso crea un file di configurazione per Opennap NG aggiornato, in ordine alfabetico e commentato. L'uso di tale strumento di configurazione non e' obbligatorio ma solo raccomandato, specialmente se si sta configurando il server da zero.

Prestazioni Migliorate:

Molte nuove ottimizzazioni sono state applicate al codice di Opennap NG per velocizzarlo, cioe' ridurre l'assorbimento di CPU e quindi il ritardo (lag). Tali misure includono la rimozione di parti di codice duplicate, l'uso di strutture dati statiche piuttosto che dinamiche, uso aggressivo di funzioni inline, riscrittura di parti del codice per ottimizzarne il flusso, alcune specifiche magiche ottimizzazioni del compilatore C per GNU (GCC), e persino pezzetti di codice in assembler scritti a mano. I vostri test personali sulle prestazioni possono variare da una macchina all'altra, ma in genere dalla versione 0.47 l'aumento ottenuto e' fra il 30% e il 50%. In altri termini, circa la velocita', una CPU a 500 Mhz, se configurata a regola, dovrebbe essere capace di supportare circa 1500 utenti, con aggiornamento delle liste dei files, ricerche e richieste di files, entrata e uscita di utenti, con un'utilizzazione di CPU che raramente tocca il 100%. Naturalmente, fattori come una lista dei bannati con oltre 10.000 nomi, o espressioni molto complesse nel file opennap-block.txt possono far salire il consumo di CPU. Se vengono usate liste di blocco non ridondanti e potate, un grafico del consumo di CPU mostra che un server Opennap NG spende fra il 60% e il 75% del proprio tempo in kernel, mentre fra il 25% ed il 40% in codice.

Riconnessione Automatica dal Server all'hub :

Molti networks soffrono di frequenti slink dei servers. Alcuni motivi possono essere errori di rete, connessioni telefoniche scadute, server rilanciati (rebooted) o altro. Se in giro non c'e' nessun Elite o un Admin, oppure non se ne curano, i server slinkati non vengono rilinkati, spesso a lungo. Opennap NG 0.60 e' ora capace almeno di provare a rilinkare. Se lo slink di un server viene rilevato, il primo tentativo di relink verra' ritardato di auto_relink_idelay secondi. Se il primo tentativo non ha funzionato, tentativi successivi verranno fatti periodicamente ogni auto_relink_pdelay secondi. Almeno auto_relink_count tentativi di relink verranno fatti. Se di questi tutti falliscono il server si arrende. Sequenze di tentativi di relink possono essere cancellate in qualsiasi momento, istituendo manualmente un comando di server delink verso il server gia' slinkato. Solo i server casualmente sconnessi verranno rilinkati. I server sconnessi su comando esplicito da un Elite o un Admin non vengono mai rilinkati automaticamente.

Protezione da Flood, auto espulsione:

Le variabili flood_commands e flood_time definiscono la soglia dell'attivita' del client riguardo il flood. Se flood_eject e flood_ban_ttl sono entrambe diverse da zero, allora i "flooddatori" saranno espulsi automaticamente e bannati dal server. Se un utente condivide tantissimi files, ma veramente solo pochi vengono accettati dal server mentre la vasta maggioranza viene bloccata, allora l'Elite puo' sbarazzarsi di tali utenti con max_block_pct. Se la percentuale dei file bloccati eccede questo numero, indicando che la maggior parte dello share dell'uetnte non e' ben accetto dal server, allora questa persona viene automaticamente bannata per max_block_pct_ban_ttl secondi. Consideriamo per esempio un utente che condivide 10.000 files, di cui 9.500 non sono ben accetti sul server. In tale caso e' un sollievo per il server non dover processare l'ingresso dell'utente ed il suo elenco dei files numerose volte.

Migliorata notificazione di sanguisughe (leech), liberi-razziatori (freerider), interdizioni (ban) e file bloccati:

Sono state aggiunte nuove e utili notifiche per Mod+ e utenti. Alcune delle vecchie sono state eliminate. I Mod+ non vengono piu' notificati ogni volta che un utente bannato tenta di entrare. Adesso una notifica di ban viene emessa solo per gli utenti che sono stati bannati o killati. Questo riduce l'inondazione di notifiche notevolmente. Informazioni su utenti bannati che tentano di rientrare possono essere rese disponibili nei file di log. Sia i Mod+ che gli utenti possono essere notificati su file bloccati o criminali che stanno tentendo di condividere, secondo le variabili notify_block_sources e notify_block_targets. notify_exceed_frequency limita il traffico in uscita agli utenti che condividono troppo. Le nuove variabili leech_ratio, leech_grace e leech_ban_ttl forniscono il rilevamento delle sanguisughe (leech), resoconto ed espulsione opzionale. Se la variabile notify_no_uploads viene usata, i Mod+ possono essere notificati degli user che condividono molto ma non hanno nessun upload per qualche tempo, probabilmente o perche' sono liberi-razziatori, o intenzionalmente condividono schifezze, o sono male configurati. max_queue_notify consente ai Mod+ di sapere circa quegli utenti su cui si accodano grandi quantita' di richieste, il che puo' significare che loro stanno bloccando, e quindi sono liberi-razziatori.

Analisi (scan) attiva delle porte:

Gli utenti che non forniscono una porta aperta per far connettere gli altri hanno bisogno di configurare il loro programma client in modo firewall (porta 0). Comunque un numero di utenti omette di fare cio'. I loro programmi client annunciano di avere una porta aperta mentre in realta' non e' vero. Questo rende tali utenti dei liberi-razziatori, in quanto nessuno puo' connettersi a loro e quindi scaricare. Se la variabile portscan_notify e' diversa da zero, Opennap NG tenta di connettersi ai client che annunciano porte aperte, per verificare che esse siano realmente aperte. Se poi aperte non sono, c'e' l'aperta notificazione, come specificato da questa questa variabile. Se portscan_ban_ttl e' diverso da zero, gli utenti con porte dichiarate aperte ma irrangiungibili verranno automaticamente espulsi e bannati.

Protezione da MXMonitor e altri programmi a scansione automatica:

Alcuni programmi del lato client come MXMonitor o Xnap consentono agli utenti di negare selettivamente un upload a chi non condivide abbastanza. Questa caratteristica e' deprecata da molti proprietari di server (e da utenti richiedenti i file) in quanto viene spesso abusata per bloccare ogni upload, ed e' anche uno spreco significativo delle risorse del server (banda e CPU). In altre parole essi sprecano le risorse di un server di condivisione files per evitare di condividere files! Quei programmi fanno un uso massiccio del tag whois. Con max_whois_count, max_whois_time, e max_whois_ban_ttl l'Elite puo' regolare con precisione il server per scoprire ed espellere utenti con tali caratteristiche. Da notare che oggi ormai quasi piu' nessuno di loro usa "MXM" come parte del nick. Quindi tentare di sbarazzarsi di loro tramite invalid_nicks e' un'idea che non va.

Registrazione dei flood e protezione dai Login flood e dai punti morti sui ghost:

Le variabili max_login_time, max_login_count and max_login_ban_ttl trattano con gli utenti che continuano a entrare e uscire dai server. Molti di loro fanno cosi' perche' hanno problemi di rete. Altri lo fanno con l'intento di inondare il server di lavoro. In alcuni casi ghost kill deadlock puo' essere la causa. Questa caratteristica limita la riconnessione per periodi di tempo e allontana temporaneamente dal canale quegli utenti che continuano a collegarsi di seguito.

Migliorata selezione dei nick:

Le variabili min_nick_length e max_nick_length controllano le minime e massime misure della lunghezza dei nick. Se la variabile alnum_nicks e' vera, sono permmessi solo nick composti di lettere, cifre, "_" e "-". Nick contenenti altri caratteri saranno rifiutati come invalidi. Il file opennap-block.txt contiene una nuova classe: invalid nicks, che permette un qualsiasi numero arbitrario di REs (Regular Expressions) per escludere pattern di nick. Questa e' un'estensione alla variabile invalid_nicks che comunque permette di specificare pattern semplici sui nickinvalidi.

Rallentamento dei Login degli utenti:

Nuove variabili max_new_users_count e max_new_users_time permettono di limitare il numero dei login su uno specifico intervallo di tempo. Per esempio un valore di conteggio di 50 e un valore di tempo di 60 sec significa: non piu' di 50 login al minuto vengono accettati (questo ricorda la vecchia variabile max_new_users_per_minute delle precedenti versioni, che non ha mai funzionato ed e' stata rimossa. La nuova caratteristica e' molto piu' flessibile).
La nuova variabile max_uploading specifica il numero massimo di utenti che possono caricare le loro liste di files contemporaneamente. Se questo numero viene raggiunto, ulteriori login sono temporaneamente rifiutati finche' il numero delle liste di file contemporanee scende sotto quella soglia.
Se max_mem e' usato, esso specifica la soglia del consumo di memoria. Se il server consuma piu RAM di quella prevista, ulteriori ingressi (login) saranno rifiutati fin quando il consumo di memoria scende di nuovo sotto quella soglia.

Migliore gestione dei cloni:

Mentre la variabile max_clones permette di limitare il numero di cloni (multiple connessioni concorrenti dallo stesso IP) gia' nelle precedenti versioni, sono ora disponibili metodi migliori per controllare l'esonero da questo. clones_allow_level esonera i membri dello staff dalla detenzione dei cloni. ACLs (Liste di Controllo degli Accessi) permette limiti distinti sui cloni, basati su indirizzi IP e subnets. Questa caratteristica era presente in versioni precendenti ma malfunzionante.
Per esempio, un grosso ISP Italiano e' conosciuto per assegnare lo stesso IP a utenti multipli. Quindi se differenti utenti di quell' ISP si connettono simultaneamente allo stesso server, potrebbero apparire come cloni ed alcuni di essi potrebbero essere rifiutati (se max_clones e' propriamente regolata). Opennap NG 0.60 ha un file limite di ACL che contiene un certo numero di esenzioni per gli utenti in sottoreti di quel ISP Italiano.

Nuovo formato del file dei blocchi con classi multiple:

Il formato del file opennap-block.txt e' stato esteso. Contiene ancora una o piu' ER (Espressioni Regolari) per definire i nomi dei file bloccati. Comunque, ora accetta 5 classi di espressioni: blocked, criminal, must match, invalid searches and invalid nicks (Il vecchio formato conosceva solo una classe, che era o blocked o criminal, dipendendo da un'altra variabile che nel frattempo e' stata rimossa). Il nuovo formato puo' contenere un numero qualsisasi di combinazioni di REs e classi. Filename che coincidono con la classe blocked semplicemente non vengono condivisi. Se un utente cerca di condividere un file della classe criminal, viene espulso e bannato non appena il server ha finito di caricare la sua lista. Se una o piu' espressioni della classe must match sono definite, allora il nome di file che viene condiviso deve coincidere almeno con una di esse o sara' bloccato. Le classi invalid searches e invalid nicks si riferiscono a ricerche e nomi di nick invalidi. Aumenti significativi delle prestazioni sono possibili usando maschere piuttosto semplici nelle classi must match che non espressioni complesse in block.

Altre protezioni contro file non voluti:

Si possono limitare i nomi di file a consistere di caratteri tutti o quasi a 7 bit ASCII tramite la variabile ascii_filename_pct. Per esempio un valore di 90 (raccomandato) consente un carattere non-ASCII ogni nove caratteri ASCII, proibendo quasi completamente file con nomi criptici consentendo pero' ancora di permettere nomi di file con qualche carattere specifico di un linguaggio, come in Spagnolo, Francese, Tedesco, etc. Le variabili min_file_size e max_file_size permettono di impostare limiti di dimensioni ai file. Questo e' utile se non volete che vengamo condivisi i film, o immagini di CD, o enormi collezioni di piccole immagini ( o icone). Mentre il secondo caso e' noioso e comporta un enorme spreco di risorse del server, il primo e' di solito illegale in molti paesi.

Protezione dello Staff:

La Variabile no_share_level ha l'opzione di esentare i livelli piu alti (Elite and Admins) dal condividere i file. Essi possono apparire che non condividono mentre i loro programmi-client sono stati configurati per condividere. La varaibile cloak_user_level permette ai membri dello staff di nascondere il loro alto livello all'utente ordinario.

Nuova facilita' di registrazione (log):

Il sistema di log e' stato riscritto da zero ed esteso. Si puo' selezionare dove registrare (file, canale o stdout) tramite log_targets. Cosa registrare puo' essere specificato dalla variabile a "bitmask" log_level. E quanto registrare (quali info includere nei log) e' specificato da log_fmt e log_timefmt. Se il log viene mandato su file, le due variabili log_split_hours e log_split_mb forniscono una divisione automatica dei file di log, indipendente una dall'altra, basata su entrambi, sia l'intervallo di tempo, sia la dimesione del file. Da notare che sebbene il formato di output del file di log sia stato esteso, esso non contiene alcun dato privato dell'utente. Esso fornisce solo informazioni piu' dettagliate sulle prestazioni ed azioni del server.

Nuovo formato delle statistiche, incluso aggiornamento in tempo reale:

Il formato delle statistiche di Opennap NG 0.60 e' stato completamente ridisegnato, riformattato ed esteso. Ora fornisce molte piu' statistiche riguardo operazioni del server, incluso utenti e conteggio dei files, memoria e uso della CPU, banda passante su internet e protocollo, efficienza delle ricerche e chat e molto altro. Le statistiche possono essere emesse periodicamente sia sul log che su uno speciale file live. Quest'ultimo in futuro potrebbe essere usato da qualche strumento statistico grafico. La verbosita' delle statistiche puo' essere controllata da stats_fmt. L'intervallo di emissione (tipicamente uno o due minuti) puo' essere regolato da stat_click. L'intervallo sul file live (tipicamente 5 secondi) puo' essere regolato da live_stats.

Messaggio del Giorno (MOTD) migliorato:

Attraverso motd_fmt e MOTD e' diventato piu' dinamico, utile e altamente personalizzabile. Le nuove informazioni disponibili per gli utenti includono il loro inidirizzo IP, da quanto sta su il server (uptime), statistiche di prestazioni, requisiti dei file e limiti delle operazioni. La visualizzazione di queste informazioni puo' essere individualmente abilitata o disabilitata. Naturalmente un MOTD personalizzato puo' essere aggiunto.





Requisiti di Sistema


Generale

Un computer con un ragionevole ammontare di RAM (vedi sotto) e una connessione Internet. Disponibilita' del PC, inclusa la connessione Internet, di 24/giorno e' preferita ma non richiesta. Un abbonamento flat a Internet con volume illimitato di traffico e' raccomandato.

Sistema Operativo

Eseguibili in binario e precompilati sono disponibili per Linux x86 e Windows. Versioni per molti altri Unix possono essere create compilando il sorgente. Abbiamo scoperto che Opennap NG 0.49 puo' essere compilato e gira bene su FreeBSD e Solaris, comunque attualmente non possiamo ne' confermare ne' direttamente supportare. Il minimo raccomandato kernel di Linux deve essere 2.2. Il 2.4 e' richiesto se il server ha piu' di 1,000 utenti. Windows NT, 2K o XP (qualsiasi edizione) dovrebbero essere usate per una stabile operativita' del server. Windows 95, 98 and ME sono conosciute per non supportare molto bene o del tutto tale server.

Velocita' della CPU

La Velocita' della CPU e' importante quando si servono ricerche e richieste di trasferimento per grandi quantita' di utenti. Per un server Opennap NG con una condivisione standard dei file, la regola ottimale per le CPU compatibili x86 e' che ogni 500 Mhz consentono 1.500 utenti. Quindi se avete una CPU a 2 Ghz in teoria potete servire piu' di 5.000 utenti senza notevoli ritardi sulla macchina. Per i server solo per chiacchierare (chat), con la condivisione disabilitata, i requisiti sono di circa 50 Mhz per 1.500 utenti. Da notare che Opennap NG 0.60 contiene alcuni significativi miglioramenti delle prestazioni.

Capacita' di RAM

Offrire servizio di condivisione files con Opennap NG consuma un bel po' di RAM. La regola e' che 1.000 files prendono 300-350 KB di RAM. Quindi se avete un 1 GB di RAM da offrire, dovreste essere in grado di maneggiare almeno 3.000.000 di files. Per server solo per chiacchierare (chat) le richieste di RAM sono irrisorie. Questi numeri si applicano a JMM, che e' una nuova caratteristica di Opennap NG 0.60 ed abilitata sia su Unix che Windows per scelta automatica. Con JMM disabilitata si consuma piu' RAM, specialmente Windows, circa 450-500 KB ogni 1.000 files.

Ampiezza di banda su Internet

La richiesta di ampiezza di banda su Internet e' altamente variabile, dipendendo da quanti utenti sono connessi, quanti file sono condivisi, quante ricerche vengono fatte e quanti risultati per ricerca sono restituiti, etc. In genere un server con regolazioni ragionevoli riceve circa 2 o 3 volte la quantita' di dati mandati. Durante regolari operazioni la domanda dovrebbe essere circa 15 KB/sec in ingresso e 7 KB/sec in uscita su server singolo. Il traffico in uscita puo' essere limitato da alcune regolazioni, come max_results (I), max_browse_result (I), notify_exceed_frequency (I) e altri. Se connessi a server di capacita' simile, la richiesta di traffico puo' facilmente raddoppiare o triplicare, dovuta allo scambio di richieste con gli altri server. Durante la fase iniziale di riempimento, poco dopo che il server e' partito, quasi tutta la banda disponibile viene consumata dal caricamento delle liste degli utenti che si connettono. Non avere sufficiente banda puo' causare ritardi per almeno mezzora dopo la partenza del server, ma non limita veramente la capacita'. Opennap NG offre mezzi multipli per il rallentaemto del caricamento iniziale, per ridurre o prevenire il ritardo.

Spazio sull'Harddisk

Opennap NG opera completamente in RAM. L' harddisk e' usato solo per caricare il programma del server e occasionalmente per scaricare le liste degli utenti e dei bannati. Dalla 0.60 Opennap NG e' capace di registrare in files su harddisk l'uscita dei log. Con un livello di log automatico, 500 utenti e server non linkato, ci sono circa 15 MB di log/giorno. Se aumenta il livello di log, aumenta la richiesta di risorse; se diminuisce, scende. Gli utenti Windows che vogliono usare lo strumento grafico di configurazione devono considerare spazio disco anche per la libreria GTK+ per circa 20 MB.

Requisiti di Software Addizionale

Operativita' del Server:
Nessun software e' richiesto oltre le librerie standard. Libz e' la meno comune di tutte, specialmente su alcune installazioni Windows. X Windows non e' richiesto per far girare Opennap NG su Unix. Per far girare il server non e' richiesto manco lo strumento grafico di configurazione.

Compilazione:
Opennap NG 0.60 richiede GCC >= 3.x (GNU Compiler Collection), gli attrezzi per il programmatore gratis ed efficienti, disponibili a http://www.gnu.org/ (per Unix) e http://www.mingw.org/ (per Windows). Altri compilatori, proprietari o commerciali, non sono attualmente supportati. Importante: Non usate GCC 2.95.x o precedente. A causa di un difetto nelle versioni piu' vecchie, possono risultare eseguibili non affidabili, o non compilare del tutto. Usate GCC 3.x per un eseguibile piu' affidabile. Nessun compilatore e' richiesto se scaricate qualsiasi versione gia' compilata.

Strumento grafico di configurazione:
Lo strumento grafico di configurazione richiede Gimp Toolkit (GTK+) 2.x. Questo e' disponibile gratis a http://www.gtk.org/download (sorgente, principalmente per utenti Linux/Unix) e a http://gimp-win.sourceforge.net/old.html (eseguibili per utenti Windows). Solo il GTK+ Runtime e' richiesto, non la versione di sviluppo.

Server X-windows:
Come applicazione grafica su Unix / Linux systems, lo strumento di configurazione richiede ovviamente un server X Windows.







Ottenere Opennap NG


La homepage e il principale posto dove ottenere sia il codice che le versioni precompilate di Opennap NG e': http://opennap-ng.sourceforge.net.

Attraverso CVS si possono ottenere anche varie versioni vecchie (a volte anche le nuove beta). Per ottenere l'ultimo CVS provare cosi':
cvs -d:pserver:anonymous@cvs.opennap-ng.sourceforge.net:/cvsroot/opennap-ng login
alla password premere Return

cvs -z3 -d:pserver:anonymous@cvs.opennap-ng.sourceforge.net:/cvsroot/opennap-ng co [nome-del-modulo]
nome-del-modulo e' opennap-ng-0.xx

per il solo aggiornamento battere nella cartella di Opennap NG
cvs -z3 update -Pd





Partenza Veloce


Consiglio: prima di iniziare con un server personale, si dovrebbe essere familiari con l'uso dei software clienti. Dovreste aver gia' avuto esperienze di connessione sia a server che a network, per avere un minimo di comprensione circa le caratteristiche fornite dal protocollo Napster. Vedere http://www.gotnap.com per una lista dei server gratis esistenti che usano il protocollo Napster.

Dopo l'installazione dell'eseguibile, prima del primo lancio del server:


1. Fate il setup di opennap-config.txt!

E' obbligatiorio che regoliate almeno alcune variabili nel file di configurazione, o usando lo strumento grafico di configurazione (soluzione preferita) o attraverso qualsiasi editor di testo! Dovrebbero essere regolate specialmente le variabili dai gruppi di supporto Napigator (GotNap) e network, esplicitamente server_name, server_ports, report_name, report_port, stat_server_user e stat_server_pass. Potete regolare le altre variabili piu' tardi, quando ne avrete imparato il significato.


2. Fate il setup del vostro acconto Elite!

All'inizio la base-utenti contiene appunto solo l'acconto Elite con la password elite. Il nick e la password devono essere cambiati prima del primo lancio del server. Il server rifiutera' di partire se quei due parametri non sono stati cambiati. Da notare che dopo il primo lancio del server, la password viene crittografata e salvata in maniera crittografata. Il server non conservera' mai su disco password in chiaro! Dopo il primo lancio del server non potete ri-editare il campo delle password nel file opennap-users.txt! Per cambiare una password dopo il primo lancio, connettetevi col vostro programma cliente (per esempio Lopster, Xnap or WinMX) usando il vostro acconto Elite. Quindi usate i comandi specifici di quel client per cambiare la password. Per esempio in Lopster il comando e' /pass, in TekNap e' /setpassword. Controllate la documentazione del vostro client per vedere come i cambi sulle password vengono attuati.


3. Fate il setup del vostro network, firewall, etc.

Assicuratevi che sul vostro computer la porta preconfigurata server port (8888) sia aperta (non bloccata dal firewall). Se siete connessi a Internet attraverso un router o un gateway assicuratevi che sia attiavato il "port-forwarding". La porta che configurerete deve essere raggiungibile dall'esterno. Altrimenti nessun utente dall'esterno sara' capace di connettersi al vostro server.


4. Partenza !

Siete pronti a lanciare il server. Da notare che su Linux / unix la directory proposta e' /usr/local/share/opennap-ng/ (altre possono essere scelte tramite lo switch -c dalla linea di comando). Su Windows e' la directory corrente. Comunque, le voci sul menu' Start e le icone sul desktop sono configurate per usare la directory in cui Opennap NG e' stato installato prima del lancio, per cui non c'e' niente di cui preoccuparsi.






Parametri per l'Invocazione dalla linea di comando)


Ci sono pochi parametri dalla linea di comando che Opennap NG comprende, per modificare le sue operazioni. Essi sono:

Parametro Descrizione
-c <directory> Specifica la directory dei dati per Opennap NG, dove sono situati file come opennap-config.txt e opennap-user.txt. Su piattaforme Unix la directory proposta e' /usr/local/share/opennap-ng/. Sulle piattaforme Windows e' la directory corrente. Notare che su Windows quella proposta e' C:\Program Files\Opennap NG 0.60\.
-b Lancia Opennap NG come processo in background process (daemon). Qualsiasi output to stdout viene disabilitato in questa modalita'.
-D Non ascolta sulla porta delle statistiche
-h Stampa informazioni utili, offrendo una breve versione di questa descrizione.
-i <ip_addr> Ascolta solo sull'indirizzo IP fornito, invece che su tutte le interfacce disponibili su una macchina. Questao ha un senso solo su macchine con interfacce di rete multiple.
-p <portnum> Sovrascrive il numero di porta specificato nel file opennap-config.txt e ascolta sulla porta specificata.
-r Disabilita i comandi di configurazione remota. Che e' esattamente come mettere su OFF il parametro remote_config nel file opennap-config.txt.
-s Solo utenti privilegiati possono creare canali. Questo e' esattamente come metere su ON il parametro strict_channels nel file opennap-config.txt.
-V Mostra la versione su stdout and esce.






Compilare il server


Queste instruziooni descrivono come compilare Opennap NG sotto Unix, che attualmente e' la sola maniera supportata. Opennap NG usa GNU Autotools (vedi: autoconf, automake ), che sono comuni nel mondo Unix ma non nel mondo Windows, in quanto la maggiorparte consiste solo di scripts senza nessun tipo di GUI.

L'ambiente suggerito per compilare nativamente sotto WIndows e' MinGW (Minimalist GNU for Windows, http://www.mingw.org), un compilatore e insieme di utilita' open source basati su strumenti del mondo Unix. Siccome usare MinGW richiede capacita' nell'uso di Unix e dei suoi strumenti, che l'utente medio di Windows (e anche molti sviluppatori) non hanno, gli utenti Windows sono incoraggiati a usare il pacchetto precompilato di Opennap NG. Attualmente non sono disponibili istruzioni per la compilazione su Windows.

Per compilare Opennap NG sono richiesti i seguenti passi:

1. lanciare lo script configure, avendo l'opzione di specificare qualche parametro di configurazione. Lo script esaminera' il vostro sistema, le caratteristiche dell' OS e gli header C che sono disponibili, e creera' un'appropriata configurazione di compilazione. In caso di successo, configure termina con una lista delle opzioni abilitate e disabilitate, per la compilazione di Opennap NG. Altrimenti il vostro sistema non e' compatibile con Opennap NG, o c'e' un errore negli script. Per favore contattare gli sviluppatori per questo tipo di difficolta'.

2. battere "make" per lanciare la compilazione dei sorgenti per creare l'eseguibile binario per il vostro sistema. Se il processo make abortisce, dovuto a un errore di qualsisasi tipo (p.e. ".h"-file not found, errore di parsing del compialtore, etc.) Per favore contattare gli sviluppatori.

3. battere "make install" per installare gli eseguibili e i file di dati nella propria directory (proposta su Unix: /usr/local/share/opennap-ng/). Siate consapevoli: che il processo d'installazione sovrascrive ogni file pre-esistente nella directory scelta, quindi create delle copie di backup prima di installare se volete conservare le versioni vecchie!

In alternativa a lanciare "make install" potete copiare gli eseguibili binari dalla directory src/ a qualsiasi directory nel vostro percorso ("path"), tipicamente /usr/sbin/ o /usr/local/sbin/), copiate i file di dati necessari da doc/examples/ alla directory desiderata (p.e. ~/.opennap-ng/), e lanciate il server con un comando tipo: "opennap -c ~./opennap-ng".

Dopo l'installazione il server e' pronto per essere invocato con "opennap". Vedere anche: parametri della linea di comando.

Importante: in ogni caso, e' richiesta una versione GCC >= 3.x! Con la v.2.95.x o piu' vecchie, o il compilatore abortisce, o produce degli eseguibili instabili!



Fissare errori in installazione


Ci possono essere varie ragioni perche' i processi configure o make possano fallire. Alcune sono elencate qui:







Opzioni di Configure


Dopo che avete spacchettato i sorgenti, o ottenuto la versione CVS, lanciate lo script fornito configure. Le seguenti opzioni sono degne di nota:

-- disable-jmm
Questo disabilita l'uso della Gestione di Memoria di Jondo, un nuovo uso della memoria per Opennap NG. Sebbene una caratteristica nuova e basilarmente ancora sperimentale, e' stata gia' provata stabile ed efficiente. Percio' in Opennap NG 0.60 e' abilitata dall'inizio. Disabilitare la JMM ritorna al convenzionale uso basato su malloc() / free(), che fa qualche spreco, e al contrario di JMM, non ritorna la memoria liberata al sistema.

--
  
disable-meminfo
Disabilita l'uso personalizzato della gestione di memoria. Sia la Variabile max_mem che le statistiche sulla memoria a runtime, dipendono che meminfo sia abilitata. Comunque, il sovraccarico di memoria e' piccolo, circa il 15%. Con meminfo disabilitato potete ridurre il consumo di memoria, ma non saprete esattamente quanta memoria Opennap NG stia consumando, e quanta ancora stia per per assorbirne. Se JMM e' abilitato non c'e' nessun sovraccarico extra di memoria e meminfo non deve essere disabilitato quando si usa JMM.

-- disable-protnet
Disabilita la variabile Protnet.

-- disable-warnings
Mette a off tutti gli avvisi del compilatore C durante la compilazione. Sebbene preconfigurato per usare una sensibilita' agli avvisi molto alta, comunque non ce ne dovrebbero essere molti lasciati.

-- enable-chroot
Compila il supporto per operare Opennap NG in una gabbia chroot(). Questo impedisce al server di leggere/scrivere file di dati fuori dalla propria directory. Utile per gente paranoide. Opennap NG andrebbe lanciato con setuid root (a tal punto tralascia i privilegi) per ottenere questo.

-- enable-debug
Mette su ON le informazioni di debug per catturare sprechi di memoria e buffer overrun. Questo non e' consigliabile per versioni da produzione a causa dell'uso di memoria extra e significativi impatti sulle prestazioni, ma buono per piccoli server di prova. Che poi piu si testa piu bugs vengono fuori. Comunque questa modalita' potrebbe non funzionare piu' in successive versioni, dovuta alla mancanza di manutenzione.

-- enable-email
Abilita il supporto per memorizzare l'indirizzo email degli utenti, ottenuto dall'uso del comando register nickname Di solito questa informazione non viene mantenuta e il server ritorna sempre unknown se questa informazione viene richiesta. Da notare che un utente sano di mente oggigiorno non entra il suo vero indirizzo email quindi questa caratteristica e' di scarso uso. Nessuna delle versioni precompilate per Windows ha questa opzione abilitata.

-- enable-gprof
Aggiunge l'opzione -pg a gcc per generare informazioni di profile da passare poi a gprof. Il profilo da un output dettagliato di come il server stia spendendo il suo tempo, cosi' che i colli di bottiglia possano essere scoperti e le prestazioni incrementate. Questa opzione e' utile solo per i programmatori.

-- enable-resume
Abilita il riesumare dei download dal lato server. Questa opzione fa usare piu' memoria al server in quanto deve memorizzare i valori hash MD5 per tutti i file condivisi oltre alle altre informazioni. Da notare che molti programmi client non supportano questa caratteristica, cosi' essa e' di scarso uso. Nessuna delle versioni precompilate per Windows ha questa opzione abilitata.

-- enable-router
Compila una versione routing-only del server OpenNap NG. Questo disabilita i comandi per lo share per i clienti locali, permette il log-in solo a utenti di livello Admin o superiore, e semplicemente rimanda tutte gli altri messaggi ai server linkati. Questo e' ideale per un uso da hub, per connettere un grappolo di altri server insieme.

-- with-fd-setsize=SIZE
Sotto alcuni sistemi BSD, questo puo' regolare FD_SETSIZE, il massimo numero di connessioni il server puo' sopportare attraverso la chiamata di sistema select(). Su alcuni sistemi Unix, incluso Linux, questa e' una costante, codificata nelle librerie di sistema e/o nel kernel, e attualmente non puo' essere cambiata. Su macchine Windows non c'e' nessuna restrizione per connessioni supportate via select().
Molti moderni Unices, inclusi Linux e BSD, mostrano una piu' efficiente chiamata di sistema poll(). Questa syscall non ha nessun limite sulle connessioni supportate. Se poll() e' disponibile e trovata sul vostro OS, Opennap NG la utilizza automaticamente invece di select().
Da notare che i kernel Linux precedenti al 2.4.0 avevano un limite al numero di file o connessioni aperte che un processo supportasse. Questo limite era 1024. Ne' con poll() ne' con select() e' possibile supportare piu' di un migliaio di connessioni su quei kernel, senza cambiare quella costante e ricompilare il kernel.


Una volta che avete lanciato lo script configure, semplicemente battete make. A questo punto potreste voler lanciare make install per installare Opennap NG nella directory predefinita, ma questo non e' richiesto per lanciare il server.






Files


OpenNap NG usa diversi file di dati. Tipicamente essi sono memorizzati in /usr/local/share/opennap-ng/ per le piattaforme Unix, e in c:\program files\opennap-ng-0.60\ per quelle Win32.

Important: riguardo i nomi dei file cambiati da versioni di Opennap precedenti alla 0.49!

Tutti i file sono in pieno formato ASCII e possono essere editati o visti con qualsiasi editor di testo. Comunque i cambiamenti sono applicati solo se il server viene rilanciato o rehashed. Alcune dei file vengono periodicamente riscritti dal server mentre sta girando, cosi' il modo migliore e' cambiarli e salvarli mentre il server e' spento.

opennap-bans.txt lista degli utenti bannati
opennap-block.txt REGEX (espressioni regolari) per definire i file permessi e non.
opennap-config.txt principale file di configurazione, contenente le opzioni del server
opennap-channels.txt    database dei canali di chat predefiniti
opennap-filter.txt lista dei termini da saltare quando si indicizzano o cercano file
opennap-log.txt file opzionale di log, conservato da Opennap NG
opennap-motd.txt messaggio del giorno, testo mostrato agli utenti, quando entrano
opennap-servers.txt database dei server a cui linkare
opennap-state.txt pagina di stato del server frequentemente aggiornata
opennap-users.txt database degli utenti registrati





opennap-bans.txt


Questo file contiene una lista persistente degli utenti bannati. Specifica o nick o indirizzi IP o combinazioni di entrambi a cui non e' concesso di entrare. Il server legge questo file alla partenza. Esso viene scaricato frequentemente durante le normali operazioni e quando il server viene spento attraverso il comando killserver. Se avete bisogno di editare questo file dovete prima spegnere il server, o i vostri cambi andranno perduti. Ogni linea in questo file dovrebbe essere nella forma:

	<target> <nick> <when> "<reason>" <timeout>

Nota: le registrazioni dei ban sono condivise fra tutti i server linkati, ma le regole dei ban non lo sono. Mentre era opzionale nelle precedenti versioni di Opennap, <timeout> e' diventato obbligatiorio nel frattempo. Ban illimitati non hanno piu' senso. Non fanno altro che sprecare risorse e non riescono a tenere lontani dal server gli utenti bannati se essi fanno uso di trucchi avanzati. Se certa gente continua a comportarsi male, ci sono abbastanza mezzi automatici per bannarli ancora e ancora. Se smettono di comportarsi male, c'e' una possibilita' di rientrare dopo un po' di tempo.





opennap-block.txt


Nota: questa sezione descrive la versione 2 del nuovo formato del file opennap-block.txt. Opennap NG 0.60 puo' ancora leggere il formato della vecchia versione, precedente alla 0.60, che e' visto giusto come eredita' e non verra' descritto qui.

Il file deve cominciare con una linea contenente solo la stringa ":version 2". Tutte le linee seguenti sono o vuote o commenti (comincianti con "#") o espressioni regolari di qualsisasi classe. In questo file tutte le espressioni regolari non sono sensibili alle maiuscole. Ci puo' essere un numero illimitato di espressioni regolari se di classe valida. Ci sono cinque (5) distinte classi di espressioni supportate nel file della version 2: il primo carattere della linea specifica la classe a cui la successiva espressione regolare appartiene.

Classe Influisce
su:
Carat-
tere
Descrizione
bloccati
(blocked)
files - Questa e' la classe tradizionale; l'unica che fosse effettivamente supportata dalla vecchia versione di Opennap NG. Tutti i nomi di file che coincidono con qualsiasi espressione di questa classe sono silenziosamente ignorati dal server. Essi non vengono memorizzati nelle liste dei file interne al server, e non vengono ritornati nelle ricerche ne' mostrati nelle richieste basate sul server. Tentare di condividere un file bloccato non ha conseguenze per l'utente che sta cercando di condividerlo, sebbene tale utente possa incorrere nei limiti imposti da max_block_pct e eject_limit_files.

L'uso comune delle espressioni di blocco e' di specificare tipi di file (estensioni) che l'Elite non vuole elencati sul server, p.es.: \.(jpg|gif|ico) (per alcuni formati di immagini che non si accordano con un server Opennap NG). Se volete che il server stia pulito (di solito) da porno, espressioni come: p[o0}rn|f[ui]ck|xxx vanno bene. Notare che i file bloccati continuano ad apparire nei browse diretti, in quanto tali operazioni aggirano il server e le sue liste interne.
criminali
(criminal)
files ! Tutti i nomi di file che coincidono con espressioni di questa classe sono considerati criminali (proprio brutti). Essi non solo vengono bloccati (ignorati dal server), ma l'utente che tenta di condividere uno di questi file, viene automaticamente bannato per criminal_ban_ttl secondi.

Bisogna essere cauti su cosa si mette in queta classe e usare solo termini precisi e non ambigui. Specificando parole chiave troppo generiche, potreste bannare un mucchio di utenti che magari tentano di condividere materiale non pericoloso.

P.es. specificare termini come ass o sex in questa classe e' una cattiva idea in quanto ci sono certamente file non pericolosi che contengono termini come "bass" o "sexy" nei loro nomi. Mettere generici termini porno nelle classi non conviene in quanto potreste perdere la maggioranza degli utenti.
deve coincidere
(must match)
files + Se opennap-block.txt contiene un'espressione di questa classe, tutti i nomi dei file condivisi dagli utenti devono coincidere con almeno uno dei termini in questa classe per essere accettati. File i cui nomi non si accoppiano con alcuno dei termini nell'espressione della classe must match vengono bloccati (ignorati).
Usate le espressioni di questa classe per forzare il vostro server ad accettare solo file di tipo ragionevole, p.es. \.(mp3|ogg|wmv|avi|mpg|mpeg|mov), per accettare solo suoni e video.

E' fortemente raccomandato usare un'espressione must match sul vostro server, in quanto oggigiorno molti utenti cercano di truccare voi ed il vostro server condividendo larghe quantita' di ogni sorta di oscuri o artificiali, ma certamente inutili, tipi di file.
ricerche non valide
(invalid searches)
 
ricerche ? Se un utante cerca un termine che coincide con uno compreso nell'espressione invalid searches e la variabile invalid_search_ban_ttl e' non-zero, allora quell'utente viene immediatamente bannato ed espulso.

Assicuratevi di specificare chiari e non ambigui termini che si riferiscano solo a perversita' ed altro materiale non voluto. Altrimenti un mucchio di utenti innocenti potrebbero essere rigettati solo per aver cercato un termine che magari manco sanno che e' deprecato sul vostro server.

Una notifica mod+ viene mandata su ogni ban automatico dovuto a ricerche su termini proibiti.
nick non validi
(invalid nicks)
nomi @ Se un utente tenta il login usando un nick che coincide con una delle espressioni della classe invalid nicks, il login viene rifiutato.
L'utente non viene esplicitamente bannato (tanto comunque non puo' entrare con quel nick).
Comunque quell'utente non potra' entrare per ibl_ttl secondi.

A seconda del valore di notify_block_sources e notify_block_targets, i Mods+, l'utente implicato e il log del server possono ricevere notifica circa i file bloccati che si cerca di condividere.

E' fortemente raccomandato avere una buona conoscenza ed esperienza con le Espressioni Regolari prima di tentare di scrivere nuovi insiemi di espressioni da zero o modificare significativamente quelle pre-esistenti. Le ER possono essere molto ingannevoli ed avere forti implicazioni sia su ridondanza che ottimizazione. Mentre ER compatte ed ottimizzate possono aiutare le prestazioni, quelle gonfiate e ridondanti possono rallentare considerevolmente il server. Specialmente evitate di usare una parola qualsiasi in piu' di una delle 3 classi.

Per mantenere delle prestazioni ottimali, la somma dei caratteri di tutte le ER non dovrebbe eccedere i 1.000. Se le vostre ER eccedono i 2.000 caratteri le prestazioni del vostro server soffriranno significativamente, e le vostre ER hanno bisogno di una regolata.

Nota: dalla Opennap 0.60 dovete attivare almeno una delle espressioni delle classi blocked, criminal o must match. Il server rifiutera' di partire se nessuna regola di blocco e' stata attivata! Far girare un server con nessuna regola di blocco e' un invito per gli abusatori a condividere non solo mucchi di roba inutile ma anche materiale pervertito o criminale. Per rispetto a tutti gli utenti sani di Opennap, questa irrespondabile modo di operare non e' piu' supportato.

Guardate il file di esempio/fornito opennap-block.txt (nella dir doc/examples/ della distribuzione dei sorgenti) per un certo numero di esempi di espressioni utili.





opennap-config.txt


Il principale file di configurazione di Opennap. Consiste di numerose variabili di configurazione, una per linea. La forma e': variabile valore. Ognuna dei valori e' una stringa, un valore booleano, un intero, un bitmap o un elenco, a seconda della variabile. Linee vuote o comincianti con "#" sono trattate come commenti. I commenti devono cominciare su una linea nuova. Le variabili di configurazione sono scritte come segue: (B) = booleano, (I) = intero, (M) bitmap, (S) = variabile stringa. I valori interi vengono interpretati come decimali per opzione scelta. Se i numeri sono preceduti da "0x" allora vengono interpretati come valori esadecimali, che potrebbe essere piu' facile per alcune varabili bitmap come log_level. I booleani possono prendere i valori di "on " / "yes" / "1" o "off" / "no" / "0".

Vedi la sezione Configurazione per una descrizione dettagliata di variabili, gruppi, valori per difetto, disponibilita' e cambi.





opennap-channels.txt


Nota: questa sezione descrive il formato del file dei canali versione 2, che e' nuovo per Opennap NG 0.60.

Il file channels specifica tutti i canali predefiniti sul server. Ogni linea in questo file dev'essere della forma:

	<canale> <flags> <limite> <livello> "<argomento>"

Nota: di solito questo file viene editato una sola volta, prima di lanciare il server. Non dovete mai editarlo mentre il server gira, o i vostri cambi andranno persi. Il server scrive sempre il suo stato quando chiude, in quanto nuove informazioni su un canale potrebbero essere state fatte. Se lo volete editare a mano, dovreste prima spegnere il server. Vedere il file doc/examples/opennap-channels.txt come base per iniziare la vostra configurazione personale. Vedere anche strict_channels.






opennap-filter.txt


Questo file contiene la lista delle parole filtrate, che non sono ricercabili. Cio' viene fatto per potare parole di uso comune come "mp3" o "the", per salvare risorse del server, in quanto ci si aspetta che nessuna di queste parole sia utile nelle ricerche. Le parole filtrate non sono conservate nelle liste interne relative ai file quando un cliente condivide file che le contengono. Questo potenzialmente risparmia notevoli quantita' di RAM del server. File che contengono parole-chiave filtrate nei loro nomi vengono indicizzati. Solo che tali parole non possono essere usate per trovare quel particolare file.

In alcuni casi succede che il nome di un file non contenga alcuna parola valida, e percio' non puo' essere trovato tramite la ricerca. Programmi cliente che cercano un file tramite esclusivamente parole chiave filtrate, vengono notificati che la loro ricerca non contiene alcun termine valido e la richiesta viene ignorata. Comunque il file compare nella lista dell'utente browsato e puo' essere percio' scaricato. Vedere il file doc/examples/opennap-filter.txt come base per scrivere la vostra configurazione.

Ammenocche' la variabile persistent_filter sia abilitata, il server non cambiera' questo file. L'elenco delle parole-chiave filtrate puo' crescere nella memoria del server, man mano che gira, ma non sara' conservato in questo file. In questo modo, dopo ogni ripartenza del server, la lista sara' la stessa. Questo e' il comportamento delle prime versioni di Opennap NG. Se la variabile persistent_filter e' abilitata, il server periodicamente memorizzera' la lista ggiornata delle parole chiave filtrate. Ma siate consci che questa lista (e quindi il file associato) puo' solo crescere, ma mai ridursi!

Cio' puo' facilmente portare ad una situazione in cui molte centinaia di parole chiave vengono filtrate, persino alcune particolari come i nomi di certi artisti, il che previene quegli artisti dall'essere ricercati per nome. Se i filtri persistenti sono abilitati, i proprietari di server dovrebbero controllare di tanto in tanto i contenuti di questo file e rimuovere parole-chiave potenzialmente indispensabili. Alzare il valore di file_count_threshold per ridurre le probabilita' che una certa parola-chiave finisca in questa lista.





opennap-log.txt


Se la registrazione su file e' abilitata tramite la variabile log_targets, i messaggi di log sono scritti su questo file. I tipi di messaggi di log che questo file riceve possono essere specificati attraverso la variabile log_level. Il formato dei messaggi di log scritti in questo file, e' specificato dalle variabili log_fmt e log_timefmt. Il formato generico delle registrazioni di log (una per linea) e' il seguente:

    [livello] [nome del file] [nome della funzione] [numero di linea] <messaggio di log>
  ( [level]   [filename]      [function name]       [line number]     <log message> )

Una divisione automatica del file viene fornita da 2 variabili: log_split_mb e log_split_hours. Se una delle 2 viene attivata e una delle condizioni di divisione e' vera, il file opennap-log.txt attualmente in uso, viene chiuso e rinominato secondo il modello opennap-log-yyyymmdd-nn.txt dove yyyy e' l'anno corrente, mm il mese e dd il giorno. nn e' l'indice del file di log, all'interno di quel giorno, nel caso multipli file di log vengano creati nello stesso giorno.

Alla partenza del server Opennap NG mai appende a, o sovrascrive, opennap-log.txt. Invece il server partira' sempre col rinominare l'esistente opennap-log.txt al prossimo nome di file di log disponibile secondo il modello descritto.





opennap-motd.txt


Messaggio del Giorno
. Questo file contiene il testo che il server manda ad ogni utente che si collega. I MOTD possono essere colorati, il che viene controllato da codici di escape. Comunque questa e' una caratteristica che viene supportata da pochi programmi client.

Il MOTD deve essere in pieno formato ASCII. I colori vengono cambiati inserendo un carattere Ctrl-C (ASCII 3), seguito da un codice colore a 2 cifre. Solo il colore del testo puo' essere cambiato in un MOTD (e non quello di sfondo). La seguente tavola mostra tutti i codici disponibili:

Digits Color            Digits Color            Digits Color
01 Black   30 Black   50 Dark gray
02 Blue 31 Red 51 Light red
03 Green 32 Green 52 Light green
04 Red 33 Brown 53 Yellow
05 Brown 34 Blue 54 Light blue
06 Purple 35 Purple 55 Light purple
07 Light red 36 Cyan 56 Light cyan
08 Yellow 37 Grey 57 White
09 Light green 38 White 58 Grey
10 Cyan    
11 Light cyan
12 Light blue
13 Light purple
14 Dark gray
15 Grey
16 White
(Si e' preferito non tradurre i nomi dei colori, lasciando i nomi originali.
Comunque il testo colorato e' abbastanza esplicativo)

Per ragioni storiche in un MOTD si preferisce usare i gruppi di codici a 2 cifre, 3x e 5x. Questo puo' avere una migliore compatibilita' con piu' programmi client che non i codici 0x e 1x. Se nessun codice colore e' usato, il modello proposto e' 58. Comunque questo puo' variare da client a client.

Ogni nuova linea del MOTD inizia col colore modello. Quindi se volete avere linee multiple dello stesso colore, bisogna ripetere il codice colore all'inizio di dove volete il cambio colore.

Esempio: per inserire un pezzo di testo di colore verde chiaro in una linea del MOTD bisogna scrivere il seguente:
    Questa e' una linea di colore  ^C52verde chiaro^C58 etc.
Notare che "^C" non sono 2 caratteri. E' un solo carattere CTRL-C ASCII. Avrete bisogno di un editor che e' capace di inserire codici ASCII puri nel testo. Non tutti gli editor ne sono capaci.





opennap-servers.txt


Il file dei server contiene una lista dei server a cui e' consentito legarsi (link). Affinche' il vostro server sia capace di legarsi con altri server remoti, una registrazione del vostro server bisogna che sia presente nel file opennap-servers.txt del server remoto. Ogni linea in questo file e' della forma:

 <nomeDelServer> <passRemota> <passLocale> <porta> [alias]
(<server_name> <remote_pass> <local_pass> <port> [alias])
Notare che se un server a cui volete legarvi, definisce un alias tramite la variabile server_alias, dovete mettere lo stesso alias anche opennap-servers.txt. Linee che cominciano con (#) o altro carattere spazio (o tab, etc.) vengono ignorate. Vedere il file doc/examples/opennap-servers.txt come base per iniziare la vostra configurazione.





opennap-state.txt


Questo file contiene una rappresentazione ASCII di tutte le statistiche supportate dal server. Contiene sempre tutti i gruppi di statistiche espressi nella variabile stats_fmt. Di solito viene aggiornato frequentemente, ogni live_stats secondi. Insieme a strumenti Unix come watch e cat, fornisce un facile sistema per monitorare le statistiche del server. Il formato ASCII di questo file agevola anche un facile postprocessing ed una valutazione scritta in altri linguaggi, come Perl o Python. Vedere la sezione stats output per una descrizione approfondita dei campi contenuti in questo file.





opennap-user.txt


Linee comincianti con (#) sono commenti e vengono ignorate. Ogni linea della base di dati deve essere del formato:
<nickname> <password> <email> <level> <created> <lastseen>
Esempi:
lewser 1,N6BeTWZ4,fWJx95pWVcd2wTJk3ZCFBw blah@email.com Leech 0 0
poweruser 1,3aYmWBkH,o4BAAYyOD61bc28Eef8+5w my@address.com Elite 0 0






Configurazione


Le operazioni di Opennap NG sono controllate dalla regolazione di numerose variabili, collocate nel file opennap-config.txt. Ci sono molti modi di accedere le variabili del server:

Modo di accedere la variabile Cambio persistente Stato richiesto del server
usando lo strumento di Amministrazione di Opennap NG per ispezionare o cambiare le variabili nel file opennap-config.txt Si Supporta entrambi
usando qualsiasi editor di testo per ispezionare o cambiare le variabili nel file opennap-config.txt Si spento
leggendo e scrivendo le variabili attraverso speciali comandi del vostro programma cliente, p.es. un comando /sconfig No acceso
leggendo e scrivendo le variabili del server usando programmi cliente senza speciali caratteristiche, attraverso il meccanismo di operserv config PM No acceso



Elenco delle variabili del server per categoria


Le variabili di configurazione sono scritte come segue. (B) = booleano, (I) = intero, (M) = mappa di bit, (S) = variabile stringa. I valori interi sono interpretati come decimali in assenza di altro. Se il numero e' preceduto da un "0x" allora vengono letti come esadecimali, che puo' essere piu' facile per variabili mappa di bit come log_level. Le varabili booleane possono prendere valori di: "on" / "yes" / "1" or "off" / "no" / "0". I numeri dietro le variabili denotano la disponibilita' da quale versione di Opennap NG.

Notare che 0.47H non si riferisce a Opennap NG 0.47 o 0.47.2 ma ad una versione non ufficiale, poi mai pubblicata. La seguente e' una lista di tutte le variabili supportate da Opennap NG 0.60.


controllo del canale:
irc_channels (B)
max_channel_length (I)
max_topic (I)
max_user_channels (I)
strict_channels (B)

gestione del contenuto:
allow_share (B)
ascii_filenames_pct (I) (0.60)
eject_limit_files (I)
eject_limit_libsize (I)
eject_limits_conjunction (B) (0.60)
fix_xnap_path (I) (0.47H)
index_ignore_suffix (B)
index_path_depth (I)
leech_share (B) (0.47H)
max_file_size (I) (0.49)
max_shared (I)
min_file_size (I)

protezione da flood:
break_mx_queue (B)
evaluate_search_abuse_after_secs (I)
evaluate_search_abuse_after_tags (I)
file_count_threshold (I)
flood_ban_ttl (I) (0.49)
flood_commands (I)
flood_eject (I) (0.49)
flood_time (I)
ibl_ttl (I)
login_interval (I)
login_timeout (I)
max_clones (I)
max_command_length (I)
max_login_ban_ttl (I) (0.60)
max_login_count (I) (0.60)
max_login_time (I) (0.60)
max_searches_per_minute (I)
max_tags_per_minute (I)
max_whois_ban_ttl (I) (0.49)
max_whois_count (I) (0.49)
max_whois_time (I) (0.49)
register_interval (I
persistent_filter (B) (0.60)

verbosita' del log:
critical_delay (I) (0.47H)
live_stats (I) (0.60)
log_fmt (M) (0.60)
log_ignore_abuse (I) (0.47H)
log_level (M) (0.60)
log_level_changes (B)
log_split_hours (I) (0.60)
log_split_mb (I) (0.60)
log_targets (M) (0.60)
log_timefmt (S) (0.47H)
loopcount_output_interval (I) (0.47H)
stat_click (I)
stats_fmt (M) (0.60)

  

notifica ai mod+:
max_queue_notify (I) (0.60)
no_mod_annoying (B)
notify_block_sources (I) (0.60)
notify_block_targets (M) (0.60)
notify_mod_abuse (B)
notify_mod_abuse_frequency (I)
notify_no_uploads (I) (0.60)

supporto a GotNap (Napigator):
report_ip (S)
report_name (S)
report_port (S)
server_alias (S)
stats_port (I)
stat_server_host (S)
stat_server_pass (S)
stat_server_port (I)
stat_server_user (S)

network:
auto_link (B)
auto_relink_count (I) (0.60)
auto_relink_idelay (I) (0.60)
auto_relink_pdelay (I) (0.60)
listen_address (S)
max_time_delta (I)
min_read (I)
ping_server_interval (I)
search_timeout (I)
server_name (S)
server_ports (S)
server_queue_length (I)
warn_time_delta (I

prestazioni:
auto_restart (I) (0.60)
client_queue_length (I)
compression_level (I)
max_browse_count (I) (0.60)
max_browse_result (I)
max_connections (I)
max_hotlist (I)
max_ignore (I)
max_mem (I) (0.60)
max_new_users_count (I) (0.47H)
max_new_users_time (I) (0.47H)
max_reason (I)
max_results (I)
max_searches_pending (I)
max_uploading (I) (0.49)
persistent_filter (B) (0.60)
remote_browse (B)
search_max_cache_entries (I)
server_chunk (I)
set_process_priority (I) (0.60)

  

sicurezza:
ban_target_spec (I) (0.60)
cloak_user_level (I) (0.49)
level_to_set_flags (I)
no_share_level (I) (0.49)
protnet (S)
remote_config (B)
set_server_nicks (S)
user_db_interval (I)
usermode (S)

gestione dell'utente:
alnum_nicks (B) (0.49)
auto_friend_filenum (I) (0.60)
auto_register (B)
clones_allow_level (I) (0.49)
criminal_ban_ttl (I) (0.60)
default_ban_ttl (0.49)
discipline_ignorers_ban_ttl (I)
eject_after (I)
eject_ban_ttl (I)
eject_grace_time (I)
eject_leeches (B)
eject_no_channels_only (B)
eject_when_full (B)
friend_expire (I) (0.60)
ghost_kill (I)
invalid_clients (S)
invalid_nicks (S)
invalid_search_ban_ttl (I) (0.60)
leech_ban_ttl (I) (0.60)
leech_grace (I) (0.60)
leech_ratio (I) (0.60)
max_block_pct (I) (0.49)
max_block_pct_ban_ttl (I) (0.49)
max_client_string (I)
max_nick_length (I)
min_nick_length (I) (0.60)
nick_expire (I)
portscan_ban_ttl (I) (0.60)
portscan_notify (I) (0.60)
registered_only (B)
restrict_registration (B)
valid_clients (S) (0.47H)
who_was_time (I)

notifica all'utente:
browse_nag (B) (0.46)
motd_fmt (M) (0.60)
notify_exceed_frequency (I) (0.47H)
notify_user_abuse (B)
notify_user_abuse_frequency (I)
verbose_ban_msg (M) (0.60)

specifiche Unix:
connection_hard_limit (I)
lock_memory (B)
max_data_size (I)
max_rss_size (I)
set_group (S) (0.60)
set_user (S) (0.60)





Variabili Cambiate


Le seguenti variabili, dalle precedenti versioni, sono state o rimosse o modificate nel tipo e significato:

Variabile Cambio Nota
allow_dynamic_ghosts (B) sostituita da ghost_kill (I)
ascii_filenames (B) sostituita da ascii_filenames_pct (I)
block_winmx (B) sostituita da invalid_clients (S) e valid_clients (S)
break_mx_queue (B) cambio di tipo da intero a booleano
browse_nag (B) cambio di tipo da intero a booleano
discipline_block (B) Rimossa funzionalita' sostituita ed estesa dalla classe di blocco criminal del file opennap-block.txt
discipline_block_ban_ttl (I) Rinominata a criminal_ban_ttl (I). Si applica a coincidenze di nomi di file su espressioni di classe criminale nel file opennap-block.txt.
discipline_block_mod (B) Rimossa Mods+ erano bannati automaticamente senza nessun motivo! Essi sono parte dello staff. De-mod o bannateli manualmente se hanno fatto qualcosa di sbagliato e volete sbarazzarvi di loro!
discipline_ignorers (B) Rimossa Settaggio ridondante! Regolate discipline_ignorers_ban_ttl a non-zero per killare o bannare chi ignora i Mod+, o a zero per non usarla.
eject_also_bans (B) Rimossa Settaggio ridondante! Mettete eject_ban_ttl a non-zero per usare questa caratteristica, o a zero per non usarla. Auto-espulsione senza un conseguente ban non ha senso.
eject_leeches (B) cambio di tipo da intero a booleano
eject_nochannels (B) Rinominata a eject_no_channels_only (B) per meglio riflettere il suo significato.
ghost_kill (I) cambio di tipo da booleano a intero per consentire modi multipli.
log_blocked (B) Removed resa obsoleta da notify_block_sources (I) e notify_block_targets (M).
log_channel (B) Rimossa resa obsoleta da log_targets (I)
log_mode (B) Rinominata a log_level_changes (B)
log_stdout (B) Rimossa resa obsoleta da log_targets (I)
loglevel (S) sostituita da log_level (I)
max_new_users_per_minute (I)    sostituita da max_new_users_count (I) e max_new_users_time (I). Questa variabile non ha mai lavorato correttamente
max_searches (I) Rinominata a max_searches_pending (I), per meglio riflettere il suo significato.
no_mod_annoying (B) cambio di tipo da intero a booleano
notify_mod_abuse (B) cambio di tipo da intero a booleano
notify_mod_block (B) Rimossa resa obsoleta da notify_block_sources (I) e notify_block_targets (M).
notify_user_abuse (B) cambio di tipo da intero a booleano
notify_user_block (B) Rimossa resa obsoleta da notify_block_sources (I) e notify_block_targets (M).
ping_server (I) Rinominata a ping_server_interval (I)

Per molte variabili il valore proposto e' cambiato. Cio' e' stato fatto per assistere gli Elite principianti con valori che si sono dimostrati ragionevoli. Per file di configurazione esistenti, in cui i valori sono esplicitamente specificati, niente e' cambiato.

Comunque i proprietari di server si dovrebbero sentire incoraggiati a a confrontare i loro valori con quelli raccomandati, in quanto alcuni di loro possono essere il risultato di uno stress ritardato e di test d'efficienza. Anche, i significati di non tutte le variabili sono stati pienamente compresi da proprietari di server in passato. Come cresce la verbosita' di questa documentazione, speriamo di poter indirizzare alcuni equivoci pre-esistenti .





Lista dettagliata delle variabili di configurazione


Ogni descrizione di variabile e' composta dai seguenti campi:

allow_share (S) Gruppo: gestione di contenuto Tipo: booleano Default: on  
Controlla se ai programmi cliente e' consentito condividere file tramite il server: Se e' a off questo server non accetta condivisione di files e opera solo come server per chiacchierare (chat).



alnum_nicks (S+R)   Gruppo: gestione utente Tipo: booleano Default: off Dalla: NG 0.49
Se messa a ON, solo i soprannomi col vecchio modo alfanumerico degli utenti sono accettati. Possono consistere solo in maiuscole e minuscole "A" - "Z" e "a" - "z", cifre "0" - "9", un trattino "-" e un sottolineato "_".
Soprannomi contenenti un qualsiasi altro carattere saranno rifiutati dal server al login.



ascii_filenames_pct (S) Gruppo: gestione del contenuto Tipo: intero Default: 0 Dalla: NG 0.60
Se messa ad un valore tra 1 e 100, i nomi dei file condivisi consisteranno almeno di questo valore percentuale di stampabili caratteri ASCII a 7 bit (32 - 126). Per esempio un valore di 90 (raccomandato) permette in media un carattere non-ASCII ogni 9 caratteri ASCII. Percio' nomi di file completamente criptici sono proibiti, mentre nomi di file contenenti pochi caratteri, specifici di un linguaggio come Francese, Tedesco o Spagnolo vengono ancora permessi. Cio' produce che alcuni nomi particolari di files possano ancora essere permessi. E leggibili, in Inglese e pochi altri linguaggi. Nomi di file consistenti specialmente in caratteri di linguaggi stranieri come Kanji (Giapponese), Russo o altri non sono accettati. Cio' aiuta a tenere fuori nomi incomprensibili, potenzialmente non benvenuti o con contenuti pericolosi. Nomi di files contenenti una percentuale di caratteri non-ASCII piu' alta di questo valore sono bloccati (e contano per max_block_pct, eject_limit_files e simili, di quell'utente). Notare che il calcolo percentuale si applica a tutti i caratteri nel nome del file piu' percorsi opzionali, che possono essere mandati da un cliente.



auto_friend_filenum (S) Gruppo: gestione utente Tipo: intero Default: 0 Dalla: NG 0.60
Quando differente da zero, ad ogni cliente che condivide questo numero di files, viene automaticamente assegnato il livello Friend. Questo permette a tali utenti di connettersi in qualsiasi momento al server, anche quando e' pieno e gli utenti ordinari vengono rifiutati. Quindi, regolare questa variabile, onora ed avalla quegli utenti che condividono molto per visitare di nuovo il server. Vengono contati solo i file che passano le condizioni di blocco, come min_file_size, ascii_filenames_pct e block expressions. Un buon valore puo' essere 5,000.



auto_link (S+R) Gruppo: network Tipo: booleano Default: off  
Quando su ON, Opennap-NG automaticamente cerchera' di legarsi a tutti i servers elencati nel file servers. Vedere anche auto_relink_count, auto_relink_idelay, auto_relink_pdelay.



auto_register (S+R) Gruppo: gestione utente Tipo: booleano Default: off  
Quando su ON, il server registra automaticamente un soprannome la prima volta che viene usato. Se su OFF, i soprannomi vengono registrati solo su richiesta esplicita del cliente. Notare che molti utenti non considerano circa password corrette nelle reti di condivisione file, ne' lo fanno alcuni clienti. In realta' un crescente numero di utenti usa password casuali ad ogni connessione. Tali utenti non saranno in grado di riconnettersi se auto_register e' su ON. Vedere anche: registered_only, register_interval e nick_expire.



auto_relink_count (S+R) Gruppo: network Tipo: intero Default: 0 Dalla: NG 0.60
Insieme con