# Manuale di &ktalkd;

## Introduzione

&ktalkd; è un demone `talk` evoluto - un programma che processa le richieste in arrivo dal comando `talk`, le annuncia all'utente e permette di rispondere usando un client talk.

Nota che &ktalkd; è progettato per funzionare su macchine usate da un singolo utente, e non dovrebbe essere usato su macchine multiutente: poiché legge i file di configurazione dell'utente, gli utenti possono costringere il demone `talk` ad eseguire qualsiasi comando, e questo è particolarmente pericoloso. Non usare &ktalkd; se crei account per persone di cui non ti fidi completamente sulla tua macchina.

In questo documento, se qualcuno vuole parlare con te, sarai identificato come il chiamato.

&ktalkd; offre le seguenti funzionalità:

Risponditore automatico

- Se il chiamato non è connesso al computer, o se non risponde dopo il secondo annuncio, viene avviato un risponditore automatico, che prende il messaggio e lo invia per posta elettronica al chiamato.

Suono

- È possibile riprodurre un suono durante l'annuncio, se lo desideri.

X Announce

- Se viene compilato con &kde; installato, &ktalkd; userà `ktalkdlg`, una finestra di dialogo di &kde;, per gli annunci. Se &ktalk; è già in esecuzione, verrà usato questo per dare l'annuncio (Nuova funzione a partire dalla versione 0.8.8).

Annunci su più display

- Se sei connesso da remoto (⪚ con il comando `export`` `DISPLAY`=`...``), l'annuncio di X sarà fatto anche sul display remoto. Rispondi all'annuncio dalla sessione che preferisci! Se sei connesso anche attraverso ad un terminale testuale, e se non stai usando xterm (è una limitazione interna), vedrai l'annuncio anche nel terminale, per il caso in cui tu usi il terminale al momento dell'annuncio.

Inoltro (Nuova funzione, dalla versione 0.8.0)

- Puoi impostare l'inoltro ad un altro utente anche su un host differente se sei via. Ci sono tre diversi metodi di inoltro. Vedi la sezione Uso.

Configurazione

- Se &ktalkd; è compilato per &kde;, legge la configurazione dai file delle impostazioni di &kde;, quelli globali (`$`KDEDIR`/share/config/ktalkdrc`) e quelli dell'utente, residenti nella cartella personale. Quello globale deve essere modificato a mano dall'amministratore, ma ora è disponibile una finestra di configurazione per quello personale. Si chiama `kcmtalkd` e si trova in &kcontrol; dopo l'installazione di &ktalkd;. Per i sistemi dove &kde; non è installato, &ktalkd; leggerà il file `/etc/talkd.conf`.

Internazionalizzazione

- Sotto &kde; l'annuncio sarà fatto nella tua lingua a patto che tu l'abbia impostata dai menu di &kde; e che qualcuno abbia tradotto `ktalkdlg` nella tua lingua. Lo stesso è vero per la finestra di configurazione, `kcmktalkd`.

Gestione di `otalk` e `ntalk` (Nuova funzione, dalla versione 0.8.1)

- &ktalkd; ora gestisce entrambi i protocolli, anche per l'inoltro. Ovviamente, anche &ktalk; gestisce entrambi i protocolli.

Spero che questo demone per talk ti possa essere utile,

David Faure faure@kde.org

## Uso

Per usare &ktalkd; devi usare un client `talk`. Il programma da riga di comando `talk` è presente in quasi tutte le distribuzioni di sistemi &UNIX;. Prova ad usare ``talk` `tuo_nomeutente`` per vedere che cosa succede quando ricevi richieste `talk`.

Puoi anche provare il risponditore automatico allo stesso modo: avvia un comando `talk` diretto a te stesso, ignora l'annuncio per due volte, e vedrai il risponditore automatico.

C'è un client `talk` con interfaccia grafica per &kde;, &ktalk;. Non è ancora parte dei pacchetti di &kde; ma lo puoi trovare suftp://ftp.kde.org. Dovrebbe essere in ftp://ftp.kde.org/pub/kde/stable/latest/apps/network

La finestra di dialogo dell'annucio è banale: Rispondi o Ignora.

