File: a2155.html

package info (click to toggle)
appunti-informatica-libera 2001.08.18-2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 27,912 kB
  • ctags: 23,734
  • sloc: makefile: 69
file content (705 lines) | stat: -rw-r--r-- 40,227 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd">
<HTML LANG="it">
<HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html">
    <META NAME="Generator" CONTENT="Alml">
    <META NAME="Description" CONTENT="GNU/Linux e altro software libero">
    <META NAME="Keywords" CONTENT="Linux, GNU/Linux, Unix, software, software libero, free software">
    <META NAME="Author" CONTENT="Daniele Giacomini &nbsp;&nbsp; &nbsp;daniele&nbsp;@&nbsp;swlibero.org">
    <META NAME="Date" CONTENT="2001.08.18 ">
    <META NAME="Resource-type" LANG="en" CONTENT="Document" >
    <META NAME="Revisit-after" LANG="en" CONTENT="15 days" >
    <META NAME="Robots" CONTENT="ALL" >
    <TITLE> Appunti di informatica libera</TITLE>
    <LINK REL="stylesheet" TYPE="text/css" HREF="a2.css">
    <LINK REL="Start" TITLE="Start" HREF="a2.html">
    <LINK REL="Prev" TITLE="Previous" HREF="a2154.html">
    <LINK REL="Next" TITLE="Next" HREF="a2156.html">
</HEAD>
<BODY>
<P>
<A HREF="a2156.html">[successivo]</A>
<A HREF="a2154.html">[precedente]</A>
<A HREF="a2.html">[inizio]</A>
<A HREF="a2506.html">[fine]</A>
<A HREF="a21.html">[indice generale]</A>
<A HREF="a26.html">[violazione GPL]</A>
<A HREF="a2504.html">[licenze]</A>
<A HREF="a2505.html">[indice analitico]</A>
<A HREF="a2127.html">[tomo]</A>
<A HREF="a2138.html">[parte]</A>
</P>
<HR>
<DIV>
<H1>Capitolo 119. &nbsp; <A NAME="title1959"></A><A NAME="anchor2351"></A> <A NAME="index10760"></A>IRC <A NAME="index10761"></A> <A NAME="index10762"></A> </H1>

<P><A NAME="index10763"></A>IRC &egrave; un sistema di comunicazione in tempo reale per discussioni pubbliche, o private, in forma scritta. Di per s&eacute;, <A NAME="index10764"></A>IRC &egrave; l'evoluzione della comunicazione attraverso <SAMP>talk</SAMP> (capitolo <A HREF="a2144.html#anchor2176">108</A>).</P>

<H2>119.1 &nbsp; <A NAME="title1960"></A><A NAME="anchor2352"></A>
 Infrastruttura </H2>

<P>Lo scopo di <A NAME="index10765"></A>IRC, ovvero la realizzazione di un sistema di discussione pubblica a livello globale, richiede un'infrastruttura composta dai <A NAME="index10766"></A>serventi <A NAME="index10767"></A>IRC articolati in modo da formare una &laquo;rete&raquo; <A NAME="index10768"></A>IRC.</P>

<P>Ragionando in piccolo, si pu&ograve; pensare alla realizzazione di un <A NAME="index10769"></A>servente <A NAME="index10770"></A>IRC singolo, presso il quale si devono connettere tutte le persone che vogliono instaurare una forma di discussione qualunque. La distanza non &egrave; necessariamente un problema per chi si connette; tuttavia, diventa un problema la quantit&agrave; di connessioni che verrebbero a essere aperte in modo simultaneo. Nella realt&agrave;, queste connessioni possono essere molto numerose (diverse migliaia), soprattutto a causa della filosofia di <A NAME="index10771"></A>IRC per la quale l'organizzazione dei canali di discussione &egrave; libera, per cui &egrave; indispensabile la presenza di un'infrastruttura che sia in grado di recepire tale massa di utenze.</P>

<P>Si parla di reti <A NAME="index10772"></A>IRC, a indicare i gruppi di elaboratori che gestiscono assieme gli stessi canali di comunicazione. Tali reti sono composte secondo una struttura ad albero, dove esiste un solo percorso possibile tra due nodi. Naturalmente, queste reti <A NAME="index10773"></A>IRC si inseriscono praticamente sulla rete <A NAME="index10774"></A>Internet, sfruttando il protocollo TCP per il transito delle informazioni.</P>

<TABLE ID="anchor2353" BORDER="0" WIDTH="100%">
<TR><TD>
<HR>

<PRE>    a        d--------e
    |        |
    |        |
    |        |
    b--------c--------f        k
             |                 |
             |                 |
             |                 |
             g--------h--------i--------l
                      |        |
                      |        |
                      |        |
                      j        m</PRE>
<HR>

<P class="caption"> Figura <A HREF="a2155.html#anchor2353">119.1</A>. Rete di <A NAME="index10775"></A>serventi <A NAME="index10776"></A>IRC. </P>

</TD></TR>
</TABLE>

<P>L'organizzazione interna della rete <A NAME="index10777"></A>IRC &egrave; importante per fare in modo che transitino al suo interno solo le informazioni che sono indispensabili, dal momento che il volume di messaggi gestiti &egrave; enorme.</P>

<P>A livello di rete <A NAME="index10778"></A>IRC si pu&ograve; individuare una persone con un ruolo speciale: l'operatore <A NAME="index10779"></A>IRC. L'operatore <A NAME="index10780"></A>IRC &egrave; l'amministratore di uno o pi&ugrave; <A NAME="index10781"></A>serventi <A NAME="index10782"></A>IRC, nel senso che pu&ograve; impartire a questi dei comandi speciali, relativi al loro funzionamento.</P>

<H2>119.2 &nbsp; <A NAME="title1961"></A><A NAME="anchor2354"></A>
 Canali, utenti e operatori </H2>

