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 auto_relink_idelay e auto_relink_pdelay questa variabile controlla la riconnessione del server al network. Tutte e tre devono essere non a zero per abilitare l'auto-riconnessione. Se un server connesso si disconnette da solo, l' hub puo' automaticamente cercare di riconnetterlo. Questa variabile regola il massimo numero di tentativi di riconnessione del server prima di arrendersi. Valori ragionevoli sono tra 5 e 10, ammenocche' volete che il server provi all'infinito. I Mod+ vengono notificati dei tentativi di riconnessione.
Sequenze automatiche di riconnessione terminano su uno di questi tre eventi:
  1. il server disconnesso si e' riconnesso
  2. un comando di slink manuale viene lanciato verso il server gia' disconnesso
  3. un numero auto_relink_count di tentativi di riconnessione e' stato raggiunto senza successo



auto_relink_idelay (S+R) Gruppo: gestione utente Tipo: intero Default: 300 Dalla: NG 0.60
Insieme ad auto_relink_count e auto_relink_pdelay questa variabile controlla la riconnessione automatica del server.
Tutte e tre devono essere non a zero per abilitare l'auto-riconnessione. Se un server connesso si disconnette senza un comando manuale di disconnessione, l'hub puo' automaticamente tentare la riconnessione al server perso.
Questa variabile regola il ritardo iniziale per la riconnessione automatica. Quando la disconnessione di un server viene avvertita, bisogna aspettare auto_relink_idelay secondi prima del primo tentativo automatico di riconnessione.
Questo valore non dovrebbe essere troppo basso, in quanto il motivo per cui l'altro server e' disconnesso potrebbe essere un reboot, un aggiornamento del software, o un altro evento che lo previene da un ricollegamento immediato. Valori ragionevoli sono probabilmente tra i 3 ed i 10 minuti (da 180 a 600).
Notare che il valore di questa variabile e' arrotondato a multipli di 60, provvedendo quindi una risoluzione di un minuto.
I Mod+ vengono notificati dei tentativi di riconnessione.



auto_relink_pdelay (S+R) Gruppo: gestione utente Tipo: intero Default: 120 Dalla: NG 0.60
Insieme a auto_relink_count e auto_relink_idelay questa variabile controlla l'auto-riconnessione del server.
Tutte e tre devono essere non a zero per abilitare l'auto-riconnessione. Se un server connesso si disconnette senza un comando manuale di disconnessione, l'hub puo' automaticamente tentare la riconnessione al server perso.
Questa variabile regola il ritardo periodico per i tentativi di riconnessione del server.
Quando una disconnessione di server viene avvertita, bisogna attendere auto_relink_idelay secondi prima del primo tentativo automatico di riconnessione. Se il primo tentativo non ha successo, ulteriori tentativi saranno fatti ogni auto_relink_pdelay secondi. Valori ragionevoli sono tra i 2 ed i 5 minuti (120 - 300 secondi).
Notare che il valore di questa variabile e' arrotondato a multipli di 60, provvedendo quindi una risoluzione di un minuto.
I Mod+ vengono notificati dei tentativi di riconnessione.



auto_restart (S+R) Gruppo: prestazioni Tipo: intero Default: 0 Dalla: NG 0.60
Se non a zero, abilita l'auto-ripartenza di Opennap NG in caso di terminazione impropria (cioe' crash). Insieme alle regolazioni di auto_relink, cio' incrementa significativamente la disponibilita' di Opennap NG in caso di collasso inaspettato.
Il valore numerico specifica il numero di secondi da aspettare prima di rilanciare il server dopo un crash. Valori ragionevoli sono fra 5 - 60 (secondi). Se auto_restart e' su ON, l'unico modo per terminare Opennap NG e' da Admin o Elite mandando un messaggio killserver, o il proprieterio lo puo' terminare localmente.



ban_target_spec (S+R) Gruppo:
sicurezza
Tipo: intero Default: 1 Dalla: NG 0.60
Questa variabile specifica il formato dei veti (ban) quando creati da una qualsiasi delle caratteristiche automatiche di ban del server. Cio' determina il campo d'interesse delle entrate di ban.

Valore    Descrizione Formato dell'Oggetto di Ban
1 Solo nick nick!*
2 Solo indirizzo IP   *!a.b.c.d
3 Nick e IP nick!a.b.c.d

Tutti e tre i formati hanno i loro pro e contro:
  • I ban solo nick bannano un nick in particolare, senza riguardo al loro indirizzo IP. Se il nick bannato ha origine da una connessione in dial-up con frequenti cambi di indirizzo IP, questo puo' risparmiare registrazioni multiple di indirizzi IP, e quindi rendere piu' corta la lista dei ban. Comunque utenti innocenti che potrebbero usare lo stesso nick non riusciranno a connettersi.
    Notare anche che molti programmi cliente forniscono nick casuali ad ogni connessione. Bannarli con quel nick significa impedirgli di riconnettersi immediatamente di nuovo con lo stesso nick, ma non con uno differente la prossima volta.

  • Solo Indirizzo IP rifiutera' tutti i tentativi di connessione sull' IP fornito, indifferentemente dal nick usato. Questo e' il tipo di bersaglio piu' efficace. Comunque, siccome molti clienti possono connettersi in dial-up, e quindi cambiando l'indirizzo IP, l'utente appena bannato potrebbe entrare di nuovo, se con un diverso IP. D'altra parte, un utente innocente potrebbe ereditare l' IP bannato ed essere rifiutato.
    Se il cliente bannato si riconnette con un diverso IP e continua il suo mal-comportamento, allora puo' essere bannato di nuovo, e di nuovo, creando potenzialmente pero' multiple registrazioni di ban per lo stesso cliente. D'altra parte vi sono alcuni ben noti ISP via cavo che forniscono lo stesso IP a clienti diversi. Bannare quindi un IP potrebbe prevenire altri utenti (potenzialmente innocenti) dal collegarsi al server.

  • Nick e indirizzo IP e' il piu' preciso fra i ban. Questo banna nick specifici da indirizzi IP specifici. Questo formato di bersaglio evita di penalizzare altri clienti a causa del malcomportamento di uno solo. Comunque ci sono molti clients che si connettono in dial-up, qundi il loro indirizzo IP cambia ogni volta. Se il client bannato si riconnette usando un IP differente ( o un nick differente) e continua a malcomportarsi, puo' quindi essere bannato di nuovo (e di nuovo), creando potenzialmente entrate multiple per uno stesso client.
Notare che i ban manuali (emanati da Mods+) non sono affetti da questa variabile. I ban manuali possono sempre essere fatti usando uno qualsiasi dei formati disponibili



break_mx_ queue (S+R) Gruppo: protezione da flood Tipo: booleano Default: off  
C'e' un programma client in particolare, comunemente usato, che cerca di imbrogliare gli utenti di altri client. Quando costruisce la sua coda di upload, preferisce le richieste da utenti che usano lo stesso client. Utenti con altri client vengono penalizzati. Essi non sono capaci di entrare nella coda di upload, se esiste, percio' non possono scaricare da quel client. Questo comportamento viola il protocollo Opennap ed e' visto come disonesto. Inoltre viene attuato a spese delle risorse del server (banda di connessione). Questo client manda un sacco di messaggi "//WantQueue" agli altri. In questo esso si autoidentifica con client dello stesso tipo. Vedere stats output del server per avere un'idea circa lo spreco di messaggi //WantQueue. Comunemente oltre il 90% dei messaggi che passano dal server sono del tipo "//WantQueue". Mettendo questa variabile su ON, tali messaggi vengono bloccati, risparmiando almeno il 50% del traffico di banda da essi causato. Inoltre cio' ha anche l'effetto di distruggere la coda di upload di tali client. - Questo significa che chiunque tenta di scaricare da loro ha le stesse probabilita'.



browse_nag (S+R) Gruppo: notifica utente Tipo: booleano Default: on Dalla NG 0.46
Quando su on gli utenti vengono tormentati quando i loro client emanano un vecchio comando 211 di server browse senza almeno provare prima il piu' nuovo 640 direct browse.



client_queue_length (S+R) Gruppo: prestazioni Tipo: intero Default: 262,144  
Regola il massimo numero di bytes che possono essere accodati per una connessione client. Se questa soglia viene raggiunta, viene assunto che o il client e' morto, o il collegamento al server non puo' sostenere tale livello di output, allora il server automaticamente chiude la connessione del client. Cio' e' necessario affinche' il client morto non consumi tutta la memoria del server. Questo limite non si applica ad Elite e Admin, cioe' la dimensione del loro spazio di memoria non e' limitata.
Notare che la dimensione non rappresenta uno spazio (buffer) statico che e' sempre allocato per ogni cliente. Molti client non hanno bisogno di tale spazio momentaneo in quanto i dati gli possono essere mandati instataneamente e ricevuti abbastanza velocemente. L'allocazione momentanea (buffering) ha luogo solo se il client ha richiesto un vasto ammontare di dati che non puo' essere mandato dal Sistema Operativo in una sola botta, o quando il client si sia gia' disconnesso e non puo' quindi ricevere altri dati. Gli spazi (buffer) del client sono allocati dinamicamente da Opennap NG su richiesta. La loro tipica durata di vita e' 2 secondi. Poi vengono liberati non appena i dati possono essere mandati o il client si disconnette.



cloak_user_ level (S+R) Gruppo: sicurezza Tipo: intero Default: 0 Dalla: NG 0.49
Se diversa da zero, gli utenti normali che /whois gli altri riceveranno sempre l'informazione "user" come livello utente da colui che hanno whois-ato. Gli utenti non saranno cosi' in grado di identificare Moderatori, Amministratori ed Elite. Questa caratteristica e' per proteggere i membri dello staff, se i responsabili preferiscono stare in incognito. Piu' precisamente il valore di questa variabile ha i seguenti significati:
0 =  ritorna sempre il livello reale a tutti gli utenti
1 =  ritorna il livello reale agli utenti che sono marcati almeno "friend"
2 =  solo Moderatori, Amministratori ed Elite ricevono il reale livello di qualcuno



clones_allow_level (S+R) Gruppo: gestione utente Tipo: intero Default: 3 Dalla: NG 0.49
Se non zero, specifica il livello utente da cui si e' esenti dalla detenzione dei cloni. Il valore proposto e' per esentare dalla detenzione Admin ed Elite. La detenzione dei cloni viene fatta dalla variabile max_clones. I valori possibili sono:
0 =  La detenzione dei cloni tocca a tutti e chiunque
1 =  utenti (almeno friend) e superiori, sono esenti
2 =  Moderatori e superiori sono esenti
3 = Amministratori ed Elite sono esenti
4 = Solo gli Elite sono esenti dalla detenzione dei cloni



compression_level (S´R) Gruppo: prestazioni Tipo: intero Default: 1  
Il livello di compressione zlib da usare nelle connessioni da server a server. 0 significa nessuna compressione, 1 la minore, 9 la massima. Piu' alto il numero piu' la cpu consuma. Livello 1 comprime il testo di circa il 50%, che e' abbastanza buono per la maggiorparte delle applicazioni.



connection_ hard_limit (S+R) Gruppo: specifica Unix Tipo: intero Default: dipende dal SO  
Regola il numero dei descrittori di file disponibili al processo del server. Generalmente questa e' usata per incrementare il valore proposto dei descrittori disponibili. Notare che per incrementare il massimo proposto, il server deve essere lanciato da root (Opennap-NG lascera' i privilegi e andra' allora con gli uid/gid specificati da set_user e set_group ). Nota: su Linux (< 2.4.x) connection_hard_limit non puo' essere cambiata ed e' sempre 1024.



criminal_ban_ttl (S) Gruppo: gestione utente Tipo: intero Default: 604 800 Dalla: NG 0.60
Se il file opennap-block.txt contiene qualche espressione attiva di classe criminal, un utente che cerchi di condividere almeno un file che corrisponda ad un'espressione attiva di questa classe, sara' bannato per criminal_ban_ttl secondi.



critical_ delay (S+R) Gruppo: verbosita' log Tipo: intero Default: 5 Dalla: NG 0.47H
Quando compilato in modo debug, il server contiene alcuni codici interni di validazione sulle prestazioni. Se il programma rimane incastrato in qualcha funzione troppo a lungo (freezing, provocando lag), esso puo' riportare nel log la durata e la causa di questo evento. I messaggi sono della forma "checkdelay: level x, stuck for y seconds in block z". L' errore log level dev'essere abilitato, per emettere questi messaggi. Questa regolazione specifica la soglia in secondi affinche' tali messaggi siano riportati. Tutti i freeze piu' lunghi di questo valore, saranno riportati. Questi messaggi possono essere utili per controllare e confermare lag del server, identificarne l'origine e possibilmente dare un'idea di quali parametri correggere per ridurre questi eventi. Sebbene, a non programmatori, tali messaggi potrebbero apparire incomprensibili.



default_ ban_ttl (S+R) Gruppo: gestione utente Tipo: intero Default:
5,184,000
Dalla: NG 0.49
Quanto a lungo dura il ban se nessun valore di timeout e' stato introdotto. Il valore proposto e' 60 giorni (~2 mesi). Ban piu' corti o piu lunghi possono essere specificati, che non incidono su altre caratteristiche di ban TTL. Solo che i ban illimitati non sono piu' supportati; ogni ban ha un tempo di scadenza.



discipline_ ignorers_ ban_ttl (S+R) Gruppo: gestione utente Tipo: intero Default:
2,592,000
 
Se questo valore e' nonzero, ogni client che ignora un mod+ (con la rispettiva funzione del proprio programma) viene immediatamente bannato e killato, per questo ammontare di tempo (in secondi). Il valore proposto e' 30 giorni. Mettetelo a zero per permettere agli utenti di ignorare i Mods+ senza sanzioni. Comunque, ricordate che lo scopo di di Moderatori (e superiori) e' di essere ascoltati e non ignorati.



eject_after (S) Gruppo: gestione utente Tipo: intero Default: 120  
Specifica il numero di secondi dopo il login iniziale al server, in cui il client e' esente dall'essere killato per non condividere abbastanza quando il server e' pieno (vedere eject_limit_files e eject_limit_libsize). Questo valore dev'essere grande abbastanza da consentire al client di mandare la lista prima di essere killato.



eject_ban_ttl (S) Gruppo: gestione utente Tipo: intero Default: 7200  
Se un utente non condivide abbastanza file appropriati, viene killato e bannato per questo numero di secondi. Se questo valore e' zero, non avviene nessuna espulsione per insufficente condivisione. Comunque, considerare anche max_block_pct e max_block_pct_ban_ttl, che forniscono un approccio diverso a questo problema. I Mods+ non vengono mai espulsi per insufficiente condivisione. Questa espulsione e' regolata da: eject_limit_files, eject_limit_libsize, min_file_size e max_file_size, e dal file opennap-block.txt. Il valore proposto e' 2 ore. Alzarlo leggermente per diminuire il traffico di banda. L'esperienza ha dimostrato che il 98% - 99% degli utenti se ne sbatte di essere bannati per non condividere abbastanza su un certo server, col risultato di tentare di connettersi di nuovo ed essere di nuovo bannati, e di nuovo, non appena il TTL del ban scade.



eject_grace_time (S) Gruppo: gestione utente Tipo: intero Default: 600  
Se eject_limits e' ON, allora un server nuovo potrebbe killare/bannare perche' il carico e' cosi' alto che alcuni utenti non fanno in tempo a mandare la lista o magari vanno in timeout se il server e' su una connessione lenta. La variabile eject_grace_time e' il tempo in secondi dopo cui eject_limits viene controllato dopo la partenza del server. Il valore proposto e' 10 minuti (600 secondi).