La finestra di configurazione dovrebbe essere abbastanza semplice da usare, tranne che per l'impostazione dell'inoltro ad un altro utente (o anche ad un altro host).

### Scelta del metodo di inoltro

Nessuno è perfetto, ciascuno ha i suoi vantaggi (+) e svantaggi (-).

FWA - (ForWard Announcement) solo inoltro dell'annuncio.

- Connessione diretta. Non è raccomandato.

  - (+) Saprai chi è il chiamante, ma

  - (-) il chiamante dovrà rispondere ad un annuncio da parte tua. Fastidioso.

  - (-) Non usare questo metodo se hai un risponditore automatico all'indirizzo andato via. (Il risponditore automatico non può mostrare gli annunci, farebbe confusione!)

FRW - (ForWard Requests) inoltra tutte le richieste, cambiando le informazioni se necessario

- Connessione diretta.

  - (+) Il chiamante non saprà che sei assente, ma

  - (-) non potrai sapere davvero chi è che ti chiama - solo il suo nome utente, (potresti vedere, ad esempio `talk da Wintalk@mio_host`)

FWT - (ForWard and Talk) Inoltra tutte le richieste e accetta la chiamata.

- Nessuna connessione diretta.

  - (+) Come sopra, ma funziona anche se tu ed il chiamante non potete essere in contatto diretto fra di voi (⪚ firewall).

  - (+) ti verrà detto chi ti sta chiamando quando accetterai la chiamata

  - (-) ma come nel caso FRW, non vedrai il nome della macchina nell'annuncio

In breve, usa FWT se vuoi usarlo dietro ad un firewall (e se &ktalkd; può accedere ad entrambe le reti), e FWR altrimenti.

## Domande e risposte

Come mai l'utente `root` non riceve gli annunci di &kde;?

Perché questo sarebbe un problema di sicurezza, con il metodo attuale di identificazione dell'utente. Puoi aggirare questa limitazione aggiungendo due righe al file di configurazione di `xdm` (che sono gli stessi di &kdm;).

La distribuzione S.u.S.E &Linux; normalmente è già predisposta con queste righe.

Questi file di configurazione sono normalmente conservati in una cartella come `/etc/X11/xdm`, o `/usr/X11R6/lib/X11/xdm` su altri sistemi. Il resto della procedura presuppone che si trovino in `/etc/X11/xdm`, quindi preparati a correggere il percorso, se necessario.

Ecco che cosa devi fare:

1. Modifica il file `Xstartup`, o crealo, (nella cartella di configurazione di `xdm`) in modo che contenga:

       #!/bin/sh
       /etc/X11/xdm/GiveConsole
       sessreg -a -l $DISPLAY -x /etc/X11/xdm/Xservers $USER

2. ed il file `Xreset` in modo che contenga:

       #!/bin/sh
       /etc/X11/xdm/TakeConsole
       sessreg -d -l $DISPLAY $USER

3. Assicurati che `xdm-config` faccia riferimento ai suddetti file:

       DisplayManager._0.startup:      /etc/X11/xdm/Xstartup
       DisplayManager._0.reset:        /etc/X11/xdm/Xreset

Questo farà in modo che &kdm; (o `xdm`) facciano accedere l'utente ad utmp, che è la procedura corretta. A mio parere, la procedura di login non è compito di &konsole; o di `xterm`. Questo, però, non farà connettere l'utente come utente di X se si usa `startx`... Qualcuno ha dei suggerimenti a proposito?

Come mai io, come normale utente, non ricevo gli annunci di &kde;?

Se usi un sistema &Linux; (con `/proc` abilitato) questo comportamento è un bug. Per piacere, mandami una descrizione del bug in modo che possa correggerlo.

Se stai usando la versione 2.0.35 di &Linux;, questo è un bug noto del kernel, che non permette a `root` di leggere `/proc`. La soluzione è la stessa della domanda precedente, a patto che tu usi &kdm; o `xdm` per accedere ad X. In ogni caso, faresti bene ad aggiornare il sistema!