<P>In una rete <A NAME="index10783"></A>IRC, le comunicazioni avvengono all'interno di <STRONG><EM>canali</EM></STRONG> creati dinamicamente; gli utenti della rete <A NAME="index10784"></A>IRC sono individuati in base a un nominativo, definito <EM>nick</EM>. Non esiste una regola nell'uso dei nominativi di identificazione degli utenti e nell'organizzazione dei canali di comunicazione: l'utente che si presenta nella rete <A NAME="index10785"></A>IRC chiede di usare un nominativo e lo ottiene se questo non &egrave; gi&agrave; utilizzato; l'utente che chiede di accedere a un canale di comunicazione che non esiste, lo crea automaticamente e ne diventa il suo <STRONG><EM>operatore</EM></STRONG>.</P>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>Naturalmente, un utente che cerca di accedere a una rete <A NAME="index10786"></A>IRC lo fa connettendosi a un <A NAME="index10787"></A>servente <A NAME="index10788"></A>IRC di quella rete; ma questo <A NAME="index10789"></A>servente pu&ograve; definire una sua politica di accessi, per cui l'utente in questione potrebbe anche non essere ammesso ad accedere.</P>

</TD></TR>
</TABLE>

<P>&Egrave; importante comprendere la filosofia di <A NAME="index10790"></A>IRC per ci&ograve; che riguarda i canali: questi vengono creati automaticamente nel momento in cui vengono richiesti per la prima volta; quindi scompaiono nel momento in cui non ci sono pi&ugrave; utenti collegati al loro interno. &Egrave; importante anche chiarire il senso dell'operatore: si tratta dell'utente che crea inizialmente il canale, ovvero dell'utente che riceve questo privilegio da un altro operatore. L'operatore, noto anche con l'abbreviazione di &laquo;oper&raquo;, oppure solo &laquo;op&raquo;, ha la possibilit&agrave; di stabilire la modalit&agrave; di funzionamento del canale e pu&ograve; anche allontanare altri utenti dal canale stesso. Segue l'elenco delle modalit&agrave; pi&ugrave; importanti di un canale che sono controllate dall'operatore:</P>

<UL>

<LI>

<P>si pu&ograve; accedere al canale a richiesta, oppure solo a seguito di un invito;</P>
</LI>

<LI>

<P>si pu&ograve; specificare una <A NAME="index10791"></A>parola d'ordine per l'accesso al canale;</P>
</LI>

<LI>

<P>si pu&ograve; specificare il numero massimo di accessi, oltre l'operatore;</P>
</LI>

<LI>

<P>si pu&ograve; rendere il canale moderato, per cui in pratica scrive solo l'operatore e gli utenti da lui autorizzati;</P>
</LI>

<LI>

<P>si pu&ograve; bloccare la scrittura nel canale;</P>
</LI>

<LI>

<P>si possono concedere i privilegi di operatore anche a un altro utente;</P>
</LI>

<LI>

<P>si pu&ograve; rendere il canale privato, nel senso che non ne viene pubblicizzata la presenza;</P>
</LI>

<LI>

<P>si pu&ograve; rendere il canale segreto, nel senso che non lo si vuole fare apparire nell'elenco dei canali presenti.<SUP><A HREF="#footnote1" NAME="footnote-ref1">(1)</A></SUP></P>
</LI>
</UL>

<P>Oltre al controllo sul funzionamento del canale, l'operatore pu&ograve; intervenire in modo privilegiato:</P>

<UL>

<LI>

<P>pu&ograve; specificare il fatto che si tratti di un canale a tema;</P>
</LI>

<LI>

<P>pu&ograve; consentire a un utente di scrivere in un canale moderato;</P>
</LI>

<LI>

<P>pu&ograve; allontanare un utente o gruppi di utenti;</P>
</LI>

<LI>

<P>pu&ograve; concedere un'eccezione nel caso di un canale che richieda l'invito.</P>
</LI>
</UL>

<P>Ogni utente, tra le altre cose, ha la possibilit&agrave; di configurare il proprio accesso al canale in modo da rendersi parzialmente invisibile.</P>

<H3>119.2.1 &nbsp; <A NAME="title1962"></A><A NAME="anchor2355"></A>
 Divisione e ricongiunzione di reti <A NAME="index10792"></A>IRC </H3>

<P>Una rete <A NAME="index10793"></A>IRC pu&ograve; essere spezzata nel momento in cui un nodo che non &egrave; terminale cessa di funzionare per qualche ragione, oppure quando viene dato espressamente questo ordine da un operatore <A NAME="index10794"></A>IRC. In questa situazione si formano due reti, in cui continuano a funzionare i canali per quanto possibile. Naturalmente, gli utenti che accedono a una di queste due reti risulteranno isolati rispetto all'altra rete.</P>

<P>La divisione della rete provoca quindi una crisi temporanea che alla fine si riassesta in qualche modo pi&ugrave; o meno automatico. Il vero problema nasce nel momento in cui le reti vengono riunite: i canali con lo stesso nome vengono fusi assieme, riunendo gli utenti. Questa riunione pu&ograve; creare un po' di scompiglio, considerando che la modalit&agrave; di funzionamento dei canali viene riadattata in modo da armonizzare le eventuali incompatibilit&agrave; e che gli operatori vengono a sommarsi.</P>

<H2>119.3 &nbsp; <A NAME="title1963"></A><A NAME="anchor2356"></A>
 Comportamenti spiacevoli <A NAME="index10795"></A> <A NAME="index10796"></A> <A NAME="index10797"></A> </H2>

<P><A NAME="index10798"></A>IRC &egrave; un sistema di comunicazione in cui gli utenti sono presenti simultaneamente nel momento in cui scrivono e leggono i messaggi. Nelle discussioni pi&ugrave; o meno pubbliche come queste &egrave; comune il fatto che chi non sa stare alle regole di una discussione civile decida invece di esprimersi attraverso il dispetto, con la pretesa di dimostrare cos&igrave; la propria intelligenza.</P>