eject_leeches (S) Gruppo: gestione utente Tipo: booleano Default: on  
Quando eject_when_full e' su ON, il server killa i leech per permettere ad altri utenti di entrare, anche se i leech hanno il minimo richiesto di condivisione.



eject_limit_ files (S) Gruppo: gestione del contenuto Tipo: intero Default: 0  
Il numero minimo di file che un utente deve avere per essere esente da eject_when_full. Ogni cliente che condivide eject_limit_files+1 file e eject_limit_libsize+1 Kilobytes non verra' disconnesso. Questa regolazione aiuta a combattere i freeloader. I Mods+ non vengono mai killati per insufficiente condivisione. Vedere anche eject_limits_conjunction per la congiunzione fra queste due variabili.



eject_limit_ libsize (S) Gruppo: gestione del contenuto Tipo: intero Default: 0  
Il numero minimo di Kilobytes che un utente deve condividere per essere esente da eject_when_full. Ogni cliente che condivide eject_limit_files+1 file e eject_limit_libsize+1 Kilobyte non sara' disconnesso.Questa regolazione aiuta a combattere i freeloader. I Mods+ non saranno mai disconnessi per non condividere abbastanza. Vedere anche eject_limits_conjunction per modificare la congiunzione fra queste 2 variabili.


eject_limits_ conjunction (S) Gruppo: gestione del contenuto Tipo: booleano Default: on Dalla: Opennap NG 0.60
Questa variabile determina la relazione tra eject_limit_files e eject_limit_libsize. Se e' su ON (valore proposto) entrambi i limiti devono essere mancati da un utente per essere disconnessi (congiunzione AND). Questo e' il comportamento di tuute le versioni precedenti di Opennap NG. Se questa variabile e' su off allora e' sufficiente che solo uno dei limiti non venga rispettato per essere espulsi (congiunzione OR). Notare che l'espulsione automatica avviene solo se eject_when_full e' su on, oppure se il livello dell'utente e' leech e eject_leeches e' su on.



eject_no_ channels_only (S) Gruppo: gestione utente Tipo: booleano Default: on Dalla: NG 0.49
Normalmente eject_when_full disconnette gli utenti che non condividono abbastanza, che siano in una stanza o meno. eject_no_channels_only su on disconnette chi non e' in alcun canale and non condivide abbastanza. Se su off gli utenti che non condividono abbastanza vengono espulsi, che siano in un canale o meno. In altre parole chi chatta e' protetto dal kill.



eject_when_ full (S) Gruppo: gestione utente Tipo: booleano Default: on  
Se su on, il server disconnette il cliente che e' connesso da piu' tempo che non condivide abbastanza quando il server e' pieno (cioe' che ha raggiunto max_connections clienti). Cio' fornisce spazio libero per quei clienti che condividono abbastanza. Vedere anche eject_leeches, eject_limit_libsize, e eject_limit_files. Queste regolazioni aiutano a combattere i freeloader. Nota: i mods+ sono esenti e non verranno mai disconnessi automaticamente, anche se non condividono file.



evaluate_ search_ abuse_after_ secs (S+R) Gruppo: protection da flood Tipo: intero Default: 120  
Dopo quanti secondi max_searches_per_minute dev'essere valutato? Questo per prevenire che un utente appena connesso sia perseguito perche' il suo client sta cercando tutti gli incompleti. Dopo evaluate_search_abuse_after_secs secondi il contatore inizia a contare.



evaluate_ search_ abuse_after_ tags (S+R) Gruppo: protezione da flood Tipo: intero Default: 100  
Dopo quanti tag in totale deve max_searches_per_minute essere valutato ? Questo pre prevenire che un utente appena connesso sia perseguito perche' il suo client sta cercando tutti gli incompleti. Dopo evaluate_search_abuse_after_tags richieste il contatore inizia a contare



file_count_ threshold (S) Gruppo: protezione da flood Tipo: intero Default: 5 000  
Quando la ricerca di un termine singolo di un file indicizzato e' contenuta in oltre questo numero di file, tale termine viene aggiunto alla lista di termini filtrati. La ricerca per essi non sara' piu' possibile.



fix_xnap_ path (S) Gruppo: gestione del contenuto Tipo: intero Default: 1 Dalla: NG 0.47H
Alcune versioni del cliente Xnap usano condividere le proprie cartelle nominandole appena con un numero. I risultati di sfogliare tali cartelle sembrano stupidi a molti altri clienti e rende difficile capire con un'occhiata i file offerti. Questa regolazione offre un sistema per maneggiare questo disordine. Influisce solo sui file condivisi la cui cartella e' un numero.

Valore Azione
0 Lascia disordinati i percorsi.
1 Rimuove la parte superiore della cartella. Cioe' "2047\Canzone.mp3" diventa "Canzone.mp3". Questo valore provoca liste piatte per quei malscritti client. Almeno sono piu' facili da vedere che non le strutture originali.
2 Mette la voce in una cartella artificiale nominata con la prima lettera del nome del file. Cioe' "2047\Canzone.mp3" diventa "C\Canzone.mp3". Questo riduce significativamente il numero di cartelle
3 (Non funzionante!) Mette la voce in una cartella nominata con la prima parola (separata dal primo carattere non alfanumerico) del file. Cioe' "2047\Questa Canzone.mp3" diventa "Questa\Questa Canzone.mp3 ".



flood_ ban_ttl (S+R) Gruppo: protezione da flood Tipo: intero Default: 86400 Dalla: NG 0.49
Se flood_eject e' non-zero allora questa regolazione specifica il tempo di ban in secondi per violazione dei limiti di flood. Il valore proposto e' 1 giorno.



flood_ commands (S+R) Gruppo: protezione da flood Tipo: intero Default: 0  
Questa variabile, insieme a flood_time, facilita la protezione da flood dal lato server. Se messa su un valore maggiore di zero, il server non consente ai client di mandare piu' di questo numero di comandi in flood_time secondi. Ogni client che tenta di mandare comandi piu' velocemente del limite stabilito viene forzatamente rallentato, oppure, se flood_eject e flood_ban_ttl sono entrambe diverse da zero, immediatamente bannato e killato. Una coppia di valori raccomandati e' 100 comandi in 10 secondi, per permettere ai client di ripetere occasionalmente ricerche multiple. I flood intenzionali facilmente eccederanno questi limiti.



flood_eject (S+R) Gruppo: protezione da flood Tipo: intero Default: 0 Dalla: NG 0.49
Se flood_eject e flood_ban_ttl sono entrambe diverse da zero, i client che eccedono la soglia di flood specificata da flood_time e flood_commands questo numero di volte saranno automaticamente bannati e killati. Mettere questa variabile ad un valore basso come 1 o 2 non e' raccomandato! I client che eccedono i limiti di flood non sempre lo fanno apposta o persino sapendolo. Un occasionale eccessivo flood puo' capitare a tutti. Percio' se questa caratteristica viene usata, valori minimi di 4 o 5 sono raccomandati. Altrimenti potreste trovare che un alto numero di client viene bannato. Lo stesso accade se flood_commands e flood_time sono troppo bassi.



flood_time (S+R) Gruppo: protezione da flood Tipo: intero Default: 100  
Questa variabile, insieme a flood_commands, aiuta la protezione da flood dal lato server. Se maggiore di zero, il server non consente ai client di mandare piu' di flood_commands commandi in flood_time secondi. Ogni client che cercasse di mandare comandi piu' velocemente del limite consentito verra' rallentato, oppure se flood_eject e flood_ban_ttl sono entrambe diverse da zero, verra' immediatamente bannato e killato. Una coppia raccomandata di valori e' 100 comandi in 10 secondi, per permettere ai client un'occasionale ripetizione di una ricerca. I flood intenzionali eccederanno facilmente questo limite.



friend_expire (S+R) Gruppo: gestione utente Tipo: intero Default:
2,592,000
Dalla: NG 0.60
Specifica il tempo in secondi dopo cui un nick col flag friend che non viene usato, scade e ritorna disponibile. Utenti senza alcun flag scadono dopo nick_expire secondi. Utenti Mod+ o superiori non scadono mai. Siccome i nick friends sono piu' preziosi degli ordinari "anonymous" i nick registrati dovrebbero avere questo valore tra 2 e 4 volte piu alto di nick_expire. Il valore proposto per questa variabile e' 30 giorni. Vedere anche auto_register.


ghost_kill Gruppo: gestione utenti Tipo: intero Default: 1 Dalla: NG 0.49
Se diversa da zero, i ghosts verranno killati. may be killed. Despite the possibility of ghost kill deadlocks it is recommended to enable ghost kill, since the harmless and innocent ghosts use to outweigh malicious ones by far.
0 =  Disable ghost killing
1 =  Enable ghost killing
This variable was changed in 0.49 from boolean to integer type to implement additional submodes. However, as field tests showed they implied other problems, additional submodes have been withdrawn again, for the time being.



ibl_ttl Gruppo: flood protection Tipo: intero Default: 0  
The Internal Ban List is an optimization means which is used to keep out excessive clients. If a client reconnects too fast, keeps using an invalid nick or an invalid client, then the IP of this user is banned for ibl_ttl seconds. Checks against entries in the IBL are much faster than checks against entries in the main ban list. The user trying to connect will be disconnected immediately, without even getting a "You are banned..." message delivered. Clients may display this as "server read error"s, "connection timeout"s or similar.

Please note that if for some reason any Moderator or Admin or Elite gets into this list upon an connection attempt, he won't be able to connect to the server for ibl_ttl seconds either! That is because the connection request will be rejected before any nicks or passwords are transmitted to the server. There is currently also no way to "unban" an entry from the IBL. So this value shouldn't be too high. 10 minutes (600) is a reasonable value. It should not exceed 1 hour (3600). A value of 0 disables this feature.



index_ignore_suffix Gruppo: content management Type: boolean Default: on  
Controls whether or not the filename extensions of shared files are included in the searchable index. Also see index_path_depth.



index_path_ depth Gruppo: content management Tipo: intero Default: 2  
Controls how many levels of directory are included when adding shared files to the searchable index. Often times the leading parts of the path are completely useless for searching (eg., C:\Program Files\My Music\Rock\) and just consumes a lot of memory. This variable counts from the end of the path backwards, so the higher the value, the more of the beginning of the path it will include. Also see index_ignore_suffix.



invalid_ clients Gruppo: gestione utenti Type: string list Default: (null)  
This is a string list of clients that are not allowed on your server. Some clients can't/don't share, some clients are broken, etc. This list can be superseded by valid_clients.

Example: invalid_clients *floodster*,*mp3rage*,*rapigator*



invalid_nicks Gruppo: gestione utenti Type: string list Default: (null)  
invalid_nicks is a list of invalid client nicks, ones which you do not want on your network for some reason or another.

Example: invalid_nicks joey2cool,*trade*



invalid_search_ ban_ttl Gruppo: gestione utenti Tipo: intero Default: 43 200 Dalla: NG 0.60
If there are active expressions of class invalid search in file opennap-block.txt and a client searches for any terms matching any of those expressions it will be immediately ejected and banned for this period (in seconds).



irc_channels Gruppo: chat control Type: boolean Default: on  
When set, Opennap-NG requires all channel names to begin with # or &.



leech_ban_ttl Gruppo: gestione utenti Tipo: intero Default: 0 Dalla: NG 0.60
If leech_ratio and leech_grace are both nonzero then any convicted leech will be killed and banned for this number of seconds.



leech_grace Gruppo: gestione utenti Tipo: intero Default: 20 Dalla: NG 0.60
Together with leech_ratio this variable specifies the threshold for users being regarded leeches and becoming subject to optional auto leech ejection. If nonzero, this variable sets the number of "free" downloads each user has. That is, the number of initial downloads which don't count for leech_ratio. For leech detection and ejection to be enabled, this variable must be set to at least 1. A value of 0 disables leech detection.



leech_ratio Gruppo: gestione utenti Tipo: intero Default: 20 Dalla: NG 0.60
Together with leech_grace this variable specifies the threshold for users being regarded leeches and becoming subject to optional auto leech ejection. If nonzero, this variable sets the maximum upload:download ratio a user must stay within in order to avoid being regarded a leech. In other words: a user must commit at least one upload every leech_ratio downloads. For instance, if leech_ratio is set to 10 then a user must upload at least one file per every 10 downloads. If leech_ban_ttl is nonzero, the leech will be automatically ejected and banned. Otherwise just a notification to all Mods+ will be generated, reporting the leech. Set either leech_ratio or leech_grace to zero to disable leech detection. If nonzero, a value of at least 20 is recommended. If you set this to lower than 20 you will find many users getting banned. If you set this to 10 or lower you may find almost the majority of your users getting banned. There are many leeches out there.


leech_share Gruppo: content management Type: boolean Default: on Dalla: NG 0.47H
If set to on then users with level leech may still share and upload files. This may give them a chance to gain back regular user level if Mods+ decide to honor it. If set to off then users with level leech can't share nor upload any files. Leeches never can download any files.



level_to_ set_flags Gruppo: security Tipo: intero Default: 2  
Minimum level a user must have to assign userflags to other users. Values are: 0 = Leech, 1 = User, 2 = Moderator (default), 3 = Admin, 4 = Elite. Values below 2 are not sensible.



listen_ address Gruppo: network Type: string Default: 0.0.0.0  
By default, the server will listen on all interfaces on the system. You can force it to listen only on a single interface by specifying the IP address of the interface in this option.



live_stats Gruppo: log verbosity Tipo: intero Default: 5 Dalla: NG 0.60
This variable sets the update interval for the live stats output feature of Opennap NG in seconds. Typical and suitable values are 5 or 10. A new version of file opennap-state.txt will be created (overwriting the existing one) every live_stats seconds. External tools like watch and cat (on Unix systems) can be used to permanently monitor server state. Setting this to 0 disables the live stats feature and emission of opennap-state.txt files. Note: while the value of this variable may generally be changed at runtime without need to restart or rehash the server, a change between zero and nonzero (or vice versa), that is, switching between enabling and disabling this feature at all, requires a server restart.



lock_memory Gruppo: Unix specific Type: boolean Default: on  
On supported systems, this will cause the server to lock all of its memory pages into real memory, thus avoiding swapping to disk. It is strongly recommended to leave memory locking for Opennap NG enabled, since due to its architecture Opennap NG is extremly bad suited for any of its parts of allocated memory to be swapped out to disk. On some systems Opennap NG doesn't seem to run reliable in the long run if it is subject to swapping. However, on other systems, especially Linux 2.6.10 and 2.6.11, memory locking seems to be broken, i.e. preventing Opennap NG to execute if this option is enabled. If memory locking is enabled, Opennap NG conducts a little self test upon startup to determine, whether proper operation with memory locking is possible at all. If it isn't then Opennap NG tries to unlock the memory again and proceed with unlocked memory. If this fails as well then Opennap NG will resign and terminate. In this case the server must be started with lock_memory set to off and the server owner should consider an up- or downgrade of the OS (s)he is using.



log_blocked Gruppo: log verbosity Type: boolean Default: off Dalla: NG 0.47H
When set to on, each file that a user tried to share and which is blocked will appear in the log. mod+'s can monitor this by joining the &LOG channel. This feature usually produces less traffic than notify_mod_block.



