|
Innd
è sicuramente l'applicazione intorno alla quale ruota
l'intero sistema di InterNetNews. Può essere rappresentato
come un'applicazione server che processa tutte le informazioni
che giungono al server delle news: informazioni quali ad esempio
la lista dei nuovi newsgroup e la lista degli articoli ad
essi inviati.
In particolare innd rimane in ascolto alla porta predefinita
destinata al protocollo NNTP in attesa di ricevere i dati
in ingresso per un tempo massimo di inattività che
generalmente è fissato sui 300 secondi.
Dall'installazione all'utilizzo innd si presenta come un'applicazione
di utilizzo piuttosto immediato.
E' necessario però settare preventivamente alcuni valori
in modo da permettere la corretta esecuzione delle operazioni
a cui innd è predestinato.
Configurazione ed esecuzione di innd entrano in un territorio
piuttosto specifico che in questa sede non si andrà
ad approfondire ulteriormente. Tuttavia per avere un'idea
di come innd sia l'elemento base per un corretto funzionamento
di USENET risulta utile analizzare i principali parametri
ed opzioni di esecuzione del programma:
-a
impostazione predefinita, indica che qualsiasi host ha i permessi
per connettersi al server delle news e trasferire le informazioni
legate ad articoli e liste di newsgroup;
-c indica che innd rigetterà gli articoli con
una datazione inferiore a quella stabilita dal numero intero
che segue immediatamente il parametro. Ad esempio la notazione
"-c14" (che è impostata di default)
esclude tutti i messaggi con data precedente a 14 giorni dalla
data corrente. Questo parametro è particolarmente utile
in quanto, nonostante il blocco degli articoli datati sia
controllato dalla verifica dell'archivio history database
il quale registra le informazioni degli articoli in entrata
ed in uscita, si possono verificare errori o eccezioni.
-C permette di ricevere e propagare articoli ma ne
esclude la cancellazione dovuta all'applicazione di un filtro.
Viene generalmente utilizzato per filtrare le informazioni
raccolte utilizzando criteri più approfonditi rispetto
a quelli comunemente utilizzati.
-H -T -X permettono di impostare il numero di connessioni
simultanee consentite, in modo da evitare un intasamento del
server dovuto ad un numero eccessivo di connessioni contemporanee.
In particolare -H limita il numero di connessioni per
-X secondi (l'impostazione predefinita è 2)
consentite ad un host. -T invece limita il numero totali
di connessioni ad -X secondi. In questo caso l'impostazione
predefinita è 60 per un massimo consentito di 128.
-X è un parametro legato ai precedenti che specifica
il numero di secondi per connessione.
-i invece limita il numero massimo di connessioni al
secondo. Il valore predefinito corrisponde a 50.
-l limita le dimensioni massime di un articolo in entrata.
Un articolo con dimensioni maggiori rispetto a quelle indicate
viene irrimediabilmente scartato.
-P con questo parametro si indica la porta sulla quale
l'applicazione si metterà in attesa di comunicazioni.
Per permettere a innd di compiere le dovute operazioni sulla
porta prescelta è necessario conferire a tale applicazione
i permessi necessari.
La fase iniziale dell'attività di innd prevede innanzitutto
la lettura del registro delle attività, l'active file,
dal quale viene estrapolato un array di strutture di newsgroup,
ossia una serie di newsgroup e per ciascuno di essi un elenco
di informazioni utili che lo completano. A titolo di esempio
viene riportato qui sotto l'elenco dei membri della struttura
che identificano ciascun gruppo:
char
*Name;
char *Dir;
long Last;
int LastWidth;
char *LastString;
char *Rest;
int SiteCount;
SITE **Sites; |
Sono
proprio le informazioni di questa lista che permettono al
server delle news di inviare dati ed overview sempre dettagliati
alle applicazioni client che ne fanno richiesta.
Si consideri adesso ogni singolo dato elencato: Name
indica il nome del newsgroup, Dir la directory del
server nella quale esso risiede, Last l'intero che
identifica l'ultimo messaggio del gruppo, LastWidth
le dimensioni dell'ultimo articolo, LastString un puntatore
alla copia del file in memoria, Rest il parametro che
indica se il newsgroup è libero, moderato oppure presenta
regole ulteriori che impediscono l'invio di articoli, SiteCount
non è altro che un contatore che identifica il singolo
gruppo all'interno della lista creata nel file active e Sites
rappresenta un membro della struttura SITE (troppo specifica
per essere trattata in questo articolo).
Per comprendere meglio questa prima attività di innd
si consideri il seguente esempio:
l'active file presenta nei primi due record le seguenti linee
di testo:
| comp.sources.unix
00211 00202 m
comp.lang.perl.misc
00139 00119 y
|
che
indicano rispettivamente due newsgroup, il primo denominato
comp.sources.unix il cui primo articolo memorizzato ha indice
00202 e l'ultimo 00211 e che risulta essere un gruppo moderato.
Il secondo invece è denominato comp.lang.perl.misc
e presenta come primo articolo quello identificato dall'indice
00119 e come ultimo il 00139.
Questo ultimo newsgroup risulta non moderato e libero da qualsiasi
limitazione all'invio di articoli.
A questo punto innd leggerà i due record seguendo naturalmente
l'ordine di estrazione dall'archivio delle attività
e produrrà i seguenti risultati:
comp.sources.unix
Name = comp.sources.unix
Dir = "comp/sources/unix/"
Last = 00211
LastWidth = 5
LastString = 00211...
Rest = m
SiteCount = 1
Sites = //STRUTTURA SITE |
per
il primo e:
comp.lang.perl.misc
Name = comp.lang.perl.misc
Dir = "comp/lang/perl/misc/"
Last = 00139
LastWidth = 5
LastString = 00139...
Rest = y
SiteCount = 2
Sites = //STRUTTURA SITE |
per
il secondo.
Nnrpd
funge invece da tramite tra il server delle news e il newsreader
client in quanto implementa la struttura di comandi necessaria
al dialogo tra i due. La versione attuale di nnrpd tuttavia
esclude dalla lista il comando IHAVE mentre del comando
NEWNEWS implementa una versione incompleta.
Non tutti i comandi ed in generale le richieste dall'esterno
sono accettate da nnrpd: il file nnrpd.access infatti definisce
la lista degli host non gestibili tramite innd.
La struttura di nnrpd.access consiste in linee vuote e linee
di commento (identificate dal simbolo # e procedenti fino al
termine della linea). Come sempre accade le linee vuote ed i
commenti vengono completamente ignorate dall'applicazione.
hosts:perms:username:password:patterns
hosts:/full/path/filename |
Oltre
a ciò nnrpd si occupa del mantenimento di un file log. |