<P>Queste situazioni sono cos&igrave; comuni che ne derivano dei termini standard il cui significato dovrebbe essere conosciuto:</P>

<UL>

<LI>

<P><EM>bot</EM> &egrave; un programma <A NAME="index10799"></A>cliente automatico che funziona in modo autonomo (robot), senza un utente che sta comunicando effettivamente;</P>
</LI>

<LI>

<P><EM>cloner</EM> &egrave; un utente che sta utilizzando presumibilmente pi&ugrave; programmi <A NAME="index10800"></A>clienti, ognuno dei quali &egrave; un <EM>clone</EM> in questo contesto;</P>
</LI>

<LI>

<P><EM>flooder</EM> &egrave; colui che inonda in qualche modo un utente allo scopo di allontanarlo dalla comunicazione.</P>
</LI>
</UL>

<P>Il <EM>bot</EM>, ovvero il programma che usa <A NAME="index10801"></A>IRC da solo, &egrave; il mezzo attraverso cui si compiono degli attacchi, altrimenti non ci sarebbe bisogno di un programma automatico, dato che <A NAME="index10802"></A>IRC &egrave; fatta per comunicare da umano a umano.</P>

<P>Il fatto di utilizzare diversi programmi <A NAME="index10803"></A>clienti, mentre ne basterebbe uno solo per comunicare anche su pi&ugrave; canali, pu&ograve; rappresentare l'intenzione di fare qualcosa di pi&ugrave; della semplice comunicazione.</P>

<H2>119.4 &nbsp; <A NAME="title1964"></A><A NAME="anchor2357"></A>
 Dal lato del <A NAME="index10804"></A>servente </H2>

<P>La realizzazione di un <A NAME="index10805"></A>servente <A NAME="index10806"></A>IRC isolato &egrave; un'operazione relativamente semplice, limitando il problema alla definizione di una politica di accessi al servizio. Qui non viene mostrato in che modo organizzare invece una vera rete <A NAME="index10807"></A>IRC, che evidentemente &egrave; un problema pi&ugrave; impegnativo.</P>

<H2>119.5 &nbsp; <A NAME="title1965"></A><A NAME="anchor2358"></A>
 <A NAME="index10808"></A>Ircd <A NAME="index10809"></A> </H2>

<P><A NAME="index10810"></A>Ircd <SUP><A HREF="#footnote2" NAME="footnote-ref2">(2)</A></SUP> &egrave; il <A NAME="index10811"></A>servente <A NAME="index10812"></A>IRC tipico dei sistemi Unix. In generale sono essenziali solo due file: l'eseguibile <SAMP>ircd</SAMP> e il file di configurazione <CODE>ircd.conf</CODE>, che in un sistema GNU/Linux dovrebbe trovarsi nella directory <CODE>/etc/ircd/</CODE>.</P>

<P><A NAME="index10813"></A>Ircd pu&ograve; essere avviato in modo autonomo, senza l'intervento del supervisore <A NAME="index10814"></A>Inet, oppure sotto il suo controllo. Nel secondo caso, si deve provvedere a sistemare il file <CODE>/etc/inetd.conf</CODE> aggiungendo la riga seguente:</P>

<PRE>ircd            stream  tcp     wait    irc     /usr/sbin/ircd ircd -i</PRE>

<P>Come si pu&ograve; osservare dall'esempio, conviene avviare l'eseguibile <SAMP>ircd</SAMP> usando i privilegi di un utente fittizio definito appositamente per la gestione del servizio <A NAME="index10815"></A>IRC; in questo caso si tratta di <SAMP>irc</SAMP>.</P>

<P>Come si pu&ograve; osservare ancora dall'esempio riferito al file <CODE>/etc/inetd.conf</CODE>, si fa riferimento alla porta TCP attraverso la denominazione <SAMP>ircd</SAMP>, che di solito, secondo il file <CODE>/etc/services</CODE> corrisponde al numero 6&nbsp;667:</P>

<PRE>ircd            6667/tcp                        # Internet Relay Chat
ircd            6667/udp                        # Internet Relay Chat</PRE>

<P>Si intende che si tratta di una porta non privilegiata, giustificando la scelta di usare un utente fittizio diverso da <SAMP>root</SAMP> per avviare <SAMP>ircd</SAMP>.</P>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>Il demone <SAMP>ircd</SAMP> pu&ograve; essere configurato in modo da gestire autonomamente il protocollo IDENT e altri sistemi di controllo. In questo senso, generalmente non viene inserito il controllo del <A NAME="index10816"></A>TCP&nbsp;wrapper.</P>

</TD></TR>
</TABLE>

<H3>119.5.1 &nbsp; <A NAME="title1966"></A><A NAME="anchor2359"></A>
 Messaggio del giorno <A NAME="index10817"></A> </H3>

<P>Nel momento di una nuova connessione al servizio <A NAME="index10818"></A>IRC, il <A NAME="index10819"></A>servente mostra il messaggio del giorno, che in un sistema GNU/Linux potrebbe essere contenuto nel file <CODE>/etc/ircd/ircd.motd</CODE> (si tratta di un file di testo normale).</P>

<P>In generale &egrave; importante predisporre questo file in modo da mostrare le notizie essenziali che si vogliono far conoscere agli utenti <A NAME="index10820"></A>IRC, soprattutto per ci&ograve; che riguarda le regole di comportamento richieste.</P>

<H3>119.5.2 &nbsp; <A NAME="title1967"></A><A NAME="anchor2360"></A>
 Configurazione <A NAME="index10821"></A> </H3>

