# &ktalkd;-håndbogen

David Faure

    faure@kde.org

&erik.kjaer.pedersen.role;
&FDLNotice;
2001 David Faure
2001-05-02
1.05.02

&ktalkd; er en forbedret `talk`-dæmon, et program til at håndtere indkommende forespørgsler fra `talk`, annoncere dem og lade dig svare på dem med en talk-klient.

KTALKD talk talkd otalk ntalk ktalkdlg kcmktalkd

## Indledning

&ktalkd; er en forbedret `talk`-dæmon, et program til at håndtere indkommende forespørgsler fra `talk`, annoncere dem og lade dig svare på dem med en talk-klient.

Bemærk at &ktalkd; er beregnet at køre på en arbejdsstation med én bruger, og skal ikke køres på en flerbrugermaskine: eftersom den læser brugernes konfigurationsfiler, kan brugere få `talk`-dæmonen til at køre en hvilken som helst kommando, noget som er yderst farligt. Brug ikke &ktalkd; hvis du laver konti på din maskine for personer som du ikke stoler fuldstændigt på.

I dette dokument kaldes du modtageren, hvis nogen vil tale med dig.

&ktalkd; har følgende funktioner:

Svarmaskine

  Hvis modtageren ikke er logget på, eller ikke svarer efter det andet forsøg, startes automatisk en telefonsvarer som modtager meddelelsen, og sender den som en e-mail til modtageren.

Lyd

  Hvis det ønskes, afspilles en lyd ved annonceringen.

Annoncering via X

  Hvis &ktalkd; kompileres med &kde; installeret, bruger den `ktalkdlg`, en &kde;-dialog, til annonceringer. Hvis &ktalk; kører, bliver den bedt om selv at gøre annonceringen (Nyt siden 0.8.8).

Annoncering på flere skærme

  Hvis du er logget på fra en anden maskine (f.eks. med kommandoen ``export` `DISPLAY`=...`), gøres annonceringen via X også på denne skærm. Svar på hvilken du vil! Hvis du også er logget på en tekstterminal, og hvis du ikke bruger xterms (intern begrænsning), så ser du også en tekstannoncering, hvis du anvender tekstterminalen når annonceringen skal gøres.

Videresending (Nyt siden 0.8.0)

  Du kan videresende til en anden brugere, eller til og med til en anden værtsmaskine hvis du er væk. Der er tre forskellige viderebefordringsmetoder. Se afsnittet Brug.

Indstilling

  Hvis &ktalkd; er kompileret for &kde;, læser den indstillingerne fra &kde;s konfigurationsfil for hele systemet, (`$`KDEDIR`/share/config/ktalkdrc`) og fra brugerens fil i hjemmemappen. Den for hele systemet skal redigeres manuelt af systemadministratoren, men nu findes der en indstillingsdialog for brugerens fil. Den hedder `kcmktalkd` og findes i kontrolcentret efter &ktalkd; er installeret. På andre systemer end &kde;, læser &ktalkd; `/etc/talkd.conf`.

Sprog

  Med &kde; vises annonceringen på dit sprog under forudsætning af at du indstiller det i &kde;'s menuer, og at nogen har oversat `ktalkdlg` til dit sprog. Det samme gælder indstillingsdialogen, `kcmktalkd`.

Støtte for `otalk` og `ntalk` (Nyt siden 0.8.1)

  &ktalkd; understøtter nu begge protokoller til og med ved videresending. &ktalk; understøtter også begge protokoller.

Jeg håber at du vil nyde denne talk-dæmon.

David Faure faure@kde.org

## Brug

For at bruge &ktalkd;, behøver du en `talk`-klient. Den tekstbaserede `talk` findes på de fleste &UNIX;-systemer. Forsøg med ``talk` dit_brugernavn` for at se hvad der sker når du modtager en forespørgsel fra `talk`.

Du kan også prøve telefonsvareren på samme måde: start `talk` til dig selv, ignorér annonceringen to gange så ser du telefonsvareren.

Der er en `talk`-klient med en grafisk grænseflade for &kde;, som hedder &ktalk;. Den levereres ikke med &kde;-pakken, men du kan finde den på ftp://ftp.kde.org. Den skulle være i ftp://ftp.kde.org/pub/kde/stable/latest/apps/network

Annonceringsdialogen er triviel: svar eller ignorér.

Indstillingsdialogen skulle være helt ligetil, bortset fra når det gælder at indstille videresending til en anden bruger (eller til og med en anden værtsmaskine).

### Vælg metode for videresending

Ingen er perfekt, men alle har fordele (+) og bagdele (-).

FWA - Videresend kun annonceringer.

  Direkte forbindelse. Anbefales ikke.

  - (+) Du ved hvem opringeren er, men

  - (-) Den som kalder skal svare på en annoncering fra dig. Irriterende.

  - (-) Brug det ikke hvis du har en telefonsvarer på stedet hvor du er borte fra. (Telefonsvareren kan få en annoncering til at dukke op, og det ville være forvirrende!)

FWR - Videresend hver forespørgsel, og ændr information om nødvendigt

  Direkte forbindelse

  - (+) Den som kalder bliver ikke klar over at du er borte, men

  - (-) Du véd ikke egentlig hvem den som kalder er, kun brugernavnet (så du kan komme til at se `samtale fra Winsamtale@min_værtsmaskine`)

FWT - Videresend hver forespørgsel og acceptér samtalen.

  Ingen direkte forbindelse.

  - (+) Samme som ovenfor, men virker også hvis du og den som kalder ikke kan være i direkte kontakt med hinanden (f.eks. en brandmur).

  - (+) Du får at vide hvem som virkelig taler med dig når du accepterer samtalen.

  - (-) Men som med FWR, kommer du ikke til at se hans maskinenavn i annonceringen.