log_fmt Gruppo: log verbosity Type: bitmap Default: 7 Dalla: NG 0.60
This variable specifies format of single log lines, as they are emitted. If all options are enabled, a log line would consist of the following items:
    [level] [filename] [function name] [line number] <log message>
This is a bitmap variable where any of the format options can independently be turned on or off. Add numbers of options you want to enable. Available options are:

Value    Meaning
1 Log lines will be aligned
2 Level of message will be shown in every line
4 The name of the function emitting the message will be shown
8 The sourcecode line where the message originates will be shown
16 The name of the source file where the message originates from will be shown

The default value 7 means that every log line will be aligned and contain level and function name. Unaligned output is recommended if you are low on screen width only. Sourcecode line and filename are relevant for programmers only.



log_ignore_ abuse Gruppo: log verbosity Tipo: intero Default: 1 Dalla: NG 0.47H
If set to 1 then each user who tries to ignore more other users than max_ignore will be reported once in the log. If set to 2 then each further attempt to ignore other users will be logged, including the nick which would be ignored. If set to 0 then no logging happens when a user tries to ignore more than max_ignore other users. This variable can be helpful to detect traders or leeches who tend to quickly ignore almost every user who tries to download from them.
Note: a client may implement its own management of ignoring other users. This variable has effect only if the client requests ignores on the server. Most clients do so as this is part of the protocol and simpler for them to implement.



log_level Gruppo: log verbosity Type: bitmap Default: 241599 (0x3AFBF) Dalla: NG 0.60
This bitmap variable enables or disables various sorts of log messages. Where the enabled log messages will actually be emitted to is determined by the log_targets variable. If you are not familiar with bitmap arithmetic or don't like those large numbers then you should adjust bitmap variables like this one using the Opennap NG GUI config tool (Onngconf). It presents a much more convenient interface to set bitmap variables like this.

Value (dec)  Value (hex)  Level Enabling includes messages in log about
1 0x00001 Server local server issues, operational events, linked server communication events
2 0x00002 Client client issues, technical problems, abuse by users
4 0x00004 Login login events, locally and remotely, login failures
8 0x00008 Files file sharing operations, invalid files, conversions, file table troubles
16 0x00010 Share errors regarding client's shares
32 0x00020 Search faulty or invalid searches, spurious requestors or targets
64 0x00040 Debug lots of various events during server operation, which are mostly of interest for developers or testers only
128 0x00080 Error the server encountering error conditions, regarding initialization, network communication, file operations, resource management.
256 0x00100 Security unauthorized client accesses, ban creations, password issues
512 0x00200 Channel channel creation, destruction, management and verification
1024     0x00400 Stats frequent server statistics. See stats_click
2048 0x00800 Flood flood events by clients, regarding commands or connects
4096 0x01000 Connects every incoming connection, including rejected ones
8192 0x02000 Disconnects  clients being disconnected for various reasons
16384 0x04000 Rejected logins denied due to various reasons, i.e. bans or errors
32768 0x08000 Config server configuration has been altered
65536 0x10000 Init server initialization phase
131072  0x20000 Cleanup unused server resources being freed

The default is to enable messages of all sorts but Debug, Connects and Rejected. On server start, the Error level will always be anabled, regardless of the log_level setting in opennap-config.txt. If you really want to disable error messages you have to turn them off later using a /msg operserv config log_level <levels> command,



log_mode Gruppo: log verbosity Type: boolean Default: off  
When set to on, Opennap-NG will log changes in user levels to a file.



log_split_hours Gruppo: log verbosity Tipo: intero Default: 168 Dalla: NG 0.60
When output to log files is enabled in log_targets variable and this value is nonzero, the log will be split every log_split_hours hours. That means, the current log file will be closed and renamed to a file of pattern opennap-log-yyyymmdd-nn.txt, where yyyy is the current year, mm is the current month, dd is the current day and nn is the index of that logfile. Opennap NG will never overwrite existing logfiles when splitting multiple log files a day but always increase the index number to the first non-existing filename of that day, instead. Also note that split times of log files are aligned by the value of this variable. That means, if you specify a value of 24 hours, the log file won't be split exactly 24 hours after server start time but always at 00.00 local time. If you specify 6 hours, the log file will be split at 00.00, 06.00, 12.00 and 18.00, regardless of when the server was started. Hence the first archived log file after server start will span a shorter period than the following ones. The default value will result in one split log file per week. Log file splits by time and by size (log_split_mb) can both be set and coexist independetly. Log files will be split whenever any of the two split conditions become true.



log_split_mb Gruppo: log verbosity Tipo: intero Default: 50 Dalla: NG 0.60
When output to log files is enabled in log_targets variable and this value is nonzero, the log will be split whenever its size reaches log_split_mb megabyte. That means, the current log file will be closed and renamed to a file of pattern opennap-log-yyyymmdd-nn.txt, where yyyy is the current year, mm is the current month, dd is the current day and nn is the index of that logfile. Opennap NG will never overwrite existing logfiles when splitting multiple log files a day but always increase the index number to the first non-existing filename of that day, instead. Log file splits by size and by time (log_split_hours) can both be set and coexist independetly. Log files will be split whenever any of the two split conditions become true.



log_targets Gruppo: log verbosity Type: bitmap Default: 2 Dalla: NG 0.60
This variable specifies the output targets of log messages of any sort. It is a bitmap variable with the following target options:

Value  Target Notes
1 Standard output channel This is the terminal or console (window) in which Opennap NG was started.
2 Log &LOG channel A pseudo chat channel maintained by the server, to be joined by authorized clients
4 Log file File opennap-log.txt in the data directory on the local harddisk of the server

Standard output channel &LOG channel refers to the pseudo chat channel of the same name which may be joined by any Admins and Elites via their client. Log file refers to the log file opennap-log.txt which will be written into the data directory of Opennap NG. Note that existing log files will never be appended nor overwritten on server start. Instead, existing opennap-log.txt files will be removed to files of the naming scheme opennap-log-yyyymmdd-nn.txt, where yyyy is the current year, mm is the current month, dd is the current day and nn is the index of that log file within that day. Example: to enable log output to &LOG channel and log file but not to stdout, set this value to 6.



log_timefmt Gruppo: log verbosity Type: string Default: none Dalla: NG 0.47H
If set then this variable specifies a time format which is used to create a time / date string. This date string is prepended to each line which is logged to stdout / the log file / channel. The format of log_timefmt must be according to the options of the GNU LIBC strftime() function. It's made up of conversion specifiers which compose the format of the time output (similar to the printf() function variants). A description of all conversion specifiers is beyond the scope of this manual. Look into the GNU LIBC documentation of the function strftime() for that. Only some useful examples are given here:

Format: Output: Description
%H:%M:%S: 12:34:56 <hour>:<minute>:<seconds>:
%m-%d %H:%M  09-23 12:34 <month>-<day of month> <hour>:<minute>
%a %H:%M:%S Tue 12:34:56  <weekday> <hour>:<minute>:<seconds>:



login_interval Gruppo: flood protection Tipo: intero Default: 0  
Specifies how often (in seconds) clients from the same IP address are allowed to connect to the server. This allows you to ignore clients which are reconnecting too fast. Reasonable values are 5 to 30 (seconds). A value of 0 disables the check. Also see register_interval.



login_timeout Gruppo: flood protection Tipo: intero Default: 60  
If a client has not completed the login process after this number of seconds, it will be disconnected. This is to prevent malicious parties from trying to open up many sockets to the server.



loopcount_ output_ interval Gruppo: log verbosity Tipo: intero Default: 1000 Dalla: NG 0.47H
If non-zero, specifies the interval for executed main loop iterations being logged (with Debug level). Number of main loop iterations is a rough measure for servicing activity and efficiency since server start. The default value means that every 1000th main loop iteration will be logged.



max_block_ pct Gruppo: gestione utenti Tipo: intero Default: 0 Dalla: NG 0.49
If this value is nonzero it specifies the maximum percentage of blocked files which are allowed per user. If i.e. a user attempts to share 2000 files but 1800 of them are blocked (90%) the user may not be suitable or welcome to the server at all. Files may be blocked because they match patterns in the opennap-block.txt file or are too small (min_file_size) or too large (max_file_size). If the percentage of blocked files of a user is higher than this value and max_block_pct_ban_ttl is nonzero, the user will be immediately banned. Mods+ will never be banned. Banning users who attempt to share a great amount of blocked files also reduces waste of internet bandwidth. The valid range for this value is 0 to 100. A value of 0 disables this feature. 75 seems to be a fair value for public servers. Reduce it to 50 or less to be more restrictive, but possibly also lose interesting content.



max_block_ pct_ban_ttl Gruppo: gestione utenti Tipo: intero Default: 60400 Dalla: NG 0.49
If max_block_pct is set and a user attempts to share more than that percentage of blocked files, the user will be banned for this number of seconds. The default value is one week. This is a reasonable value since you deal with users who share a great amount (percentage) of stuff you don't want to have on your server, and experience has shown that the vast majority of users being banned for that wouldn't quickly change their entire shares just to get on a particular server or network.



max_browse_ num Gruppo: performance Tipo: intero Default: 0 Dalla: NG 0.60
If nonzero, limits the number of browses a regular user may issue, no matter whether they are direct browses or server based browses. If a client requests to issue more browses than this number, they will be ignored and Mods+ will be notified about the attempt.



max_browse_ result Gruppo: performance Tipo: intero Default: 500  
If nonzero, limits the output of a server browse to this number of files. Because of the limit imposed by client_queue_length, the number of files returned by a browse command is limited to this number. If this is too large, clients will be disconnected when they browse a user with many files. There is also a consideration of bandwidth, a high browse limit imposes a large amount of uplink bandwidth. Mods+ are exempt from this limit, however they are still limited by the max_shared value for the client being browsed. This setting has a high influence on the amount of internet bandwidth the server consumes, especially the upstream. If the server consumes too much upstream bandwidth then reduce this value to 200 or 100. If upstream bandwidth is no issue for you then you may increase this to 1000, 2000 or more. The default value is appropriate for servers running via DSL connections.

Note: this limit affects only server based browses. No limit is imposed on direct browses (client to client connections) since the server doesn't control data exchange in that case. Direct browses save server network bandwidth and are therefore the preferred method. Whether direct browses can be performed depends on which client programs are involved. Many client programs don't support direct browses yet. Both (requestor and responder) must support it in order to work and allow unlimited browsing.



max_channel_ length Gruppo: chat control Tipo: intero Default: 32  
Specifies the max number of characters allowed in a channel name.



max_client_ string Gruppo: gestione utenti Tipo: intero Default: 32  
Specifies the max number of characters allowed in the client version string.



max_clones Gruppo: flood protection Tipo: intero Default: 0  
When set to a value greater than 0, the server will only allow this many connections from the same IP address, to limit clones. Also see login_interval and clones_allow_level. A value of 2 should be acceptable, as this description states.



max_ command_ length Gruppo: flood protection Tipo: intero Default: 2048  
When set to a value greater than 0, the server will disconnect any client that sends a command longer than this value. Clients that trigger this are either attempting to flood the server or are out of sync. Actually, the default value of 2 KB should not be changed,. as most clients don't issue larger commands anyway, while all clients assume at least this command size to be accepted.



max_ connections Gruppo: performance Tipo: intero Default: 1000  
When set to a value greater than 0, the server will only allow this many clients to log into the server. If max_connections users are already logged in and new users try to login they will be disconnected with a server full response. This is one of the most important server settings, as it specifies the general user capacity the server will be able to serve. This setting strongly affects CPU consumption, RAM consumption and internet bandwidth consumption of the server. Lower it to reduce server demands regarding those items. A more dynamic way of limiting connections with regard to server resource usage is max_mem. See also: connection_hard_limit.

Warning: when setting this variable to 0 or a value larger than your operating system limit the server may crash as soon as the number of connections gets close to the OS limit. For all Linux versions < 2.4.x this is 1000. Also consider increasing RAM, CPU and bandwidth consumption of high numbers of connections. Heavy lag and timed out connections are mostly the result of a too high value for max_connections. A typical P5-II class machine should be able to safely handle ~500 connections, a P5-III ~1000 and a P5-IV up to 2000 connections (if your OS permits it). Higher numbers may be feasible depending on other settings like max_shared, max_browse_result, max_searches_per_minute and some other flood protection settings.



max_data_size Gruppo: Unix specific Tipo: intero Default: 0  
Sets the maximum amount of memory the process may consume. If this limit is reached further attempts by Opennap NG to allocate memory will fail. This will usually cause the servere to terminate immediately. Use max_mem as a softer alternative to limit memory consumption without terminating the server when the limit is reached. Also see max_rss_size.



max_file_size Gruppo: content management Tipo: intero Default: 0 Dalla: NG 0.49
Set the upper limit of filesize (in bytes) which a single file must at most have to be shared. If the max_file_size is 0 then there is no checking on this parameter. Limiting the maximum size of files makes sense if you want to avoid complete CD or DVD images being shared, possibly for legal reasons. A value of 150 000 000 (150 MB) is recommended, if you want to allow music files, complete albums (as single files) and video files of limited size only, but no full CD images.



max_hotlist Gruppo: performance Tipo: intero Default: 32  
When set to a value greater than 0, the server will only allow each user to have this many entries on their hotlist.



max_ignore Gruppo: performance Tipo: intero Default: 32  
When set to a value greater than 0, this server will only allow each user to have this many entries on their ignore list. If the user tries to ignore more users those requests will simply be ignored. Depending on the setting of log_ignore_abuse such an event may be logged or not.

Note: a client may implement its own management of ignoring other users. This variable has effect only if the client requests ignores on the server. Most clients do so as this is part of the protocol and simpler for them to implement.



max_login_ban_ttl Gruppo: flood protection Tipo: intero Default: 86 400 Dalla: NG 0.60
If nonzero and max_login_count and max_login_time are also set, this variable specifies the period for which login flooders are automatically banned. The default is 1 day.



max_login_count Gruppo: flood protection Tipo: intero Default: 10 Dalla: NG 0.60
If nonzero and max_login_ban_ttl and max_login_time are also set, login flood protection is enabled. It aims at clients which connect and disconnect to the server very often. This can be due to network trouble, wrong client settings (in particular wrong or outdated server lists) or due to intentionallay flooding the server. Especially if clients have large filelists to share, frequent reconnecting virtually results in server flood. Note that disabling ghost_kill doesn't protect from this, as there are no ghosts being involved at all in most cases. This variable specifies the maximum number of logins a client may perform within max_login_time seconds. If a client disconnects and attempts to reconnect more often than this it will be banned for max_login_ban_ttl seconds. The default values allow a maximum number of 10 logins per hour. Any client exceeding this can certainly be assumed to be either in trouble or hostile.



max_login_time Gruppo: flood protection Tipo: intero Default: 3600 Dalla: NG 0.60
If nonzero and max_login_ban_ttl and max_login_count are also set, login flood protection is enabled. It aims at clients which connect and disconnect to the server very often. This can be due to network trouble, wrong client settings (in particular wrong or outdated server lists) or due to intentionallay flooding the server. Especially if clients have large filelists to share, frequent reconnecting virtually results in server flood. Note that disabling ghost_kill doesn't protect from this, as there are no ghosts being involved at all in most cases. This variable specifies the period within at most max_login_count logins by one particular user are perimtted. If a client disconnects and attempts to reconnect more often it will be banned for max_login_ban_ttl seconds. The default values allow a maximum number of 10 logins per hour. Any client exceeding this can certainly be assumed to be either in trouble or hostile.