<P>La configurazione pu&ograve; essere molto semplice per la realizzazione di un <A NAME="index10822"></A>servente <A NAME="index10823"></A>IRC interno, per una rete che non pu&ograve; essere raggiunta dall'esterno, ma ovviamente le cose cambiano nel momento in cui si vuole realizzare una rete <A NAME="index10824"></A>IRC. Qui vengono mostrate solo alcuni elementi della configurazione, utili per realizzare un <A NAME="index10825"></A>servente singolo, senza problemi di accesso.</P>

<P>Il file di configurazione &egrave; un file di testo normale, dove le righe che iniziano con il simbolo <SAMP>#</SAMP> sono commenti e le righe vuote o bianche vengono ignorate. Le direttive hanno una forma un po' strana, dove tutto inizia con una lettera che descrive il tipo di informazione che viene fornita dalla direttiva:</P>

<P class="syntax"><TT><VAR>x</VAR>:<VAR>informazione_1</VAR>:<VAR>informazione_2</VAR>:...:<VAR>informazione_n</VAR>
</TT></P>

<P>In generale si dovrebbe disporre di un file di configurazione di partenza adeguatamente commentato, con tutti gli esempi di queste direttive, anche se eventualmente commentate. Qui vengono descritte solo alcune direttive essenziali per la realizzazione di un <A NAME="index10826"></A>servente <A NAME="index10827"></A>IRC locale e isolato.</P>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>Una cosa da considerare nel caso il file contenga direttive che devono essere elaborate secondo un ordine preciso &egrave; il fatto che il file viene letto in ordine inverso, ovvero vengono lette prima le ultime direttive.</P>

</TD></TR>
</TABLE>

<DL>
<DT><STRONG>M</STRONG></DT>
<DD>

<P class="syntax"><TT>M:<VAR>nome_del_servente</VAR>:*:<VAR>descrizione</VAR>:<VAR>porta</VAR>:<VAR>numero_servente</VAR>
</TT></P>

<P>Questa direttiva serve a definire il nome di dominio del <A NAME="index10828"></A>servente, la descrizione del servizio <A NAME="index10829"></A>IRC, la porta in cui resta in ascolto il <A NAME="index10830"></A>servente e il numero di ordine nella rete <A NAME="index10831"></A>IRC. Questo ultimo numero &egrave; un intero che va da 1 a 64 e va stabilito in base alla gerarchia di una rete <A NAME="index10832"></A>IRC; se si tratta dell'unico <A NAME="index10833"></A>servente, deve essere necessariamente indicato il numero uno, come si vede nell'esempio seguente:</P>

<PRE>M:dinkel.brot.dg:*:Mia IRC:6667:1</PRE>

<P>Nel caso in cui il demone <SAMP>ircd</SAMP> venga utilizzato attraverso il controllo del supervisore <A NAME="index10834"></A>Inet, potrebbe essere necessario indicare una porta diversa da quella standard, per non interferire con proprio con il supervisore stesso, che gi&agrave; apre quella porta. Per esempio:</P>

<PRE>M:dinkel.brot.dg:*:Mia IRC:8005:1</PRE>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>&Egrave; da considerare il fatto che un demone <SAMP>ircd</SAMP> compilato espressamente per l'utilizzo attraverso il supervisore <A NAME="index10835"></A>Inet potrebbe non essere in grado di funzionare in modo autonomo, in ogni caso.</P>

</TD></TR>
</TABLE>
</DD>
<DT><STRONG>A</STRONG></DT>
<DD>

<P class="syntax"><TT>A:<VAR>riga_1</VAR>:<VAR>riga_2</VAR>:...:<VAR>riga_n</VAR>
</TT></P>

<P>Si tratta della direttiva con cui si definiscono una serie di informazioni amministrative, che vengono elencate con il comando <SAMP>/admin</SAMP>. In pratica viene mostrato il contenuto dei campi in righe differenti. Si osservi l'esempio seguente che dovrebbe essere sufficientemente intuitivo:</P>

<PRE>A:Mia IRC:Servente IRC:Amministratore &lt;root@dinkel.brot.dg&gt;</PRE>
</DD>
<DT><STRONG>I</STRONG></DT>
<DD>

<P class="syntax"><TT>I:<VAR>maschera_ip</VAR>:<VAR>parola_d'ordine</VAR>:<VAR>maschera_dominio</VAR>::<VAR>classe</VAR>
</TT></P>

<P>Questa direttiva stabilisce i limiti di accesso al servizio in base a una maschera IP e a una maschera del nome di dominio; queste maschere si riferiscono ovviamente ai <A NAME="index10836"></A>nodi che accedono come <A NAME="index10837"></A>clienti. Le maschere in questione si realizzano facilmente utilizzando il simbolo <SAMP>*</SAMP> come variabile indefinita. In generale, l'esempio seguente consente qualsiasi accesso:</P>

<PRE>I:*::*::1</PRE>

<P>Il campo finale, riferito alla classe, deriva dalla definizione delle classi attraverso le direttive <SAMP>Y</SAMP> che qui non vengono descritte, non essendo indispensabili. In ogni caso, il numero uno rappresenta tutte le classi possibili simultaneamente.</P>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>Il campo centrale riservato a una <A NAME="index10838"></A>parola d'ordine serve a consentire l'accesso solo attraverso l'indicazione di questa. Tuttavia, a seconda di come &egrave; stato compilato il demone <SAMP>ircd</SAMP>, questa potrebbe dover essere inserita in modo cifrato. In tal caso dovrebbe anche essere presente un programma apposito per generare tali <A NAME="index10839"></A>parole d'ordine cifrate.</P>

</TD></TR>
</TABLE>
</DD>
<DT><STRONG>K</STRONG></DT>
<DD>

<P class="syntax"><TT>K:<VAR>maschera_nodo</VAR>:<VAR>motivazione</VAR>:<VAR>maschera_utente</VAR>
</TT></P>