Altrimenti, è tutto normale. &ktalkd; non riesce a trovare l'utente perché &kde; non lo registra in utmp ed il riconoscimento basato su &Linux; (`/proc`) è disabilitato. La soluzione è la stessa che nella domanda precedente, a patto che utilizzi kdm o xdm per accedere ad X. Un'altra soluzione è di assicurarti che una copia dell'applicazione xterm sia sempre in esecuzione.

Come faccio ad ottenere un output di debug da &ktalkd;?

Poiché è un demone, non ci sarà output di debug sull'output standard. Per ottenere l'output di debug (ad esempio prima di inoltrare la segnalazione di un bug!), aggiorna le righe di `inetd.conf` che avviano &ktalkd; e &kotalkd; in modo che si legga:

    talk   dgram   udp     wait    root    /usr/sbin/tcpd  /opt/kde/bin/ktalkd -d
    ntalk  dgram   udp     wait    root    /usr/sbin/tcpd  /opt/kde/bin/ktalkd -d

Nota bene l'opzione `-d`.

Quindi modifica `/etc/syslog.conf` per aggiungere la seguente riga:

    *.*         /var/log/all_messages

Perché funzioni, devi far ripartire `inetd` e `syslogd`:

    % killall -HUP inetd
    % killall -HUP syslogd

Infine, avvia una sessione di `talk` e leggi il risultato nel file `/var/log/all_messages`

Quando inoltri la segnalazione di un bug, non dimenticare mai di includere l'output di debug, e riporta anche il numero di versione di &ktalkd; e l'output di `./configure`.

## Copyright e licenze

La manutenzione di &ktalkd; ed i suoi miglioramenti sono fatti da David Faure, faure@kde.org

Il programma originale è stato scritto da Robert Cimrman, cimrman3@students.zcu.cz

Luciano Montanaro mikelima@cirulla.net

&underFDL; &underGPL;

## Installazione

### Dove trovare &ktalkd;

&ktalkd; è ora un'applicazione del nucleo di &kde; http://www.kde.org, e fa parte del pacchetto kdenetwork.

È sempre possibile scaricare l'ultima versione di &ktalkd; dal sito &FTP; principale del progetto &kde;, ftp://ftp.kde.org/pub/kde e dai suoi mirror. Normalmente la troverai in ftp://ftp.kde.org/pub/kde/stable/latest/apps/network

### Requisiti

Per compilare con successo &ktalkd; ti servirà l'ultima versione delle librerie di &kde;, oltre alla libreria C++ &Qt;. Tutte le librerie richieste oltre a ktalkd stesso sono reperibili presso ftp://ftp.kde.org/pub/kde/

### Compilazione e installazione

Per compilare ed installare &ktalkd; sul tuo sistema, digita i seguenti comandi nella cartella base della distribuzione di &ktalkd;:

    % ./configure
    % make
    % make install

Poiché &ktalkd; è un demone, ``make` `install`` richiederà i privilegi di `root`.

Non dimenticare di aggiornare `/etc/inetd.conf`. Ad esempio, su un sistema &Linux;, se &kde; risiede in `/opt/kde` cambia le righe riguardanti `talk` e `ntalk` con:

    talk   dgram   udp     wait    root    /usr/sbin/tcpd  /opt/kde/bin/ktalkd
    ntalk  dgram   udp     wait    root    /usr/sbin/tcpd  /opt/kde/bin/ktalkd

Viene fornito uno script che applica le modifiche necessarie automaticamente. Aggiorna il file `inetd.cong` semplicemente eseguendo

    % ./post-install.sh

Comunque, dovrai riavviare inetd dopo aver fatto questo. Sulla maggior parte dei sistemi &Linux; invoca il seguente comando:

    % killall -HUP inetd

Sui sistemi più recenti che usano `xinetd`, non c'è più `/etc/inetd.conf`, ed è necessario invece creare un file chiamato `/etc/xinetd.d/talk/`, contenente le seguenti righe:

    service talk
    {
            socket_type = dgram
            wait = yes
            user = root
            server = /usr/bin/ktalkd
    }

    service ntalk
    {
            socket_type = dgram
            wait = yes
            user = root
            server = /usr/bin/ktalkd
    }

quindi riavvia `xinetd`.

Per piacere, fammi sapere se hai dovuto fare delle modifiche per compilare e far funzionare &ktalkd; sulla tua piattaforma.