max_mem Gruppo: performance Tipo: intero Default: 0 Dalla: NG 0.60

If nonzero, imposes a (very) soft limit on maximum main memory to be used by Opennap NG. If Opennap NG has allocated more than max_mem MB of RAM, it will reject any further logins by ordinary users. Only if memory usage drops below this value further logins will be allowed again. Memory usage drops whenever users disconnect from the server for any reason, freeing less or more file information they were sharing. This variable can be regarded a dynamic replacement for max_connections. It will not start rejecting logins when a fixed maximum number of users has connected but when the RAM usage of Opennap NG starts exceeding a predefined limit. However, there are two important issues to keep in mind when setting this value:

  1. Opennap NG calculates its current RAM consumption by the total amount of MB it has requested from the OS. The actual amount of MB allocated by the OS for the Opennap NG process is always higher, typically between 20% and 30%. (Only on Unix: see VMSize reported by OS and wasted RAM values in memory stats output to learn how much extra memory is allocated for Opennap NG by the OS.) Since the amount of memory actually allocated by the OS can't be determined easily on every platform and since usually that value barely or never shrinks, it is unsuitable for calculation of memory consumption by Opennap NG in this context.

  2. Even though there will be no new logins from the time when this limit has been reached, this doesn't mean that RAM consumption won't increase much further! Existing connections won't be disconnected or limited in their actions. A significant number of clients might still be uploading file lists while the limit has been reached, hence additional RAM may be allocated by Opennap NG still. The amount by which this limit will eventually be exceeded mostly depends on the current number of users uploading (as visible in user stats). You should typically expect Opennap NG to allocate a peak amount of RAM which is between 10% and 30% higher than the limit specified by this variable. So this is a very soft limit, indeed.
If you have 400 MB of free RAM to spend for Opennap NG, setting this variable to 250 would be a safe setting. A value of 350 or higher would not be. Also note that this setting is not available if Opennap NG was compiled with --disable-meminfo configure option.



max_new_ users_count Gruppo: performance Tipo: intero Default: 20 Dalla: NG 0.47H
When max_new_users_count and max_new_users_time are set to nonzero the rate at which new users can connect is limited. During each interval of max_new_users_time seconds at most max_new_users_count users can connect. Further connection requests are refused until the next interval of max_new_users_time begins. This is to avoid splits and timeouts due to the fact that 2000 users who want to connect to the freshly advertised server simultaneously produce a pretty nice bandwidth peak. The default values allow up to 20 users to connect per 10 seconds (or 2 users per second in average).



max_new_ users_time Gruppo: performance Tipo: intero Default: 10 Dalla: NG 0.47H
When max_new_users_count and max_new_users_time are set to nonzero the rate at which new users can connect is limited. During each interval of max_new_users_time seconds at most max_new_users_count users can connect. Further connection requests are refused until the next interval of max_new_users_time begins. This is to avoid splits and timeouts due to the fact that 2000 users who want to connect to the freshly advertised server simultaneously produce a pretty nice bandwidth peak. The default values allow up to 20 users to connect per 10 seconds (or 2 users per second in average).



max_nick_ length Gruppo: gestione utenti Tipo: intero Default: 19  
If set to a value greater than 0, this specifies the max number of characters allowed in a nickname.



max_queue_notify Gruppo: mod+ notifcation Tipo: intero Default: 200 Dalla: NG 0.60
If set to a value greater than 0, Mods+ will be notified whenever the upload queue of a client exceeds this size. It means that the client has very many upload requests pending and processes them either too slowly or not at all. In most cases this actually indicates freeloaders. Many users tend to limit their upload bandwidth to unreasonable values of 2 KB/sec. or less, taking requestors and network staff for fools. Mods+ should check those users, possibly ask them why their queue is so long, ask them to increase their output or possibly even eject them due to freeloading. Even users who share large amounts of presumably great stuff are not beneficial for a network if they don't allow any (or very few only) uploads.



max_reason Gruppo: performance Tipo: intero Default: 96  
If set to a value greater than 0, this specifies the max number of characters allowed in the "reason" strings for such commands as ban, kick and kill.



max_results Gruppo: performance Tipo: intero Default: 100  
If set to a value greater than 0, this specifies the max number of search results that are returned to a client.



max_rss_size Gruppo: Unix specific Tipo: intero Default: 0  
Sets the maxiumum amount of real memory a process is allowed to consume . Any excess will be swapped to disk. Also see max_data_size, lock_memory and max_mem



max_searches_pending Gruppo: performance Tipo: intero Default: 3  
Specifies the maximum number of pending searches a user is allowed to have. Once this threshold is reached, no more searches can be issued until one of the others has completed.



max_searches_ per_minute Gruppo: flood protection Tipo: intero Default: 2  
Set the maximum number of searches (tag 200) a client is allowed to make during his connection. A value of 0 does not check the number of searches at all. This limit is calculated by using: ( count200 - evaluate_search_abuse_after_tags ) / onlinetime. So a value of 2 searches should be sufficient.



max_shared Gruppo: content management Tipo: intero Default: 5 000  
If set to a value greater than 0, this specifies the max number of files that any client may share. This also affects the maximum number of browse results for Mods+ (they are exempt from the normal max_browse_result). This setting strongly affects RAM consumption and also affects internet bandwidth consumption of a running server. Increase this value if you have plenty of them left to spend. Decrease this value (or max_connections) if RAM consumption tends to grow too large after the server has been running for some hours. Also regard there may still be some users who like to share 20 000 files and more. They could feel disgusted if this value is too low, especially if they get additionally annoyed by verbose_too_many being on and notify_exceed_frequency being too low.



max_tags_ per_minute Gruppo: flood protection Tipo: intero Default: 2  
Set the maximum number of certain tags per minute a client could issue to the server. Some analysis showed that the tags 218, 219 and 700 were abusively used by some buggy clients. When the client has more than max_tags_per_minute tags the request is simply ignored.



max_time_ delta Gruppo: network Tipo: intero Default: 90  
Specifies the maximum number of seconds of difference in clock time between two servers in order for them to be able to link. Note that if this value is set too large, users can gain ops in channels even if they were not the first user to join the channel. A value of 0 will turn off this check completely.



max_topic Gruppo: chat control Tipo: intero Default: 64  
If set to a value greater than 0, this specifies the max number of characters allowed in a channel topic.



max_ uploading Gruppo: performance Tipo: intero Default: 200 Dalla: NG 0.49
If non-zero, limits the number of concurrent filelist uploads by clients. Most clients start to transmit their shared files lists immediately after connect. If many files are to be shared by clients this can mean an excessive incoming traffic for the server, especially shortly after the server has been started. Server overload and significant lag can be result of this. With this setting, if more than this number of clients are currently uploading, new logins are rejected until some clients have finished uploading their filelists. The stats log output shows how many users are uploading. However, for technical reasons the value being displayed isn't quite precise and usually a bit higher than the actual number of clients uploading. So it's recommended not to set this value too low, as on large servers this could not only limit incoming traffic but also the number of users being able to connect at all. Don't set this value lower than 50 for small servers. For large servers, values of 200 or 300 are recommended.



max_user_ channels Gruppo: chat control Tipo: intero Default: 5  
If set to a value greater than 0, this specifies the max number of channels a user is allowed to join.



max_whois_ ban_ttl Gruppo: flood protection Tipo: intero Default: 86400 Dalla: NG 0.49
If max_whois_count, max_whois_time and this value are non-zero, determines the ban TTL in seconds for excessively whois'ing clients. The default value is one week.



max_whois_ count Gruppo: flood protection Tipo: intero Default: 0 Dalla: NG 0.49
If non-zero, specifies how many whois requests a user may issue within max_whois_time seconds. If the user exceeds this number of whois requests and max_whois_ban_ttl is non-zero, (s)he gets banned. Excessive numbers of whois requests are emitted automatically by some clients with certain settings, when users want to be selective (or denying at all) regarding their uploads, at the expense of server bandwidth. Most server owners don't want to support such behaviour. Since occasional whois'ses of other users aren't anything hostile, if non-zero, this value should not be set too low. A number of 20 whois requests per hour should be tolerable. Excessive clients will exceed this number by far quickly.



max_whois_ time Gruppo: flood protection Tipo: intero Default: 0 Dalla: NG 0.49
If non-zero, specifies the period for max_whois_count in seconds. Recommended is a value pair of count 10 to 20 and time 3600 (1 hour)..



min_file_size Gruppo: content management Tipo: intero Default: 0 Dalla: NG 0.47H
Set the lower limit of filesize (in bytes) which a single file must at least have to be shared. If the min_file_size is 0 then there is no checking on this parameter. If a user tries to share files with a size of less than min_file_size the user will receive a server message informing him about the rejected file. It should be considered that the Napster protocol isn't well suited to transfer large numbers of small files. Also, a significant amount of common small files consists of either images of unwelcome (or dangerous) kind or simply crap, like icon libraries, DLL files, installed driver files or simply fakes! Although noone will be interested in crap it may consume (waste!) significant amounts of server resources if not being filtered out. That's why for public servers a value of 100000 to 300000 (100 to 300 KB) is recommended, although this may suppress a small number of desired small files as well.



min_nick_ length Gruppo: gestione utenti Tipo: intero Default: 0 Dalla: NG 0.60
If set to a value greater than 0, this specifies the minimum number of characters allowed in a nickname.



min_read Gruppo: network Tipo: intero Default: 0  
If not 0 specifies the minimum number of bytes expected to be read from a connection. If less than min_read bytes are read the number of bytes read will be logged.



motd_fmt Gruppo: user notification Type: bitmap Default: 255 (0xFF) Dalla: NG 0.60
This is a bitmap variable, specifying which items to show in the MOTD, prior to the custom MOTD file. Available items and associated values are summarized in the table.
Value  Meaning
1 Show custom MOTD file
2 Show IP address of connecting client
4 Show server uptime
8 Show user numbers of server
16 Show files numbers server
32 Show some performance stats, i.e. number of processed searches, public and private messages
64 Show minimum file requirements
128 Show some additional server rules as defined by server settings
For instance, to show all items but server rules and client's IP address, set this value to 1 + 4 + 8 + 16 + 32 + 64 = 125.


nick_expire Gruppo: gestione utenti Tipo: intero Default: 604 800  
Specifies the time in seconds of after which unused registered user are expired and returned to the pool of available nicknames. Only regular users with no flags set can expire after this time. User accounts with the Friend flag set may expire after friend_expire seconds. Accounts of Mods+ and higher levels never expire. The default for this variable is 1 week. See also auto_register.



no_mod_ annoying Gruppo: mod+ notification Type: boolean Default: off  
When set to on mod+ are exempt from the notification of tag abuse. This only affects mod+ who are on a server where notify_user_abuse is set to on.



no_share_ level Gruppo: security Tipo: intero Default: 4 Dalla: NG 0.49
If nonero, specifies the user level from which on no shares are accepted. I.e. the user will always be listed as sharing 0 files, even if the client is configured to share files. This is helpful for Elites and Admins who connect to multiple networks with the same client and shares setting but don't want to share any files in the network where they are Elite or Admin, due to legal trouble, for instance. Meaningful values are 0 == no sharing restrictions, 2 == Moderators, 3 == Admins, 4 == Elite. The default value 4 means that all Elites won't appear sharing any files, regardless of their client settings.



notify_block_ sources Group: mod+ notification Tipo: intero Default: 2 Dalla: NG 0.60
This variable specifies what sorts of blocked files Mods+, the log and possibly the user are reported. On the first blocked file encountered from the filelist of a client during its upload process, this variable specifies what sorts of the following files should be reported. The variable notify_block_targets specifies to what targets the reports should be delivered. The following table shows valid values for this variable:
Value  Meaning
0 Don't report any files, neither blocked nor criminal
1 Report all files that match REs of class blocked or that don't match any REs of class must match (if any exist)
2 Report all files that match REs of class criminal
3 Report all files that match either of the above classes
4 Report all files the client is sharing subsequently (warning: produces very much output!)



notify_block_ targets Group: mod+ notification Type: bitmap Default: 1 Dalla: NG 0.60
This variable specifies what targets are informed about blocked or criminal files. Variable notify_block_sources specifies what sorts of files are to be reported. This variable is a bitmap where the following targets can be independently enabled and disabled:
Value  Target
1 Attempts to share blocked files will be noted in the log
2 Mods+ will be notified about blocked files
4 The user who is attempting to share the blocked file will be notified which file(s) from him are rejected



notify_exceed_ frequency Gruppo: user notification Tipo: intero Default: 10 Dalla: NG 0.47H
Frequency of notifications which are sent to a user if he keeps trying to share files beyond the max_shared limit. The default value of 10 means that for every 10 rejected files the user gets one notification. The higher this value the less network bandwidth will be wasted.



notify_mod_ abuse Gruppo: mod+ notification Type: boolean Default: on  
When set to on the abuse of the tags mentioned above is reported to the mod+ users on your system.



notify_mod_ abuse_ frequency Gruppo: mod+ notification Tipo: intero Default: 100  
When notify_mod_abuse is set to 1 then this following var reports the frequency of notifications which are sent. A notify_mod_abuse_frequency of 100 means that every 100th abuse per user is reported via notify_mods().



notify_no_ uploads Gruppo: mod+ notification Tipo: intero Default: 10 Dalla: NG 0.60
If nonzero, this variable enables notification of Mods+ on clients who share many files but have no uploads after a reasonable period. This usually suggests they either share crap only which no one is interested in, or they are actually freeloaders, i.e. they share files but don't allow any uploads. The notification message is: "Crap or freeloader alert: user x!y (z) shares n files for m minutes but has no uploads!" The period between a non-uploading user connecting and this notification being eemitted is inversely proportional to the number of files he shares. I.e. the more files are shared with no uploads the earlier the notification occurres and vice versa. Notifications are only generated on users sharing at least 500 files. Currently this variable should be set with one of the predefined values listed below. The columns show after what time notifications are generated for users who share the respective number of files but have no uploads within the period.
Value  Name 500 files 1000 files 3000 files
0 Off - - -
3 Tight 100 minutes   50 minutes   16 minutes
10 Normal 5.5 hours 2.7 hours 55 minutes
30 Relaxed   16.6 hours 8.3 hours 2.7 hours



notify_user_ abuse Gruppo: user notification Type: boolean Default: off  
When set to on the abuse of the tags mentioned above is reported to the user issueing the tag via a privmsg.



notify_user_ abuse_ frequency Gruppo: user notification Tipo: intero Default: 1000  
When notify_user_abuse is set to on then this following var reports the frequency of notifications which are sent. A notify_user_abuse_frequency of 1000 means that every 1000th abuse per user is reported via privmsg to the user.



notify_user_ block Gruppo: user notification Type: boolean Default: off  
When set to on a user will receive a server response for every blocked file he tries to share. This is a way to let the user know which of his files are blocked.



persistent_filter Gruppo: flood protection Type: boolean Default: off Dalla: NG 0.60
The server keeps a list of filtered search keywords which are too common to yield useful results without severe usage of server resources. keywords in that list will be ignored on searches for files. A predefined list of filtered keywords is loaded on each server start. Unless persistent_filter is set to on, the server won't change this file. The list of filtered keywords may grow in server memory as it runs, but won't be stored in the file. This way, after each server restart the filter list will be the same. This is the behaviour of earlier Opennap NG versions. If persistent_filter is enabled, the server will periodically store the updated list of filtered search keywords. But beware: this list (and the file as well then) can only grow, they will never shrink! This can easily lead to a situation in which many hundreds of keywords become filtered, even rather particular ones like certain artist's names, which will prevent files by those artists to be searchable by their name at all. If persistent filters are enabled, server owners should check from time to time the contents of this file and remove some potentially indispensable key words. Raise file_count_threshold to reduce chances of particular keywords to get into the filtered list. In fact, setting this to on is not really recommended.