<P>Questa direttiva, che non &egrave; obbligatoria, consente di escludere esplicitamente una combinazione di <A NAME="index10840"></A>nodi e di utenti che tentano di accedere da questi <A NAME="index10841"></A>nodi. Le maschere in questione si realizzano con l'uso del carattere <SAMP>*</SAMP>, che rappresenta la solita stringa indefinita. In particolare, il <A NAME="index10842"></A>nodo pu&ograve; essere indicato per nome (di dominio) oppure per numero IP. L'esempio seguente esclude gli utenti il cui nome inizia per <SAMP>dan</SAMP> e accedono dalla rete <CODE>*.brot.dg</CODE>:</P>

<PRE>K:*.brot.dg:Accesso sospeso per un mese:dan*</PRE>
</DD>
</DL>

<P>Per concludere la descrizione della configurazione, l'esempio seguente mostra il caso di una configurazione minima, con le sole direttive indispensabili:</P>

<PRE>M:dinkel.brot.dg:*:Mia IRC:8005:1
A:Mia IRC:Servente IRC:Amministratore &lt;root@dinkel.brot.dg&gt;
I:*::*::1</PRE>

<H3>119.5.3 &nbsp; <A NAME="title1968"></A><A NAME="anchor2361"></A>
 # ircd <A NAME="index10843"></A> </H3>

<P class="syntax"><TT>ircd<STRONG><BIG>[</BIG></STRONG>opzioni<STRONG><BIG>]</BIG></STRONG>...
</TT></P>

<P>Il demone <SAMP>ircd</SAMP> pu&ograve; funzionare in due modi diversi: legato al supervisore <A NAME="index10844"></A>Inet, oppure indipendentemente da questo. Nel primo caso si utilizza l'opzione <SAMP>-i</SAMP> e nel file <CODE>/etc/inetd.conf</CODE> non si inserisce il controllo di <SAMP>tcpd</SAMP>, perch&eacute; si creerebbero dei problemi a causa dell'uso del protocollo IDENT:</P>

<PRE>ircd            stream  tcp     wait    irc     /usr/sbin/ircd ircd -i</PRE>

<P>Diversamente, il demone pu&ograve; essere avviato come un comando normale, senza nemmeno dover aggiungere la richiesta esplicita di funzionamento <A NAME="index10845"></A>sullo sfondo. In effetti, dal momento che si utilizza normalmente una porta TCP non privilegiata, ogni utente comune pu&ograve;, teoricamente, avviare questo tipo di servizio.</P>

<DL>
<DT><STRONG>Alcune opzioni</STRONG></DT>
<DD>

<P class="syntax"><TT>-t
</TT></P>

<P>Fa in modo che il demone funzioni <A NAME="index10846"></A>in primo piano, emettendo tutte le sue informazioni diagnostiche attraverso lo <A NAME="index10847"></A>standard output.</P>

<P class="syntax"><TT>-x<VAR>n</VAR>
</TT></P>

<P>Definisce il livello diagnostico richiesto: maggiore &egrave; il valore <VAR>n</VAR>, maggiore la quantit&agrave; di informazioni che si ottengono.</P>

<P class="syntax"><TT>-i
</TT></P>

<P>Stabilisce che il demone &egrave; sotto il controllo del supervisore <A NAME="index10848"></A>Inet.</P>

<P class="syntax"><TT>-f<VAR>file_di_configurazione</VAR>
</TT></P>

<P>Stabilisce espressamente da quale file trarre la configurazione.</P>

<P class="syntax"><TT>-c
</TT></P>

<P>Si usa questa opzione quando si avvia il demone attraverso uno <A NAME="index10849"></A>script della <A NAME="index10850"></A>procedura di inizializzazione del sistema, per cui &egrave; necessario che il demone stesso si sganci dallo <A NAME="index10851"></A>script e diventi un processo dipendente direttamente da <A NAME="index10852"></A>Init.</P>
</DD>
</DL>

<H2>119.6 &nbsp; <A NAME="title1969"></A><A NAME="anchor2362"></A>
 Dal lato del <A NAME="index10853"></A>cliente </H2>

<P>Il compito di un programma <A NAME="index10854"></A>cliente <A NAME="index10855"></A>IRC &egrave; quello di consentire la comunicazione effettiva tra l'utente umano e il <A NAME="index10856"></A>servente <A NAME="index10857"></A>IRC. La prima cosa che avviene &egrave; la <STRONG><EM>registrazione</EM></STRONG>, attraverso la quale l'utente ottiene l'accesso al servizio assieme alla definizione del proprio nominativo.</P>

<P>Una volta instaurata la connessione, l'utente ha la possibilit&agrave; di unirsi a uno o pi&ugrave; canali di discussione, creandoli automaticamente se questi non sono gi&agrave; presenti.</P>

<H2>119.7 &nbsp; <A NAME="title1970"></A><A NAME="anchor2363"></A>
 <A NAME="index10858"></A>ircII </H2>

<P><A NAME="index10859"></A>ircII <SUP><A HREF="#footnote3" NAME="footnote-ref3">(3)</A></SUP> &egrave; il programma <A NAME="index10860"></A>cliente standard per comunicare con <A NAME="index10861"></A>IRC. Si utilizza attraverso un terminale a caratteri normale, dove lo schermo &egrave; diviso in due parti: quella superiore per mostrare i messaggi che scorrono verso l'alto; quella inferiore che &egrave; semplicemente la riga da cui si impartiscono i comandi. Il programma eseguibile &egrave; <SAMP>irc</SAMP> e si avvia in maniera molto semplice, come nell'esempio seguente, dove viene specificato il nominativo desiderato e l'indirizzo del <A NAME="index10862"></A>servente <A NAME="index10863"></A>IRC:</P>

<P class="command"><CODE>$&nbsp;</CODE><STRONG><CODE>irc tizio dinkel.brot.dg</CODE></STRONG></P>