I korthed, brug FWT hvis du vil bruge det bagved en brandmur (og hvis &ktalkd; kan komme til begge netværk), ellers brug FWR.

## Spørgsmål og svar

Hvorfor tager root ikke imod &kde;-annonceringer?

Eftersom det ville være et sikkerhedshul med den nuværende brugeridentifikation. Du kan komme forbi denne begrænsning ved at tilføje to linjer til konfigurationsfilerne for `xdm` (som er den samme som for &kdm;).

S.u.S.E &Linux;-distributionen inkluderer disse linjer som standard.

Disse konfigurationsfiler findes normalt i en mappe såsom `/etc/X11/xdm`, eller `/usr/X11R6/lib/X11/xdm` på andre systemer. I det følgende antages at de findes i `/etc/X11/xdm`, så du kan behøve at oversætte det til en anden mappe.

Her er hvad du skal gøre:

- Redigér filen `Xstartup`, eller opret den (i `xdm` konfigurationsmappen) så den lyder:

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

- og filen `Xreset` så at den lyder:

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

- Sørg for at `xdm-config` refererer til følgende to filer:

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

Dette gør at &kdm; (eller `xdm`) logger brugeren i utmp, som er det rigtige at gøre. Det er ikke &konsole;s eller `xterm`s sag at logge brugeren, men `xdm`s eller &kdm;s sag, efter min mening. Dette logger dog ikke brugeren som en X-bruger når `startx` bruges... Noget vink om dette?

Hvorfor kan jeg ikke, som normal bruger, modtage &kde;-annonceringer?

Hvis du kører et &Linux;-system (med `/proc` aktiveret), er denne opførsel en fejl. Send en beskrivelse til mig så jeg kan rette det.

Hvis du kører &Linux; 2.0.35, er dette en kendt fejl i kernen, som ikke lader root læse `/proc`. Løsningen er den samme som i foregående spørgsmål, under forudsætning af at du kører &kdm; eller `xdm` til at logge ind til X. Eller opgradér!

Ellers er dette normalt. &ktalkd; kan ikke finde brugeren, eftersom &kde; ikke logger brugeren i utmp og den &Linux;-baserede (`/proc`) identifikation er lukket. Løsningen er den samme som i foregående spørgsmål, under forudsætning af at du kører kdm eller xdm for at logge på til X. En anden løsning er at sørge for at du altid har en xterm i gang.

Hvordan får jeg fejlsøgningsudskrifter fra &ktalkd;?

Eftersom den er en dæmon, er der ingen fejlsøgningsudskrift på standardudskriften. For at få fejlsøgningsudskrift (for eksempel inden du indsender en fejlrapport), opdateres linjerne i `inetd.conf` som starter &ktalkd; og &kotalkd; til:

    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

Bemærk flaget `-d`.

Redigér derefter `/etc/syslog.conf` for at tilføje følgende linje:

    *.*         /var/log/all_messages

For at få det til at virke, skal du derefter genstarte `inetd` og `syslogd`:

    % killall -HUP inetd
    % killall -HUP syslogd

Kør til sidst en `talk`-session og se resultatet i `/var/log/all_messages`

Når du indsender en fejlrapport, glem aldrig at indsætte fejlsøgningsudskriften, men også versionsnummeret for &ktalkd; og udskriften fra `./configure`. Tak.

## Medvirkende og licens

&ktalkd; vedligeholdes og forbedres af David Faure, faure@kde.org

Originalprogrammet blev skrevet af Robert Cimrman, cimrman3@students.zcu.cz

&erik.kjaer.pedersen.credit; &underFDL; &underGPL;

## Installation

### Hvordan får man fat på &ktalkd;

&ktalkd; er nu et af kerneprogrammerne i &kde;-projektet http://www.kde.org, og en del af kdenetwork-pakken.

Du kan altid hente den seneste &ktalkd; fra &kde;-projektets hoved-&FTP;-sted, ftp://ftp.kde.org/pub/kde og fra dets spejle. Den er sædvanligvis på ftp://ftp.kde.org/pub/kde/stable/latest/apps/network

### Krav

For at kunne kompilere &ktalkd; med heldigt resultat, har du brug for den nyeste udgave af &kde;-bibliotekerne samt &Qt; C++ biblioteket. Alle biblioteker som kræves samt ktalkd selv findes på ftp://ftp.kde.org/pub/kde/.

### Kompilering og installation

For at kompilere og installere &ktalkd; på dit system, skriv følgende i basismappen i distributionen for &ktalkd;:

    % ./configure
    % make
    % make install

Eftersom &ktalkd; er en dæmon, kræver ``make` `install`` root-rettigheder.

Glem ikke at opdatere `/etc/inetd.conf`. På for eksempel et &Linux;-system, hvis &kde; findes i `/opt/kde`, ændr linjerne som angår `talk` og `ntalk` til:

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

Der er et script til at lave de nødvendige ændringer automatisk. Opdatér filen `inetd.conf` ved blot at køre

    % ./post-install.sh

Under alle omstændigheder skal du genstarte inetd efter dette. På de fleste &Linux;-systemer, skrives:

    % killall -HUP inetd

På nyere systemer som bruger `xinetd`, findes filen `/etc/inetd.conf` ikke længere, og du skal redigere eller oprette `/etc/xinetd.d/talk` i stedet, med følgende linjer:

    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
    }

og derefter genstarte `xinetd`.

Informér mig gerne om ændringer som du behøvede indføre for at få &ktalkd; til at kompilere eller virke på din platform.