portscan_ban_ttl Gruppo: gestione utenti Tipo: intero Default: 21 600 Dalla: NG 0.60
Users who can't provide an open port for others to connect need to configure their client to operate in firewalled (port 0) mode. However, a number of users fails to do so. Their client announces a connect port being available, while it is actually not. This makes those clients freeloaders, as no one will be able to connect to them in order to download from them. If portscan_notify is nonzero, Opennap NG tries to connect to clients which announce open ports, to verify they're actually open. If they are found not to be open notifications will occur as specified by that variable. If portscan_ban_ttl is nonzero, clients with announced but unconnectable ports are automatically ejected and banned. Otherwise just notifications will take place. Portscanning of clients doesn't take place immediately after they connect. Instead, Opennap NG will wait until they have finished uploading their filelists and start sending other requests. Clients which have connected in firewalled (port 0) mode already, aren't scanned. The possible values for this variable



portscan_notify Gruppo: gestione utenti Tipo: intero Default: 0 Dalla: NG 0.60
Users who can't provide an open port for others to connect need to configure their client to operate in firewalled (port 0) mode. However, a number of users fails to do so. Their client announces a connect port being available, while it is actually not. This makes those clients freeloaders, as no one will be able to connect to them in order to download from them. If this variable is nonzero, Opennap NG tries to connect to clients which announce open ports, to verify they're actually open. If they are found not to be open notifications will occur as specified by this variable. If portscan_ban_ttl is nonzero, clients with announced but unconnectable ports are automatically ejected and banned. Portscanning of clients doesn't take place immediately after they connect. Instead, Opennap NG will wait until they have finished uploading their filelists and start sending other requests. Clients which have connected in firewalled (port 0) mode already, aren't scanned. The possible values for this variable are as follows:
Value Meaning
0 Disable active portscanning
1 Write message into log if client port found not open
2 Notify all Mods+ if client port found not open
3 Both write message to log and notify Mods+ if client port not open
Users may be informed about their misconfiguration when they are banned if the respective bit in verbose_ban_msg is set.



ping_interval Gruppo: network Tipo: intero Default: 600  
Specifies the interval (in seconds) of how often to sping peer (linked) servers.



protnet Gruppo: security Type: string list Default: * Since NG 0.46
Protnet is a set of protections granted to an Elite user on the defined IP or list of IPs. The elite is protected from being killed, mkilled, their password changed, or account nuked, and their server killed, by someone NOT on the protnet, even if they are elite. The default setting works like normal, any elite can kill other elites, etc. Note, the protection only works on your own server, it can't protect you on another server, etc.

Example: protnet 128.1.128.1,192.168.0.*



register_ interval Gruppo: flood protection Tipo: intero Default: 0  
Specifices how often (in seconds) clients from the same IP address are allowed to register new nicknames. This can be used in conjunction with auto_register to block web/clone clients which attempt to log in with random nicknames.



registered_ only Gruppo: gestione utenti Type: boolean Default: off  
When set to on, the server only allows logins from registered clients. Also see auto_register, register_interval.



remote_browse Gruppo: performance Type: boolean Default: on  
This variable controls whether or not the server supports remote browsing (where the client being browsed is not on the same server). In large networks, remote browsing can account for significant cross server traffic, increasing lag. Lopster or TekNap supportīs for clients to directly browse eachother outside of the servers, which is the recommended approach.



remote_ config Gruppo: security Type: boolean Default: on  
If set to on then admins from other servers are permitted to change configuration values on this server.



report_ip Gruppo: GotNap support Type: string Default: value of server_ name  
Sets the IP address this server listens on to be reported to Napigator (GotNap).



report_name Gruppo: GotNap support Type: string Default: value of server_ name  
Sets the name of the server reported to Napigator (GotNap).



report_port Gruppo: GotNap support Type: string Default: value of server_ ports  
Sets the TCP port this server listens on to be reported to Napigator (GotNap).



restrict_ registration Gruppo: gestione utenti Type: boolean Default: off  
If set, disallow the automatic registration of new nicknames by clients as they log in for the first time. The only way to create new nicknames (accounts) is then to use the administrator commands to register, or by editing the users file directly (when the server is not running). This option is typically used with the registered_only option to run a private, access-controlled server where users need accounts before they can log in. For public servers this setting should remain off, to offer users the option to register themselves, for instance to avoid nick collisions.



search_max_ cache_entries Gruppo: performance Tipo: intero Default: 500  
To give the hub in a distributed network some relief and to speed up repeated searches an internal cache is maintained. How many searches should be cached? The default value is 500 searches. You can query the cache stats using /raw 10116. The format of the output is: Counter Rank Usage Starttime LastUsedTime SearchString



search_timeout Gruppo: network Tipo: intero Default: 180  
When servers are linked, searches will be timed out if no response has been received after this many seconds. This forces the server to send the final ack to the client.



server_alias Gruppo: GotNap support Type: string Default: none  
Allows you to specify an alternate name by which the server refers to itself. This is useful for connecting a "hidden" hub (routing-only) server, or if you just want to use a shortcut for the full DNS name.



server_chunk Gruppo: performance Tipo: intero Default: 0  
If not 0 then this is the minimum amount of data to queue before being sent to another server. If less data is to be sent the transmission will be delayed.



server_name Gruppo: network Type: string Default: Hostname  
Specifies the server's DNS name.



server_ports Gruppo: network Type: string Default: 8888  
This option specifies a list of TCP ports which the server should listen on for client connections. Each port number should be separated by whitespace.



server_ queue_ length Gruppo: network Tipo: intero Default: 1 024 000  
Specifies the maximum number of bytes that can be queued for a server connection before it is considered dead.



set_group Gruppo: Unix specific Type: string Default: nogroup Dalla: NG 0.60
This variable specifies either the name or number (GID) of a valid Unix group of your system. If the server is started as root, it will, after performing some initializations, drop its privileges and continue executing with the effective access rights of this group. Specify 0 or "root" if you explicitly want the server to execute with root group rights. That is not recommended, of course.



set_process_priority Gruppo: performance Tipo: intero Default: 2 Dalla: NG 0.60
If nonzero, attempts to change the priotity of the Opennap NG process on startup, i.e. lower it. It is recommended to let Opennap NG run on a lower or even lowest process priority. It's a common misconception that low server priority means less performance, significantly greater lag or lower execution speed. This is not true. See the Opennap NG FAQ for a more detailed description about this issue. This variable can have three values:
Value Meaning
0 Don't alter process priority on startup
1 Reduce process priority to lower priority
2 Reduce process priority to lowest priority



set_server_ nicks Gruppo: security Type: string list Default: (null)  
This is a list of names of users who are allowed access to raw 9998 and 9999. The users must still be elite, this adds another layer of security to restrict exactly who is allowed access. I suggest not doing wildcards in this list.



set_user Gruppo: Unix specific Type: string Default: nobody Dalla: NG 0.60
This variable specifies either the name or number (UID) of a valid Unix user of your system. If the server is started as root, it will, after performing some initializations, drop its privileges and continue executing with the effective access rights of this user. Specify 0 or "root" if you explicitly want the server to execute with root user rights. That is not recommended, of course.



stat_click Gruppo: log verbosity Tipo: intero Default: 60  
Specifies how often (in seconds) the server should send updates about server statistics (users/files/gigs) to the clients.



stats_fmt Gruppo: log verbosity Type: bitmap Default: 255 (0xFF) Dalla: NG 0.60
this bitmap variable enables or disables particular sections in the frequently emitted stats output. Note that this setting only applies to stats emitted every stats_click seconds to log_targets. If enabled by live_stats, the opennap-state.txt file always contains all of the sections being listed here.
Value (dec)  Value (hex)  Section  Statistical information about
1 0x001 Time current time, server start time and server uptime
2 0x002 Clients local and global users, connects, disconnects, portscans, activities
4 0x004 Files local and global library sizes, changes, averages and requests
8 0x008 Memory current and total numbers, capacities and averages of memory allocations
16 0x010 Load CPU utilization, kernel usage and tags processing performance
32 0x020 Traffic internet bandwidth being utilized, amount of MBs being sent and received
64 0x040 Searches file searches numbers, throughput and capacities
128 0x080 Messages private and public messages throughput
256 0x100 Disconnects  numbers and reasons of disconnects
512 0x200 Rejects numbers and reasons of clients which couldn't login



stats_port Gruppo: GotNap support Tipo: intero Default: 8889  
Specifies the TCP port on which the server should listen to reports stats. Typically used by Napigator (GotNap). If this port is set to -1, the server will not listen for stats reporting at all.



stat_server_ host Gruppo: GotNap support Type: string Default: report.gotnap .com  
Sets the DNS/IP address of the Napigator (GotNap) server to report stats. Also see report_name, report_ip, report_port, stat_server_port, stat_server_user, stat_server_pass.



stat_server_ pass Gruppo: GotNap support Type: string Default: none  
Sets the password for your Napigator (GotNap) account to list live server stats.



stat_server_ port Gruppo: GotNap support Tipo: intero Default: 8890  
Sets the port number for your Napigator (GotNap) account to list live server stats.



stat_server_user Gruppo: GotNap support Type: string Default: none  
Sets the username for your Napigator (GotNap) account to list live server stats.



strict_channels Gruppo: chat control Type: boolean Default: off  
When set to on, the server will only allow privileged users to create new channels. Upon startup of the server the channels listed in the channels file are always created.



user_db_interval Gruppo: security Tipo: intero Default: 1800  
Specifies the interval in seconds of how often the server should write out its database files to disk. This is important in case the server crashes prematurely, so that data loss is minimal. The default value of half an hour should be reasonable.



usermode Gruppo: security Type: string Default: all  
Sets the default usermode for mods+ users. Note: this is not to be confused with user levels!



valid_clients Gruppo: gestione utenti Type: string list Default: (null) Dalla: NG 0.47H
If not empty this is a string list of clients that are allowed on your server. The client's identification must match one of the entries to be allowed to connect. The default is empty so there are no restrictions. Some clients can't/don't share, some clients are broken, etc. See also: invalid_clients.

Example: valid_clients *lopster*,*xnap*,*winmx*,*audiognome*



verbose_ ban_msg Gruppo: user notification Type: bitmap Default: 511 (0x1FF) Dalla: NG 0.60
This is a bitmap variable. It allows to selectively enable or disable verbose ban messages, to be sent to users via private message just before they are getting banned (immediately before they are ejected from the server).. Verbose ban messages may help users who are not familiar with Opennap protocol, features and habits better understanding why they are getting banned and what they should change in order to avoid getting banned again later. This may help or encourage users to change their behaviour in order to comply to the server rules next time. Verbose ban messages also inform the user about the duration of the ban. Hence, verbose ban messages can be regarded a matter of politeness. They are typically 2 to 4 lines long each and don't carry weight regarding output traffic, even if your server bans an average of more than 2 users per second (which is an unlikely frequency). See the list of automatic ban reasons, their settings and descriptions for a reference of verbose ban messages which users are sent in case of getting banned. There are no verbose ban messages being sent to users in case they are manually banned by Mods+. The default is to enable all verbose ban messages.

Value (dec)  Value (hex)  Send verbose ban message to user when being banned because of
1 0x001 not sharing enough files (eject_limit_files, eject_limit_libsize)
2 0x002 sharing too many blocked files (exceeding max_block_pct)
4 0x004 flooding the server by too many commands in too short period
8 0x008 too frequent disconnects and reconnects (max_login_count, max_login_time)
16 0x010 excessively whois'ing other clients (max_whois_count, max_whois_time)
32 0x020 upload port of client is unreachable (portscan_notify)
64 0x040 user shared files which matched block expressions of class criminal
128 0x080 user searched for terms which matched invalid search expressions
256 0x100 user was ignoring a Mod+.



verbose_too_many Gruppo: log verbosity Type: boolean Default: on Dalla: NG 0.47H
If a user tries to share more files than max_shared there will be a server response to the user and a log entry informing that no more files of him will be accepted. If this setting is on the names and sizes of the rejected files are evaluated and logged. This can be helpful to find users which share lots of fake or useless files. If this setting is off then names and sizes of files will not be evaluated and logged. This reduces CPU consumption.



warn_time_ delta Gruppo: network Tipo: intero Default: 30  
If the clock on a remote server is more than this many seconds out of sync, opennap-ng will print a warning message. Also see max_time_delta. A value of 0 turns off the warning completely.



who_was_time Gruppo: gestione utenti Tipo: intero Default: 300  
Specifies the number of seconds after a user logs out that information on the client's ip address and server is kept in cache, so that mods+ may perform a whowas command. Note: this only controls how often the cache is purged, so some nicks may appear to be older than this amount.






Napigator (GotNap) support:
you should only need to set stat_server_user and stat_server_pass at the minimum. If you have used your correct DNS name for server_name above, then you don't need to use any of the report_* variables. If Opennap-NG has trouble detecting the proper values to send to Napigator, then you should set the report_* variables appropriately.

See the default opennap-config.txt file (in doc/examples/ directory in source package) as a basis to start your own configuration.






Administration


This section describes how to administer the OpenNap-NG server through the use of a connected client. It is assumed by the time you get here that you have set up at least one Elite level (server owner) account on your server (this is done by the setup program if you installed it that way). The first thing you want to do is log into your server with this account. When you log in, you should see a message from the server on your client, something like:
	server_name set you to level Elite (4).
where server_name is the name of your server. This message will let you know that you have fill privilege to access administrative commands on this server. Clients such as Lopster or TekNap already have all of the OpenNap-NG extensions built into it. Others, such as the official Napster client or WinMX do not (it was not inteded to be used by administrators). If you client is missing functions to directly access these administration commands, not to worry, OpenNap-NG has a way of getting around this. OpenNap-NG provides to pseudo-users, ChanServ for channel related commands, and OperServ for server related commands. For both of these, you can access their functionality by sending a privmsg (instant) message to either of these users (in most clients this will be either /msg user or /tell user).



Auto-ban reasons and variables


The following table summarizes all means and reasons to automatically eject and ban (ab)users from a server. In general, the ban triggers must be set correctly to killban users for the respective ban time.

The recommended ban times take into account the relative commonnesses, significance, server utilization and educational effects of the respective ban reasons. Multiply hour periods by 3600 to get the actual value for the respective TTL variable. Multiply day periods by 86 400 to get the actual value for the respective TTL.

You shouldn't set ban times too short. Don't assume that many of the banned users would quickly change their config / behaviour / shares in order to comply and deserve an early chance to do it better next time they connect. In fact, about 99% of users don't. That means, when the ban TTL for them expires and they reconnect, about 99% of them will soon be banned again for the same reason. The shorter you set ban TTLs the higher is the waste of resources due to increasing numbers of reconnects by have-been and will-be-again banned users. Don't worry about large banlists. Opennap NG is well suited to deal with 10 000, 20 000 or more ban entries without noteworthy performance loss. Messages are currently hardcoded in the server source code and are not customizable.