<TABLE ID="anchor2364" BORDER="0" WIDTH="100%">
<TR><TD>
<HR>

<PRE>*** Welcome to the Internet Relay Network tizio (from dinkel.brot.dg)
*** /etc/irc/script/local V0.5 for Debian finished. Welcome to ircII.
*** If you have not already done so, please read the new user information with
+/HELP NEWUSER
*** Your host is dinkel.brot.dg, running version u2.10.07.0
*** This server was created Fri Dec 17 1999 at 19: 54:56 CST
*** umodes available dioswkg, channel modes available biklmnopstv
*** There are 1 users and 0 invisible on 1 servers
*** This server has 1 clients and 0 servers connected
*** Highest connection count: 1 (1 clients)
*** - dinkel.brot.dg Message of the Day -
*** - 16/3/2001 20:44
*** - Benvenuto presso irc.brot.dg
*** -
*** on 1 ca 1(2) ft 10(10)


________________________________________________________________________________
[1] 20:45 tizio * type /help for help
_</PRE>
<HR>

<P class="caption"> Figura <A HREF="a2155.html#anchor2364">119.2</A>. Schermata iniziale all'avvio di <A NAME="index10864"></A>ircII. </P>

</TD></TR>
</TABLE>

<P>In questo caso, il messaggio del giorno &egrave; soltanto &laquo;Benvenuto presso irc.brot.dg&raquo;, che si vede in basso; il resto &egrave; stato generato automaticamente dal <A NAME="index10865"></A>servente. La riga contenente la stringa</P>

<PRE>[1] 20:45 tizio * type /help for help</PRE>

<P>&egrave; la linea di demarcazione tra la parte superiore contenente i messaggi e la parte inferiore riservata ai comandi dell'utente. Come si pu&ograve; vedere, viene suggerito l'uso del comando <SAMP>/help</SAMP> per richiamare l'elenco dei comandi disponibili.</P>

<P>Se si impartisce il comando <SAMP>/help</SAMP>, come suggerito, si passa a un contesto differente, in cui si possono ottenere informazioni dettagliate su questo o quel comando:</P>

<P class="command"><STRONG><CODE>/help</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>!            :            abort        admin        alias
assign       away         basics       beep         bind
brick        bye          cd           channel      clear
commands     comment      connect      ctcp         date
dcc          deop         describe     die          digraph
dmsg         dquery       echo         encrypt      etiquette
eval         exec         exit         expressions  flush
foreach      help         history      hook         icb
if           ignore       info         input        intro
invite       ircii        ison         join         kick
kill         lastlog      leave        links        list
load         lusers       me           menus        mload
mode         motd         msg          names        news
newuser      nick         note         notice       notify
on           oper         parsekey     part         ping
query        quit         quote        rbind        redirect
rehash       restart      rules        save         say
send         sendline     server       servlist     set
signoff      sleep        squery       squit        stats
summon       time         timer        topic        trace
type         userhost     users        version      wait
wallops      which        while        who          whois
whowas       window       xecho        xtype
[1] 20:56 daniele * type /help for help
Help? _</PRE>

<P>Si pu&ograve; osservare dalla figura che nella riga di comando appare un <A NAME="index10866"></A>invito, che prima non era presente: <SAMP>Help?</SAMP>, a significare che si pu&ograve; indicare il nome di un comando di quelli elencati per conoscerne la sintassi. Per esempio:</P>

<P class="command"><CODE>Help?&nbsp;</CODE><STRONG><CODE>help</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>*** Help on help
Usage: HELP [&lt;command&gt; [&lt;subcommands&gt;]]
  Shows help on the given command.  The help documentation is
  set up in a hierarchical fashion.  That means that certain
  help topics have sub-topics under them.  For example, doing
    HELP ADMIN
  gives help on the admin command, while:
    HELP SET
  gives help on the set command and also displays a list of
  sub-topics for SET.  To get help on the subtopics, you would
  do:
    HELP SET &lt;subtopic&gt;
  where &lt;subtopic&gt; is one of the subtopics.  If you are using the
  built in help, then you need only type the subtopic name.  The
  input prompt will indicate what help level you are on.  Hitting
  return will move you up one level.

  At any time, you can specify a ? to get a list of subtopics
  without the associated help file, for example:
    HELP ?
  gives a list of all main help topics.  The following:
    HELP BIND ?
  gives the list of all BIND subtopics.  If you use a ? with
[1] 21:00 daniele * type /help for help
*** Hit any key for more, 'q' to quit ***</PRE>

<P>Come si vede, se non c'&egrave; abbastanza spazio per visualizzare tutto il testo disponibile, basta digitare un carattere qualunque per vedere la pagina successiva, oppure basta inserire la lettera <SAMP>q</SAMP> per terminare.</P>

<P>Alla fine della navigazione nella guida interna, basta premere il tasto [<KBD>Invio</KBD>] senza specificare il nome di alcun comando per ritornare alla modalit&agrave; di funzionamento normale, dove non appare alcun <A NAME="index10867"></A>invito.</P>

<P class="command"><CODE>Help?&nbsp;</CODE><STRONG><CODE></CODE></STRONG>[<KBD>Invio</KBD>]</P>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>I comandi impartiti a <A NAME="index10868"></A>ircII sono preceduti dal simbolo <SAMP>/</SAMP>, per distinguerli dal testo dei messaggi che invece vanno inviati al canale di discussione.</P>

</TD></TR>
</TABLE>

<P>Generalmente, quando ci si trova di fronte all'<A NAME="index10869"></A>invito normale, &egrave; possibile richiamare i comandi precedenti scorrendo con i tasti [<KBD>freccia&nbsp;su</KBD>] e [<KBD>freccia&nbsp;gi&ugrave;</KBD>].</P>

<P>Si conclude il funzionamento di <A NAME="index10870"></A>ircII con il comando <SAMP>/quit</SAMP>.</P>

<H2>119.8 &nbsp; <A NAME="title1971"></A><A NAME="anchor2365"></A>
 <A NAME="index10871"></A>Tkirc </H2>

<P><A NAME="index10872"></A>Tkirc <SUP><A HREF="#footnote4" NAME="footnote-ref4">(4)</A></SUP> &egrave; un <A NAME="index10873"></A>programma frontale per <A NAME="index10874"></A>ircII. Il programma eseguibile &egrave; <SAMP>tkirc</SAMP> e si avvia in maniera molto semplice, come nell'esempio seguente, dove viene specificato il nominativo desiderato e l'indirizzo del <A NAME="index10875"></A>servente <A NAME="index10876"></A>IRC:</P>

<P class="command"><CODE>$&nbsp;</CODE><STRONG><CODE>tkirc tizio dinkel.brot.dg</CODE></STRONG></P>

<TABLE ID="anchor2366" BORDER="0" WIDTH="100%">
<TR><TD>

<P><IMG SRC="114.jpg" ALT="figure/a2-tkirc-avvio" HEIGHT="453"></P>

<P class="caption"> Figura <A HREF="a2155.html#anchor2366">119.3</A>. Schermata iniziale all'avvio di <A NAME="index10877"></A>Tkirc. </P>

</TD></TR>
</TABLE>

<P>Utilizzando il <A NAME="index10878"></A>men&ugrave; a tendina, &egrave; possibile ottenere un'altra finestra con la quale comunicare in un altro canale. Si utilizza precisamente la voce {<CODE>New&nbsp;window</CODE>} dal <A NAME="index10879"></A>men&ugrave; {<CODE>Project</CODE>}.</P>

<P>Nella colonna destra, vengono elencati gli utenti che partecipano al canale con cui si sta comunicando. Con un clic doppio del mouse si ottengono le informazioni su di loro, come si vede nella figura <A HREF="a2155.html#anchor2367">119.4</A>.</P>

<TABLE ID="anchor2367" BORDER="0" WIDTH="100%">
<TR><TD>

<P><IMG SRC="115.jpg" ALT="figure/a2-tkirc-nick" HEIGHT="453"></P>

<P class="caption"> Figura <A HREF="a2155.html#anchor2367">119.4</A>. Informazioni sugli utenti collegati allo stesso canale. </P>

</TD></TR>
</TABLE>

<H2>119.9 &nbsp; <A NAME="title1972"></A><A NAME="anchor2368"></A>
 Utilizzo di massima di un <A NAME="index10880"></A>cliente <A NAME="index10881"></A>IRC </H2>

<P>Generalmente, prima di entrare in un canale si pu&ograve; avere l'interesse di visualizzare l'elenco di quelli disponibili. Questo si ottiene con il comando <SAMP>/list</SAMP>. Per esempio, con <A NAME="index10882"></A>ircII:</P>

<P class="command"><CODE></CODE><STRONG><CODE>/list</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>*** Channel    Users  Topic
*** #prova     1
*** #pippo     3</PRE>

<P>Come si vede, il nome di un canale inizia con il carattere <SAMP>#</SAMP> per convenzione. In alternativa, il nome di un canale pu&ograve; iniziare anche per <SAMP>&amp;</SAMP>, ma in tal caso si tratta di un canale che riguarda esclusivamente il <A NAME="index10883"></A>servente al quale si &egrave; connessi, per cui non si diffonde agli altri <A NAME="index10884"></A>serventi della stessa rete <A NAME="index10885"></A>IRC.</P>

<P>Nello stesso modo, pu&ograve; essere utile visualizzare l'elenco degli utenti collegati. Questo si ottiene con il comando <SAMP>/names</SAMP>, che va usato comunque con parsimonia, considerando che una rete <A NAME="index10886"></A>IRC &laquo;normale&raquo; &egrave; sempre molto affollata.</P>

<P class="command"><CODE></CODE><STRONG><CODE>/names</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>Pub: #prova     tizio @daniele
Pub: #pippo     caio @sempronio</PRE>

<P>Nell'elenco degli utenti, gli operatori di canale sono evidenziati dal prefisso <SAMP>@</SAMP>. Eventualmente, se si vede il simbolo <SAMP>*</SAMP> come prefisso, si tratta di un operatore <A NAME="index10887"></A>IRC.</P>

<P>Il programma <A NAME="index10888"></A>cliente che si utilizza potrebbe attribuire automaticamente il nominativo per accedere alla rete <A NAME="index10889"></A>IRC, sfruttando presumibilmente il nominativo utente usato per accedere al proprio elaboratore. Se il nome in questione non &egrave; compatibile, eventualmente perch&eacute; gi&agrave; utilizzato, &egrave; il programma <A NAME="index10890"></A>cliente stesso che richiede di indicare un altro nominativo. In ogni caso, &egrave; possibile cambiare il proprio nome attraverso il comando <SAMP>/nick</SAMP>:</P>

<P class="command"><CODE></CODE><STRONG><CODE>/nick pinco</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P>L'esempio mostra il caso in cui l'utente desideri usare il nome <SAMP>pinco</SAMP>, ammesso che questo non sia gi&agrave; utilizzato nella rete <A NAME="index10891"></A>IRC in cui si &egrave; connessi.</P>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>Il nominativo usato all'interno di una rete <A NAME="index10892"></A>IRC non pu&ograve; essere pi&ugrave; lungo di nove caratteri.</P>

</TD></TR>
</TABLE>

<P>Ci si aggrega a un canale con il comando <SAMP>/join</SAMP>. Se il canale indicato non esiste ancora, viene creato per l'occasione e l'utente che lo crea ne diventa l'operatore.</P>