Ban type: file limits
Since version: Opennap NG 0.45
Description: A client is not sharing enough files to be allowed to stay in the network.
Ban time variable: eject_ban_ttl
Trigger: eject_limit_files, eject_limit_libsitze, eject_leeches, eject_when_full, min_file_size, max_file_size, ascii_filenames_pct, REs of class blocked, REs of class must match
Recommended TTL:    6, 12, 24 or 48 hours
Ban message: You shared less than x files or y GB (n files/z GB)
Verbose message: You have to share at least x files or y GB to stay on this server but you only share n files and m GB!
Regard that the server doesn't accept files smaller than k KB, and certain file types considered useless
may be blocked by server rules as well. Please upgrade your set of shared files if you want to return.
You will be banned for z hours.
   
Ban type: login flood
Since version: Opennap NG 0.60
Description: A client is disconnecting and reconnecting frequently, potentially flooding the server with filelist uploads
Ban time variable: max_login_ban_ttl
Trigger: max_login_count, max_login_time
Recommended TTL:    3, 6, 12 or 24 hours
Ban message: Trouble? x logins in y minutes! Fix your connection problems!
Verbose message: This is your x th login within y minutes! You either seem to be having network or configuration trouble
or attempting to flood the server! Fix your problems. You will be banned for z!"
   
Ban type: whois flood
Since version: Opennap NG 0.49
Description: A client is whois'ing other clients in great numbers. This wastes server resources and often indicates freeloaders.
Ban time variable: max_whois_ban_ttl
Trigger: max_whois_count, max_whois_time
Recommended TTL:    12, 24 or 48 hours
Ban message: Excessive whois'ing: x in y min.! No automated user scans here!
Verbose message: Your client issued x whois requests within y minutes! This is regarded server flooding and user espionage!
Tools doing so inherently, like MXMonitor, are PROHIBITED (not allowed) on this server!
Configure your client to stop emitting whois requests in masses! You will be banned for z hours!
   
Ban type: command flood
Since version: Opennap NG 0.49
Description: A client is flooding the server (issueing too many commands in too short time).
Ban time variable: max_whois_ban_ttl
Trigger: flood_commands, flood_time, flood_eject
Recommended TTL:    6 or 12 hours
Ban message: Flood: x tags in y min! (n searches, m requests)
Verbose message: You were flooding the server: more than x requests in y seconds (z total), n times.
Reduce your activity, i.e. number of file searches or download requests
if you want to come back. You will be banned for m hours!
   
Ban type: too many blocked files
Since version: Opennap NG 0.49
Description: A client shares a too high percentage of files which are blocked
Ban time variable: max_block_pct_ban_ttl
Trigger: max_block_pct
Recommended TTL:    1, 2 or 3 days
Ban message: Shared too many blocked files (x%) y of z files
Verbose message: x percent of the files you wanted to share here were rejected by the server due to block rules!
This suggests you are trying to share a huge amount of needless or illegal crap! This isn't tolerated here!
You will be banned for %.1f hours! Correct your shares if you want to come back!
   
Ban type: upload port not open
Since version: Opennap NG 0.60
Description: A client which announces an open upload port was scanned and the upload port couldn't be accessed, hence making that client a freeloader.
Ban time variable: portscan_ban_ttl
Trigger: portscan_notify
Recommended TTL:    12, 24 or 48 hours
Ban message: Your port x is closed, you're a freeloader! Fix your config!
Verbose message: Your TCP port x can't be connected! However, your client is configured to invite other clients to connect to it!
This way other clients can't download anything from you and hence you are a freeloader, either accidentally or on purpose!
Open your port (adjust your firewall?) or configure your client to operate in firewalled mode (port 0)!
Since this sort of disguised freeloading isn't tolerated here you will be banned for y hours!
   
Ban type: shared criminal files
Since version: Opennap NG 0.60
Description: A client attempted to share files which match criminal class block expressions.
Ban time variable: criminal_ban_ttl
Trigger: REs of class criminal
Recommended TTL:    1 week
Ban message:  
Verbose message: You were attempting to share one or more files on this server which are regarded criminal!
You are banned for x hours! Clean up your shares if you want to return after that!
   
Ban type: invalid searches
Since version: Opennap NG 0.60
Description: A client attempted to search for terms which match invalid search class block expressions.
Ban time variable: invalid_search_ban_ttl
Trigger: REs of class invalid searches
Recommended TTL:    1, 2 or 3 days
Ban message: No searching here for x!
Verbose message: You were searching for terms which are considered invalid by the server owner,
either due to legal reasons or because of potential perversity!
You will be banned for x hours. Cancel your invalid searches if you want to stay here after that.
   
Ban type: Mods+ ignore
Since version: Opennap NG 0.45
Description: A client was ignoring a mod+.
Ban time variable: discipline_ignorers_ban_ttl
Trigger: discipline_ignorers_ban_ttl
Recommended TTL:    1 week
Ban message: Don't ignore a Mod+ ever again!
Verbose message: You are ignoring a moderator, admin or elite of this network! This is prohibited!
Moderators and above are staff members. They manage or own servers or the network.
You have to listen to them carefully and obey their orders if you want to stay on this network!
Blocking any download requests from staff members is not acceptable either.
For this significant violation of server rules you will be banned for x hours.





ChanServ


You can administer chat channels either by using your client's built in functions, or by sending private (instant) messages to the user ChanServ. Note that most all of the following that actually affect the channel require the user issuing the command to be a channel operator.