<P class="command"><CODE></CODE><STRONG><CODE>/join #prova</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P>L'esempio mostra il caso in cui ci si voglia aggregare al canale <SAMP>#prova</SAMP>. &Egrave; importante ricordare che &egrave; necessario il prefisso davanti al nome, come si vede dall'esempio.</P>

<P>Quando ci si trova in un canale, ci&ograve; che si digita senza il prefisso <SAMP>/</SAMP>, viene trasmesso al canale stesso:</P>

<P class="command"><CODE></CODE><STRONG><CODE>Ciao a tutti!</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P>Come ci si unisce a un canale, ci si pu&ograve; allontanare. Questo si ottiene con il comando <SAMP>/leave</SAMP>:</P>

<P class="command"><CODE></CODE><STRONG><CODE>/leave #prova</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P>Segue il riepilogo di alcuni comandi essenziali per l'uso di un <A NAME="index10893"></A>cliente <A NAME="index10894"></A>IRC.</P>

<UL>

<LI>

<P class="syntax"><TT>/list<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Elenca i canali presenti nella rete <A NAME="index10895"></A>IRC.</P>
</LI>

<LI>

<P class="syntax"><TT>/names<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG><STRONG><BIG>[</BIG></STRONG><VAR>canale</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Elenca gli utenti presenti nella rete <A NAME="index10896"></A>IRC, oppure solo quelli presenti in un canale particolare.</P>
</LI>

<LI>

<P class="syntax"><TT>/nick<VAR>nome</VAR>
</TT></P>

<P>Consente di modificare, o di stabilire, il proprio nominativo nell'ambito della rete <A NAME="index10897"></A>IRC.</P>
</LI>

<LI>

<P class="syntax"><TT>/who<VAR>canale</VAR>
</TT></P>

<P>Consente di elencare gli utenti che sono presenti nel canale indicato.</P>
</LI>

<LI>

<P class="syntax"><TT>/whois<VAR>nome</VAR><STRONG><BIG>[</BIG></STRONG>,<VAR>nome</VAR><STRONG><BIG>]</BIG></STRONG>...
</TT></P>

<P>Consente di elencare le informazioni disponibili sugli utenti elencati. I nomi possono essere anche composti con caratteri jolly, ovvero con l'uso dell'asterisco per indicare una stringa qualunque.</P>
</LI>

<LI>

<P class="syntax"><TT>/join<VAR>canale</VAR>
</TT></P>

<P>Consente di entrare in un canale.</P>
</LI>

<LI>

<P class="syntax"><TT>/msg<VAR>nome</VAR><VAR>messaggio</VAR>
</TT></P>

<P>Consente di inviare un messaggio esclusivamente all'utente indicato.</P>
</LI>

<LI>

<P class="syntax"><TT>/dccchat<VAR>nome</VAR>
</TT></P>

<P>Invia all'utente indicato una richiesta per instaurare una connessione privilegiata tra i due. Se l'altro utente risponde con lo stesso comando, si ottiene questa connessione. Per comunicare in modo privato, i due usano il comando <SAMP>msg&nbsp;=<VAR>nome</VAR>&nbsp;...</SAMP>.</P>
</LI>

<LI>

<P class="syntax"><TT>/msg=<VAR>nome</VAR><VAR>messaggio</VAR>
</TT></P>

<P>Invia un messaggio esclusivamente all'utente indicato, che gi&agrave; prima era stato collegato con un comando <SAMP>/dcc&nbsp;chat</SAMP>.</P>
</LI>

<LI>

<P class="syntax"><TT>/quit<STRONG><BIG>[</BIG></STRONG><VAR>messaggio</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Chiude il funzionamento del programma <A NAME="index10898"></A>cliente, ma prima si allontana dal canale, se necessario, inviando eventualmente il messaggio indicato.</P>
</LI>
</UL>

<H2>119.10 &nbsp; <A NAME="title1973"></A><A NAME="anchor2369"></A>
 Riferimenti </H2>

<UL>

<LI>

<P><EM>Internet Relay Chat (IRC) help</EM></P>

<P>&lt;<EM><A HREF="http://www.irchelp.org/">http://www.irchelp.org/</A></EM>&gt;</P>
</LI>

<LI>

<P>David Caraballo, Joseph Lo, <EM>The IRC prelude</EM></P>

<P>&lt;<EM><A HREF="http://www.irchelp.org/irchelp/new2irc.html">http://www.irchelp.org/irchelp/new2irc.html</A></EM>&gt;</P>
</LI>
</UL>
Appunti di informatica libera 2001.08.18  --- <EM>Copyright &copy; 2000-2001 Daniele Giacomini -- &nbsp;daniele&nbsp;@&nbsp;swlibero.org</EM><HR>

<P><A HREF="#footnote-ref1" NAME="footnote1">1)</A> In generale un canale pu&ograve; essere privato, segreto oppure pubblico.</P>

<P><A HREF="#footnote-ref2" NAME="footnote2">2)</A> <STRONG>Ircd</STRONG> &nbsp; GPL con residui BSD</P>

<P><A HREF="#footnote-ref3" NAME="footnote3">3)</A> <STRONG>ircII</STRONG> &nbsp; software libero con licenza speciale</P>

<P><A HREF="#footnote-ref4" NAME="footnote4">4)</A> <STRONG>Tkirc</STRONG> &nbsp; GNU GPL</P>
</DIV>
<HR>
<P>Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome  <A HREF="irc.html">irc.html</A></P>
<P>
<A HREF="a2156.html">[successivo]</A>
<A HREF="a2154.html">[precedente]</A>
<A HREF="a2.html">[inizio]</A>
<A HREF="a2506.html">[fine]</A>
<A HREF="a21.html">[indice generale]</A>
<A HREF="a26.html">[violazione GPL]</A>
<A HREF="a2504.html">[licenze]</A>
<A HREF="a2505.html">[indice analitico]</A>
</P>
</BODY>
</HTML>