ban /msg chanserv ban #channel nick ["reason"]
  Places a ban on channel such that nick is prevented from joining. You can optionally give a reason for the ban that will be displayed to the user (Note: if you specify the reason, it must be quoted with double-quotes (") or else the server will only show the first word of the reason).

banclear /msg chanserv banclear #channel
  Removes all bans from the channel.

banlist /msg chanserv banlist #channel
  Displays the list of bans for the channel. Note: this does not work for the official Windows Napster client since it doesn't have support for displaying it.

clear /msg chanserv clear #channel
  Kicks all users in the channel out of the channel, only leaving yourself.

deop /msg chanserv deop #channel nick
  Removes user nick as a channel operator and makes him/her a normal channel user.

help /msg chanserv help
  Displays a summary of all available commands.

invite /msg chanserv invite #channel nick
  Send an invitation to user nick allowing them to join a channel which is set +INVITE.

kick /msg chanserv kick #channel nick ["reason"]
  Kick user nick out of the channel. A reason can optionally be given. Note: if reason is given, it must be quoted with double-quotes (") or else the server will only display the first word.

level /msg chanserv level #channel [level]
  Displays / sets the minimum required user level to be allowed to join a channel.

limit /msg chanserv limit #channel [numusers]
  Displays/sets the maximum number of users allowed to join a channel.

mode /msg chanserv mode #channel [mode [mode ...]]
  Displays/sets the channel mode. If no modes are given, it returns what the current channel mode is. Acceptable modes are:
TOPIC allows any user to change the channel topic (normally only channel operators are allowed)
MODERATED  only channel operators and those who have been given channel voice can speak
INVITE users must be invited before allowed to join
PRIVATE makes the channel not show up in the server's channel list
REGISTERED  (mods+ only) makes the channel persist even when no users are present in the channel, and disallows channel operator to the first user that joins it.

To set a channel mode, prefix it with a plus-sign (+). To unset a channel mode, prefix it with a minus-sign (-). You can specify however many different modes on the same command as you like.
muzzle /msg chanserv muzzle #channel nick
  Prevent user nick from being able to send messages to the channel.

op /msg chanserv op #channel [nick [nick ...]]
  If no nicknames are given, it returns a list of the current channel operators. If given one or more nicknames, each user will be given channel operator status (and thus the ability to execute any of the other channel admin commands).

topic /msg chanserv topic #channel [topic]
  Display / set the channel topic.

unban /msg chanserv unban #channel nick
  Remove channel ban against nick, allowing him/her to join the channel again.

unmuzzle /msg chanserv unmuzzle #channel nick
  Allow a previously muzzled user to send messages to the channel.

unvoice /msg chanserv unvoice #channel nick
  Remove the ability to speak in a +MODERATED channel.

voice /msg chanserv voice #channel nick
  Give the ability for a user to speak in a +MODERATED channel

wallop /msg chanserv wallop #channel text
  Send a message to all channel operators on the channel (that is not seen by other users in the channel).


NickServ


NickServ
is a pseudo-user which provides access to registered user accounts. You can /msg (or /tell) it with the following commands.

ghost /msg nickserv ghost user password
  This command allows you to kill a ghost which is holding your nickame so that you can log in again. user is the nick which is ghosting, and password is the password for that account.

register /msg nickserv register password
  Allows a user to register a nickname that has not been previously registered, such that no other user may use the nickname without the corresponding password.

usermode /msg nickserv usermode [flags]
  See usermode.


OperServ


OperServ
is a pseudo-user which allows mods+ level users to execute server administration command. This is primarily intended for those clients which do not have built in support for these commands, but there is no restriction on its use.

add_server /msg operserv add_server <hostname> <their_pass> <my_pass> <port> [alias]
  Adds a temporary server to the servers list

cloak /msg operserv cloak
  Toggles invisibility to normal users. When cloaked, normal users do not see your real nickname when you perform actions such as kill, ban, etc. Instead, it will display Operator. Other mods+ users still see the real nickname.

config /msg operserv config var [value]
  Display / set a server configuration variable. When value is missing, OpenNap-NG displays the value of var. If value is specified, it sets the configuration variable.

connect /msg operserv connect server [remote_server]
  Links the server running on server. If remote_server is specified, it tries to make a connection from remote_server to server instead of from the local server.

disconnect /msg operserv disconnect server
  De-links a server from the cluster.

killserver /msg operserv killserver server
  Causes the specified server to shut down (terminates the OpenNap-NG process).

links /msg operserv links
  Display a list of all linked servers.

list_server /msg operserv list_server
  Display the servers file, the list of known servers.

reconfig /msg operserv reconfig var
  Resets the configuration variable var to its default value.

rehash /msg operserv rehash [server]
  Causes the server to reload its configuration files.

server /msg operserv server nick
  Displays which server a particular user is logged in through.

stats /msg operserv stats server
  Displays stats about the server (uptime, bytes send/recv'd, etc).

userflags /msg operserv userflags Nick FLAG
  Change userflags of a user. Flags can be Friend or None.

usermode /msg operserv usermode [mode [mode ...]]
  Toggles the various server messages. Each message the server sends to mods+ is given a type so that if you don't want to see a particular type of message, you can simply turn it off and still see the other messages.

ERROR error messages
BAN server-wide ban messages
CHANGE messages about user info being modified (password, etc.)
KILL notifications when users are killed
LEVEL notifications when a user's level is changed
SERVER server link messages
MUZZLE notifications about users being muzzled
PORT notifications about user's data ports being changed
WALLOP messages from other mods+
CLOAK messages about mods+ being cloaked
FLOOD server flood protection messages
PING server ping messages (for lag detection)
MSG private (instant) messages
WHOIS whois notifications

To stop messages of a particular type, simply prefix the mode with a minus-sign (-). If you wish to only see a particular subset of messages, specify the ones you want with no prefix. You can also use the keyword ALL in conjunction with -<MODE> if you want "all but..."

whowas /msg operserv whowas nick
  Displays information about a user that has recently logged out. Information is kept cached for who_was_time seconds.




User levels


Each user on a OpenNap NG server has a level associated with them that tells the server which commands it may execute. When you first log into a server, you start out at level User. Userlevels are changed via a client command. The exact way is client-dependent, please consult the documentation of your client software how to accomplish it. For instance, in Lopster the command to enter at its chat page is /level <username> <level>. Userlevels can bet changed by Moderators, Admins and Elites only. Moderators can just change userlevels between User and Leech, Admins can additionally promote users to Moderators and Elites can set any user to any level. The following user levels are defined by Opennap NG


Level Num.   Description
Leech 0 Leech is a term for someone who is a freeloader. This is the lowest user level of Opennap NG and is given to those users which are misbehaving in some way. Leeches can't do the following things:
  • download files from other users
  • join chat channels
  • send messages to chat channels
User 1

A user is a plain-old-joe. This is what the vast majority of users are. Users may do the following:

  • offer lists of files they share
  • search for files from other users
  • download files from other users
  • upload files to other users
  • send PMs to other users or Mods+
  • join existing chat channels
  • create new chat channels (only if strict_channels is off)
Moderator    2 A moderator, or "mod" for short, has the ability to execute some of the administrative functions on the server. Moderators are especially responsible for keeping the order in chat channels and remove disturbing or otherwise misbheaving users. Moderators are assigned by Admins and Elites. A moderator can:
  • kill - disconnect other users from the server
  • muzzle - prevent other users from sending messages to chat channels or joining channels
  • ban - prevent users from logging into the server
  • change data port - reset the data port your client listens on for file transfers
  • announce - send a message to all users
  • wallop - send a message to all mods+
  • setuserlevel - change a user's level
In addition, moderators have the ability to execute all ChanServ functions to adminster chat channels.
Admin 3 An admin is a special user level which allows you to execute all of the moderator functions, plus the following:
  • link a server
  • disconnect a server
  • give moderator status to other users
  • read (but not write) server configuration variables
Elite 4 An elite user is generally a server owner (the person who actually runs the OpenNap-NG software on their computer). They can basically do whatever they want. Don't step on their toes, these are the people providing you the service!






Stats output


Opennap NG 0.60 comes with a completely rewritten and heavily improved stats output feature. Stats can be emitted to both the configured log channels and a special live stats file. The latter is updated more frequently, usually every 5 to 10 seconds (see variable live_stats), and is used for nearly instant monitoring of server state. It can be directly output via cat command (on Unix) or be used for other, possibly GUI tools to present the current server stats.

On Unix, a typical shell command sequence to watch live stats is the following. You should have a terminal with at least 80x50 text resolution. Higher resolution, especially more rows, are beneficial.
    watch -n 5 cat opennap-state.txt \| head -n 47
You may use head and tail commands with varying numbers to adjust excerpts of the stats file you're particularly interested in. This only works on Unix shells. For Windows there is currently no equivalent for auto-updating the stats from the stats dump file available.

Compared to <= 0.49 stats format, many new output fields were added. Some of them may help you optimizing performance of your server by adjusting settings. Others may be just interesting to watch. Stats are divided into 10 groups (time, user, file, mem, load, traf, srch, chat, dcon, rejc). For the stats output into the log targets (log channel, log file or stdout), stats groups can be enabled or disabled in any combination. The special live stats file is always filled with all available stats groups. A full stats output looks like this:

time: --- Server state dump --- delta:   5 seconds -----------------------------------
time: current time:          Wed May 18 19:26:31 2005  (1116437191)
time: server start time:     Wed May 18 09:24:44 2005  (1116401084)
time: server uptime:         0 days, 10 hours, 1 minutes, 47 seconds (36107 seconds)
user: local users:           1055         d: -3      (100%)
user: global users:          1055         d: +0      Avg. clones: 0.06
user: users uploading:       88           d: +2      (8%)
user: total connects:        67542        d: +11     2 / sec.
user: successful logins:     21299        d: +4      0 / sec.  registered: 1122
user: total disconnects:     70046        d: +14     2 / sec.  IP addr.    999
user: number of ban entries: 4406         d: +0      IBL: 274  d: +0
user: client portscans:      3556         d: +0      0%%  current: 1
user: firewalled clients:    548          d: +1      51%%
user: entries in flood list: 0            d: +0      Whowas list: 1246    d: +0
file: local files count:     1078100      d: +1262   +252   / sec.  (100%)
file: global files count:    1078100      d: +1262   +252   / sec.
file: local library in MB:   27252648     d: +23777                 (100%)
file: global library in MB:  27252648     d: +23   
file: files shared:          7857418      d: +2273   454 / sec
file: files unshared:        6042634      d: +743    148 / sec
file: files blocked:         640106       d: +258    (8%)
file: avg. files / user:     1020         d: +4      MB/file: 25885    d: -7    
file: download requests:     99263        d: +20     4 /sec
file: downloads committed:   160562       d: +31     6 /sec  (161%)
file: entries in file table: 283092                  mallocs per file: 9.1
mem : VmSize reported by OS: 405972   KB  d: +0      wasted RAM: 30%
mem : currently allocated:   283128   KB  d: +255    KB        MemOps/sec: 5584
mem : current allocations:   9849224      d: +8822   average chunk size: 29 bytes
mem : total allocations:     65619730     d: +18373  total frees: 55770506 d: +9551
mem : average KB per user:   268                     bytes/file:  268    
load: CPU load factor:       0.87         d: +0.01   freezes: 0   delta: +0
load: tags processed:        6380128      d: +1866   373    / sec.
load: I/O syscalls:          19201397     d: +4731   946    / sec.
traf: total KB incoming:     969310       d: +309    B/sec:  63447 
traf: total KB outgoing:     110215       d: +23     B/sec:  4772   ratio: 1:8.8
traf: avg. user throughput:  46601        bytes in   5298     bytes out
traf: server based browses:  4208     KB  27422      files   41 browses
srch: searches processed:    185211       d: +26     Search/sec:  5
srch: results delivered:     339995       d: +107    avg. results/search: 1.8
srch: kilobytes delivered:   55433        b/result:  166    b/search: 306
srch: filtered searches      52           d: +0      0%
srch: filtered keywords      838          not found: 0
srch: searches pending:      0            expired:   0         cancelled: 0   
chat: public messages:       0            d: +0      channels:    4
chat: private messages:      119          d: +0      ignored:     1  (0%)
chat: winmx wantqueue waste: 92           d: +0      (77%)
dcon: disconnect reason 1:   1899         d: +1      (2%) no more data
dcon: disconnect reason 2:   12469        d: +2      (17%) login rejected
dcon: disconnect reason 3:   564          d: +0      (0%) ghost kills
dcon: disconnect reason 4:   711          d: +0      (1%) server rules
dcon: disconnect reason 5:   0            d: +0      (0%) can't send to
dcon: disconnect reason 6:   93           d: +0      (0%) login timeout
dcon: disconnect reason 7:   437          d: +0      (0%) ul port closed
dcon: disconnect reason 8:   1506         d: +1      (2%) connection resets
dcon: disconnect reason 9:   1861         d: +0      (2%) timeouts
rejc: login reject reason 1: 0      server is full      51     connecting too fast
rejc: login reject reason 2: 38     too many clones     8646   user is banned
rejc: login reject reason 3: 0      already logged in   33     already registered
rejc: login reject reason 4: 1568   invalid nick        2      invalid client
rejc: login reject reason 5: 2166   invalid password    0      admin connect only
rejc: login reject reason 6: 0      invalid line speed  0      invalid port
rejc: login reject reason 7: 0      restricted server   0      auto-register off
rejc: login reject reason 8: 0      wrong parms client  0      wrong parms server


The following table describes the available output fields and their group belongings. The column "delta" indicates whether for particular stats values deltas are shown or not. Deltas are simply the differences of values between current and previous stats emission. They can be understood as a trend indicator.

Name Delta  Description
section: time
current time - The current time (time when this output was created) in a verbose plain text format, including day of week, date, time and the Unix time number (seconds since midnight 1970.1.1)
server start time - The time when the server was started, also in a verbose plain text format, including day of week, date, time and the Unix time number (seconds since midnight 1970.1.1)
server uptime - Time this server is running without any restart, given in days, hours, minutes, seconds and total number of seconds.
 
section: user
local users Yes The number of users currently being connected to this server. Followed by a percentage value which indicates how many percent of users of the entire network are on this server.
global users Yes The number of users currently being connected to all linked servers of this network.
avg. clones - The average number of clones connected to this server. This is simply the number of locally connected users divided by the number of different IP addresses used by clients, minus 1. For instance, if you have 240 users connected but only 200 different IP addresses are used by them, the average number of clones would be 0.2.
users uploading Yes The number of users who are currently flagged as uploading file lists, i.e. pumping data into your server. This number isn't quite precise. It's usually higher (by 5% - 20%) than the actual number of users uploading, since this flag is only reset if clients start doing anything else (searching, requesting downloads, chatting) after uploading their list. If a client just uploads a list and remains inactive after that, the flag isn't reset for that one. The percentage value indicates how many percent of locally connected users are currently flagged uploading.
total connects Yes This is the number of total connect attempts to this server by all clients. This includes both rejected connecvtions and successful logins. Also shown is the number of connect attempts per second.
successful logins Yes This is the number of connect attempts to this server which succeeded (weren't rejected).
registered - The number of registered users (entries in file opennap-users.txt).
total disconnects Yes This is the total number of disconnects from this server. It includes both rejected logins and connections from successful logins which ended. Also shown is the number of disconnects per second.
IP addr - The number of different IP addresses from which clients are currently being connected to this server. This number is usually a bit smaller than number of local users, indicating that from some IP addresses multiple clients are connected to the server.
number of ban entries Yes This is the number of user entries which are currently banned from this server.
IBL Yes This is the number of users which are currently listed in the IBL of this server.
client portscans Yes The total number of portscans (TCP connect attempts to the ports being announced open by clients).
current - The current number of pending TCP connect attempts to clients, accompanied by a percentage value, indicating how many percent of connected clients are currently being portscanned.
firewalled clients Yes The current number of locally connected clients which are configured being in firewalled (port 0) mode. Those clients will never be portscanned as this setting is rather failsafe in terms of enabling others to download from them. Also shown is the percentage of locally connected clients in firewalled mode.
entries in flood list Yes The current number of clients which are under observation due to flooding events. Searaches and download requests by users being in the flood list are ignored.
whowas list Yes The number of entries in whowas list. These are clients which disconnected recently. Infos about them can be queried by the whowas command for some time.
 
section: files
local files count Yes The number of file infos this server is serving currently. Also shown are the number of files which have been shared or unshared per second and the percentage value which indicates how many percent of all files of the network are hosted by this server.
global files count Yes The number of file infos currently being available in the network of all linked servers. Also shown is the number of files which have been shared oir unshared per second network-wide.
local library in MB Yes The number of Megabytes all listed files on this server sum up to. Also shown is the percentage value which indicates how many percent of MB of the network are hosted by this server.
global library in MB Yes the number of Megabytes all listed files in the entire network sum up to.
avg. files / user Yes The average number of files each user shares
files shared Yes The total number of all files ever being (or being attempted to be) shared on the server. Also shown is the average rate of incoming file share requests per second.
files unshared Yes The total number of all previously shared files ever being unshared (removed from the server). Also shown is the average rate of incoming file unshare requests per second.
files blocked Yes The total number of files that clients were attempting to share but which were blocked by the server due to one of the various rules. Also shown is how many percent of all files being attempted to be shared were blocked.
avg. files / user Yes The average number of files each user shares.on this server
MB/file Yes The average size of files shared on this server in MB
downloads requested Yes The total number of download requests issued by clients on this server. Also shown is the number of requests per second.
downloads committed Yes The total number of committed uploads by clients (in response to download requests of others). Also shown is the number of committed transfers per second and the percentage value which indicates how many percent of requests were committed.
entries in file table - How many different file entries the server currently maintains.
mallocs per file - The average number of distinct malloc calls (memory objects) each shared file consumes. This is mainly affected by the average length of file names (including paths) and the number of tokens into which those filenames are to be split.
 
section: mem
VmSize reported by OS Yes The total amount of accessable RAM space the OS has currently assigned to Opennap NG. Due to overhead of the OS memory management this value is usually signifcantly higher than the actual amount of memory requested by Opennap NG. This value is available only on certain Unix systems.
wasted RAM - The percentage of currently wasted RAM. That is RAM the OS has assigned to Opennap NG which actually isn't used (wasn't requested) by Opennap NG. Reason for this waste is overhead / inefficency of memory management by the respective OS. Commonly this value is between 25% and 35%. On a server with more users disconnecting than connecting it is even higher. The value doesn't seem to ever fall below 20%. This value is available only on certain Unix systems.
currently allocated Yes The actual amount of RAM being allocated by Opennap NG, by calls to malloc () or similar functions.
MemOps/sec - The average rate of both memory allocation and deallocation function calls per second.
current allocations Yes The number of currently allocated memory objects of all sorts by Opennap NG.
average chunk size - The average size in bytes of allocated memory objects.
total allocations Yes The total number of calls to malloc () and similar functions by the server while it has been running
total frees Yes The total number of calls to free () by the server to release memory objects while it has been running
average KB per user - The average amount of RAM in KB each connected user consumes
bytes/file - The average amount of RAM in bytes each listed file consumes
 
section: load
CPU load factor Yes The CPU load factor as traditionally calculated by the OS. 0.00 means the CPU is idle and 1.00 (in theory) means the CPU is busy. However, this is a very imprecise value. It doesn't reflect the CPU utilization of Opennap NG but of all running processes of a system. It may well raise (far) above 1.00 with neither Opennap NG starting to lag noteworthy nor the CPU being actually utilized 100%. This value is available on some Unuix systems only.
freezes Yes The total number of times the server was very busy in the depths of its subroutines, hence not responding and lagging. This value will be maintained only if the server was compiled in Debug mode.
tags processed Yes The total number of tags (client requests or commands of all sorts) the server has been processing since start. Also shown is the average rate of tags per second the server is currently processing. A good rule of thumb to calculate system load by this value is that there should be one MHz of clock speed for every tag per second. I.e., a server frequently processing 500 tags per second should run on at least a 500 MHz machine. However, peaks of limited duration above this margin are harmless.
I/O syscalls Yes The total number of core input / output syscalls the server has been issuing. This refers to calls to read() / receive(),. write() / send() and poll() / select(). Also shown is the current average rate of syscalls per second. A good rule of thumb to calculate system load by this value is that there should be one MHz of clock speed for every three system calls per second, i.e. a server frequently processîng 1500 system calls per second should run on at least a 500 MHz machine. However, peaks of limited duration above this margin are harmless.
 
section: traf
total KB incoming Yes The total number of KB the server has received from the internet via all of its connections. Also shown is the current average rate of incoming data in bytes per second.
total KB outgoing Yes The total number of KB the server has sent to various internet connections. Also shown is the current average rate of outgoing data in bytes per second. Note that Opennap NG reports net values only, that is, just the amount of all byte sequences being sent via write() / send() syscalls. If you check these values via an independent facility, i.e. a firewall or external traffic monitor, you may be reported significantly higher values. This is because external traffic measurements usually refer to gross values only. The difference is the overhead of TCP and IP packaging of data being sent by Opennap NG. There is no way for the server to correctly determine this overhed and show correct gross values.
avg. user throughput - The average number of bytes each user has sent to and received from the server while he was or is connected. usually the server receives much more data from users than it sends back.
server based browses - The total amount of file data in KB which has been sent to clients in response to server browse requests.
files - The total number of file informations which have been sent to clients in response to server browse requests.
browses - The total number of server browses being processed by the server
 
section: search
searches processed Yes The total number of client file search requests this server has been processing since its start. Also shown is the current average rate of processed searches per second.
results delivered Yes The total number of file entries being returned to clients in response to search requests.
avg. results / search - The average number of file results a search yields on this server.
kilobytes delivered Yes The total amount of KB sent to clients containing file information of search results
b/result - The average number of bytes being sent to clients per file search result
b/search - The average number of bytes being sent to clients per file search
filtered searches Yes The number of searches which weren't processed because they contained no valid keywords
filtered keywords - The number of keywords the search filter list currently contains.
not found - The number of searches which produced no results
searches pending - The number of pending searches being issued on remote servers
expired   The number of searches which didn't yield results from remote servers in time
cancelled   The number of searches which were cancelled whiole being processed by remote servers
 
section: chat
public messages Yes The total number of public messages being sent by any client in any chat channels since server start
channels - The current number of existing chat channels
private messages Yes The total number of private messages being sent by any client to any other client since server start.
ignored - Total number and percentage of private messages being ignored by recipient.
winmx wantqueue waste Yes Number and percentage of those private messages which are actually no user to user communication but being sent by the WinMX client while excercising its custom protocol violation to privilege other WinMX clients. In other words: those messages are a nuisance. They (and the privileges) can be suppressed b the break_mx_queue variable.
 
section: dscon (disconnect reasons)
1: no more data Yes Connection failure. The OS signaled the connection to be readable but a read() call didn't yield any data.
2: login rejected Yes A connection was established and a client was about to login but it was rejected for any reason.
3: ghost kills Yes A client connection has been killed because another client using the same nick (and optionally correct password) is just logging in.
4: server rules Yes Client ejection due to violation of server rules
5: can't send to Yes Connection failure. The client queue was full but data couldn't be delivered to the client.
6: login timeout Yes A connection was established but no proper login occurred in time. This may indicate portscans by non-clients.
7: ul port closed Yes On being portscanned the announced upload port of a client has been found not reachable (closed).
8: connection resets Yes The client just terminated the connection. (Available in poll() mode only)
9: timeouts Yes Connection failure. A TCP timeout occurredand rendered the connection invalid. (Available in poll() mode only)








Clients


The following is a list of known clients to support the Opennap NG server. Part of the administration of Opennap NG is carried out via clients. The bold entries are recommended clients, as they are


Operating system Client Remark
Amiga Amster  
Apple Macintosh Drumbeat  
  Xnap Best featured platform-independent client (Java)
BeOS BeNapster  
Linux AutoNap Perl
BitchX IRC napster plugin
Gnap Project closed
Gnapster  
Gnome-Napster Project closed, use Lopster instead
GTK Napster Project closed, use Lopster instead
Knapster Project closed
Lopster Best featured and supported Linux GUI client (GTK+)
Nap Command line client
TekNap Formerly called BWap, standalone console Unix client based on bx-nap plugin for BitchX
Xnap Best featured platform-independent client (Java)
iNapster WWW interface
OS/2 Napster/2  
PMNapster Project closed
Warpster  
QNX Phaster  
RiscOS Riscster  
Windows AudioGnome  
CQ_EX  
Dagsta  
Duskster Perl
FileNavigator  
Hackster  
Lopster (WinLop) Windows port of the famous Lopster Linux client
Lopster Ramadev Italian Windows port of Lopster
NapAmp  Napster plugin for WinAmp
Napster Historical, meanwhile uses different protocol and software and has revived as a pay per transfer service
Napster Fast Search  
Rapigator  
Shuban  
Spotlight  
SunshineUN  
Swaptor  
WinLop Windows port of the famous Lopster Linux client
WinMX  
Xnap Best featured platform-independent client (Java)
Platform-independent: Jnapster Java
Jnap Java
MyNapster Webclient  
WebNap PHP
Xnap Best featured platform-independent client (Java)
Xnapster Java






Glossary


Admin     A privileged user level, usually assigned to members of network staff only.

Bitmap (variables)   Bitmap variables are essentially integer variables. Their values are numbers. However, these values are interpreted in a binary fashion by the server. Usually each single bit of a bitmapped value enables or disables a particular item. Hence, a bitmap variable can be thought of multiple boolean variables (on/off-switches) in one variable. Calculating the correct value to represent a given bitmap pattern requires some mathematical skills and knowledge about binary numbers representation. People lacking these should use the Opennap NG GUI config tool to adjust bitmap variables, as it offers a much more convenient interface to calculate bitmap values. Here is just a short example of how to set them: bitmap variables always have pairs of numbers and items listed in their description. For instance, a bitmap variable may feature the four items A, B, C and D, to be independantly enabled or disabled. The associated numbers would be 1, 2, 4 and 8. (For each item the numbers are doubled.) To enable B and D just add the associated numbers, i.e. 2 + 8. The result (10) enables B and D and disables A and C.

Boolean (variables)   Booleans are variables that can take only two values: on or off. Hence they can be thought of as simple switches. In the config file, the values can be written as either "1", "on", "yes" (for on) and "0", "off", "no" (for off). Bitmap variables are a more complex variation of boolean variables, combining multiple related boolean switches into one variable.

Bot   Bots are scripts (programs), mainly being used in the context of chat channels. They appear like normal users but usually run autonomous. Their complexity and purpose is highly variable. Some useful bots perform housekeeping duties, like detecting and ejecting channel flooders, greeting other users, attempt to start or manipulate discussions, offer helpful services like emitting server or channel statistics, acting as a chat gateway between different networks or provide some world news on request. Those bots are usually authorized or put in place by Mods+. However, there exist also evil bots, which are usually not authorized. Their most common intentions are either flood attacks of some sort or annoying people in chatrooms or via PM. Technically, bots are implemented via clients with scripting capabilities. For the Napster protocol this is mainly the TekNap client.

Channel operator   A channel operator, also known as a chanop or just op, is a user that is allowed to administer a chat channel. See ChanServ for a list of available commands. Channel operators have no special privileges outside of the channel they are opped in. Channel operator status is given either when a user is the first user to join a chat channel, or another channel operator makes a user a channel operator using the op command. All channel operators are equivalent, meaning that if you op a user, they can immediately deop you (remove your channel operator privilege). Note that being a channel operator is not a user level. Most channel operators are only normal users.

Client browse

  Synonym for direct browse, opposite of server browse.

Clones   Usually each user who connects to a server has its own, distinct IP address. If multiple users with the same IP address connect to a server they are referred to as clones. A great number of clones from the same IP address can often be regarded a simple form of DoS attack, as each clone consumes one of the limited connections. With the max_clones setting Opennap NG offers to limit this sort of abuse. However, some users and especially Mods+ may wish to use at least one other clone without hostile intentions, maybe to test a secondary client, run a bot or because they have much more than max_shares files to offer and hence want to use two connections to offer separate collections of them. So accepting at least one clone (setting the variable to 2!) usually isn't a bad idea. If only higher user levels like Mods+ should be granted clones then the setting clones_allow_level should be used.

CVS   Concurrent Version System, a software system to allow multiple developers to work on a software packages, concurrently submit changes and track version history. Ordinary users are able to obtain any version of a software package from the entire version history tree via CVS. CVS is used by SourceForge for version controlling of and access to various software packages, including Opennap NG.

(Server) desync   If two or more servers are linked together to form a network they need to maintain a consistent state, that is, know which users are connected, what files are listed etc. It is possible that occasionally this consistency is lost for some reasons, i.e. server splits, floods, freezes or software bugs. If this happens, the results may be confusing for some users. For instance, a user may appear connected (visible) from one server but not connected (invisible) from another server of the same network. This is especially irritating when userswho want to chat in channels are affected. Similar inconsistencies apply to file lists. Servers can be resynced by manually unlinking and relinking them. Opennap NG versions prior to 0.49 are known to have contained a software bug which effectuated desync inconsistencies.

Direct browse   Opposite of server browse, also referred to as client bowse. A client who wants to retrieve the entire filelist of another user directly connects to that other user's client and receives the filelist from it. The server only mediates the request but isn't involved in the actual list data transfer, hence, no server bandwidth is consumed. Direct browses allow to retrieve the entire fileset of other users, even blocked files which were not accepted and aren't listed by the server. Direct browses are an advanced feature of the protocol which isn't supported by all clients. Both clients being involved have to support direct browse, otherwise server browse is used automatically. Since they save server resources, are faster and uncensored, direct browses are preferred over server browses.

DoS   Denial of Service, a common result of flood attacks against internet servers of all kinds. A large number of requests is sent to the server with the intention to overload it, cause it to freeze or crash. Opennap NG contains various settings to control possible flood attacks and limit their effects. No harmful large scale DoS attacks against Opennap NG servers have been reported so far.

Elite   Highest user level supported by Opennap NG. Usually only assigned to server owners.

Flood / flooding   If a client issues a large number of requests of any kind to the server, this is referred to as flooding. This isn't necessarily a hostile act. Some users simply issue a lot of searches or request a great number of file downloads, or even accept a great number of file uploads. In case of ghost kill deadlock floods the corresponding clients are usually misconfigured. If, however, a client starts to issue senseless, random or even disturbing requests in large numbers, intending to provoke a DoS, this is to be regarded a flood attack. Flood attacks, as well as non-hostile floodings, can cause the server to freeze (hang) or even crash. For this reason Opennap NG supports a number of settings to detect and deal with floods. It's generally up to the server owner to decide, how many requests in a given period are to be considered unblamable and from which number of requests on flooding is to be assumed.

Freeloader   A user who intends to download a significant number of files without offering own files in return. In other words: they take but refuse to give. Freeloaders share either very little or nothing or crap only when connecting to a server, or they block uploads to other users who request files from them. Freeloaders are often leeches as well, so these two terms are commonly used interchangably. Most server owners won't want to have freeloaders on their system. Freeloaders of the first sort can automatically be dealt with by settings like eject_when_full, eject_limit_files, eject_limit_libsize, min_file_size and the opennap-block.txt file.

Freeze   A server which is not responding to any requests, often because it's overloaded and still processing previous requests or experiences internet connection trouble. Freezes can last from a few seconds to several minutes. In most cases the server CPU will be utilized to 100% for these periods. Most freezes are of temporary nature, i.e. the server doesn't crash and will return to business. However, for the time the server freezes especially chatting users experience a severe lag.

Friend   A Friend is a user that can join the network at any time, even when the server is full and normally wouldn't accept any more logins by users. Friends are assigned by Mods+. With /msg operserv userflags USERNAME Friend you can give this status to any user. Important: For the Friend Flag the user must be a registered user at your network. For Mods+ the Friends flag has no meaning as they are allowed to login any time anyway.

Ghost   A ghost is a user whose connection to the server is lost without the server getting to know about this. Normally, when a user disconnects intentionally, the server receives a corresponding disconnect message from that client and immediately knows the user has left. It's a common symptom of dial-up or DSL internet connections of clients or unreliable or faulty network connection of the server that sometimes connections may break without the server getting informed about it. As a result, the server still believes the user is connected, while he is actually not. Those users are referred to as ghosts. Ghosts always stay silent and the actual user doesn't get anything of what is written to him in either public channels or via PM. Since becoming a ghost is almost always an involuntary and unexpected event, the actual user will most likely be trying to reconnect to the server. The user normally won't succeed, because the server believes the user is already and still being connected. Without ghost kill enabled the user would have to wait something between 10 and 30 minutes to be able to reconnect, until the server eventually realizes the connection is dead. This can be very annoying for users and confuse others, especially if the user was chatting when he became a ghost or when others are requesting files from a ghost. Those requests will stay unanswered on ghosts. Ghost kill turned on enables the user to immediately reconnect, despite the server believes he is already being connected. The existing, actually dead, connection will be removed and the user will be allowed to reconnect. Also, turning on ghost kill can save a tiny amount of server resources. Without ghost kill enabled the user will be trying to reconnect again and again, producing quite a bit of wasted incoming traffic and processing power of the server. This can be conserved if the user will be able to immediately reconnect. Most but not all ghost kills come along with a change of the IP address of the user. See also: ghost kill deadlock.

Ghost kill deadlock   Users who keep connecting and getting (ghost)killed by the server rather frequently, about once or twice per minute, are experiencing a ghost kill deadlock. All of them can only happen if ghost_kill is enabled. There are three possible reasons for this: 1. misconfigured clients (most common), 2. nick collisions, 3. flood attacks. Misconfigured client here refers to outdated server lists or server lists filled with wrong data. Only clients which support concurrent connections to multiple different networks are affected by this. Any given nick may connect only once to a network. It is possible that in the client's server list two servers appear as belonging to different networks while they actually belong to the same network. This may happen since servers sometimes change their network affiliations indeed. So the client believes it is attempting to connect to two different networks concurrently (which would be okay) while it is actually attempting to connect to two servers of the same network all the time. If both connection attempts use the same nick then the second successful connect will always eject the first successful connect. Usually the first one will immediately start to reconnect again, then ejecting the second one, and so on. Countermeasures: true nick collisions can be avoided / stopped if the affected nick gets registered by one of its users or a Mod+. Misconfigured clients and flood attacks are to be put down by banning their related nicks for some time. Disabling ghost kill at all is not recommended, since the number of harmless ghosts seeking a single, immediate reconnect uses to outweigh deadlocks by far.

GotNap   An internet service (http://www.gotnap.com) which can be used by public networks to advertise themselves. Clients may get network / server addresses to connect to from GotNap. New servers and networks who want to attract a large number of users have to advertise in GotNap. This service is up since summer 2004. It's the inofficial successor to Napigator, which provided similar services until early 2004.

IM / Instant Message   Basically a private message to another user. However, nowadays the term instant message is mostly used in context of instant messenger programs. Most of those programs feature buffering of messages, to be able to message other users even when they're offline. This isn't supported by Opennap NG. Other users being messaged must be connected to the same network at the time of the message being sent.

Lag   In public channels, each message sent by a user gets distributed by the server to all other users in the chat. If the server is mostly idle, this happens almost instantaneously. However, If a server is temporary overloaded or freezes, it either can't process any client requests at all or it takes some seconds for each.. This results in a notable delay between a message being sent by a user and that message becoming available to the other users in a channel. If this delay gets so long that it starts disturbing conversations (more than roughly 10 seconds) the server is said to experience lag or be laggy.

Leech   In Opennap NG, leech is a user level. In general, leeches are users who download an enormous amount of files, often from just a few other users, while sharing and / or uploading very little or nothing. Hence they resemble freeloaders and are generally not welcome on servers.

Moderator   An advanced user level.

Mods+   All users with a level of Moderator or higher. Generally this refers to the staff of a server or network.

MOTD   Message Of The Day. This is the text the server sends to your client when you log in. In Opennap NG the MOTD is contained in file opennap-motd.txt and may be edited using any ASCII text editor. MOTDs may be coloured, which is to be controlled by escape codes. However, this is a feature being supported by few clients only.

Napigator   Formerly an internet service with its own website (http://www.napigator.com) and support software, where networks could be publicly advertised and clients got server addresses to connect to from. New servers and networks who want to attract a large number of users had to advertise in Napigator. Napigator has ceased its service in early 2004. Meanwhile GotNap provides a nearly identical and compatible network advertisment service. Technical references to Napigator in this manual are historic and can be regarded as applying to GotNap nowadays.

Net(work)   In Opennap NG context, a network is a pool of Opennap NG servers which are linked together to bundle their capacities, especially user and file counts. Servers of a network communicate with each other to maintain a consistent and synchronized state. This means, that all servers of a network should know whether and to which server particular users are connected, what files are searchable and what users are joined in what chat channels. If his client supports it, a user may be connected to several networks concurrently, but only to one server of a given network. Two users must be connected to the same network to be able to chat (publicly or privately) or exchange files via Opennap NG. Networks can be composed of a basically arbitrary number of servers. However, the more servers are linked together, the greater the internal synchronization overhead gets and more internet bandwidth is consumed. Note that in Opennap NG context even single servers, which aren't linked to any others, may be referred to as networks.

Nick   The name a user chose for his or her appearance in a network. Opennap NG connections are nick-based, that is, every connection to a server is associated with a nick. Users can choose and change their nicks nearly at will between sessions. However, most users rarely change their nicks, especially if they intend to chat with others. If a server allows clones, one user may connect to a server or network multiple times (up to max_clones times) concurrently, using a different nick for every connection. Nicks should commonly be between 2 and 20 characters long If alnum_nicks is enabled then nicks consisting of upper- and lowercase english letters, digits and characters "-" and "_" only are accepted.

Nick collision   Two or more unrelated users may chose the same nick, possibly a common one, and attempt to connect to a network concurrently. If ghost kill is disabled only the first one will succeed, followers will be rejected until the connection of the first one terminates. If ghost kill is enabled then a ghost kill deadlock may occur, where user A connects, gets ghost killed by user B, user B then gets ghost killed by user A, and so on. This can be avoided or stopped if one of the users registers himself with a private password. The other one(s) then won't be able to use the same nick any more as they don't know the password required to use that nick. Nick collisions are a pretty rare event.

Ping   Not to be confused with common IP (internet protocol) ping command and action, although the purpose is similar. In the Napster protocol, ping is a special command to test whether other clients are still alive and reachable and responding. The ping command is sent to the server which relays it to the target client. The target client should respond with an automatic pong then, which will be relayed back through the server to the pinging client. Although they appear to be present, other clients may actually not be reachable, for instance, because they have become ghosts or servers are desynced. Usually pings are emitted on manual request only. It's a good idea to precede especially PM conversations with a ping to confirm the other user can receive your messages and isn't ignoring you. In Napster protocol, incoming pings are to be answered automatically with a pong. Unfortunately some clients either don't support or ignore this feature. Hence, a missing pong doesn't always mean the peer is not reachable, while a successful pong always means it is.

PM / Private Message   Private Message, a text message which is sent from one user to another, not to be seen by others. Similar in meaning with instant messages Along with public chats and file exchange, PMs are a core feature of the Napster protocol on which Opennap NG bases. To be reachable via PM a user must be connected to the same server or network. Contrary to other server software, in the original (unmodified) Opennap NG server software private messages are really kept private, that is, they aren't stored or made visible to anyone else but the intended recipient. This also means, there is no buffering (as in instant messengers) if the recipient of the PM is currently offline. However, since Opennap NG is open source software, anyone with adequate programming skills would be able to change this fine behaviour. In fact, it is known that some server owners expressed a strong and sick desire to spy on private messages of their users. So users must not be absolutely sure their privacy is kept when communicating via PMs in this sort of network. In Opennap NG, the runtime server administration is mostly done via special PMs to the server.

Server browse   The opposite of direct browse. A server browse is initiated if a client wants to retrieve the entire filelist of another user, but either of their clients (or both) doesn't support direct browses. In this case the two clients don't contact each other to transmit the filelist. Instead, the stored copy of the requested filelist is sent from the server to the requestor. This may consume a lot of outgoing server bandwidth. Even more if the requestor and the requested user are connected to different servers (of the same network). Therefore, most servers limit the amount of file data being browsable via server browses. The max_browse_result setting is used to control this. Since they save server resources and are faster, direct browses are usually preferred by both server owners and users. Unfortunately only a few clients support direct browsing as yet.

(Server) split   Term used to describe when two linked servers become disconnected from one another (you can generally tell when this happens because if you are in a chat channel you will see a bunch of users leave at the same time).

Sping   A term meaning server ping, or how long it takes a server to see your data and respond.



 


Aggiornato il 28 Novembre 2005.
Traduzione in Italiano: briosky
http://brionews.com