# Справочное руководство по &ktalkd;

David Faure

    faure@kde.org

Илья Яловой

    i_yalovoy@mail.ru

Перевод на русский
&FDLNotice;
2001 David Faure
2001-05-02
1.05.02

&ktalkd; это улучшенный демон `talk`, который принимает входящие `talk`-запросы, сообщает о них и позволяет вам отвечать на них с помощью клиента talk.

KTALKD talk talkd otalk ntalk ktalkdlg kcmktalkd

## Введение

&ktalkd; это улучшенный `talk`-демон, который принимает входящие `talk`-запросы, сообщает о них и позволяет вам отвечать на них с помощью клиента `talk`.

Учтите, что &ktalkd; разработан для запуска на однопользовательской рабочей станции, и его не следует запускать на машинах, с которыми работают несколько пользователей: он читает файлы конфигурации пользователей, и пользователи могут запускать с помощью демона `talk` любые команды, что очень опасно. Если на вашем компьютере есть пользователи, которым вы не доверяете, то использование &ktalkd; недопустимо.

В данном документе абонент, получающий запросы, будет называться получателем.

Особенности &ktalkd;:

Автоответчик

  Если получатель не вошел в систему или не отвечает после второго звонка, то запускается автоответчик: он принимает сообщение и пересылает его получателю по электронной почте.

Звук

  При желании звонок сопровождается звуковым сигналом.

Оповещение в X

  Если &ktalkd; компилировался с инсталлированным &kde;, то для оповещения будет вызываться диалог &kde; `ktalkdlg` Если запущен &ktalk;, то ему будет предложено осуществить оповещение самостоятельно. (Начиная с версии 0.8.8).

Оповещение на нескольких дисплеях

  Если вы дистанционно вошли в систему (т.е. с помощью команды ``export` `DISPLAY`=...`),то оповещение также будет произведено и на этом дисплее. Отвечать на звонок можно с любого дисплея! Если вы также вошли в систему и с помощью текстового терминала, и при этом не использовали xterms (внутреннее ограничение), то вы увидите текстовое оповещение.

Пересылка (Начиная с версии 0.8.0)

  Если вы отсутствуете, то можете настроить пересылку другому пользователю и даже на другой компьютер. Существует три метода пересылки. Подробнее смотрите раздел Использование.

Конфигурация

  Если &ktalkd; скомпилирован под &kde;, то он читает настройки из системного конфигурационного файла &kde; - (`$`KDEDIR`/share/config/ktalkdrc`), и из пользовательского файла - в его домашнем каталоге. Системный файл конфигурации должен быть отредактирован администратором вручную, а пользователь может пользоваться специальной программой. Она называется `kcmktalkd` и после установки &ktalkd; находится в &kcontrol;. В системах без &kde; &ktalkd; использует в качестве конфигурационного файл `/etc/talkd.conf`.

Интернационализация

  Под &kde;, если `ktalkdlg` переведен на ваш язык, то оповещение будет производиться в соответствии с установками &kde;. Это же относится и к программе конфигурации `kcmktalkd`.

Поддержка `otalk` и `ntalk` (Начиная с версии 0.8.1)

  &ktalkd; теперь поддерживает оба протокола, даже при пересылке. &ktalk; также поддерживает оба протокола.

Я надеюсь, что вы останетесь довольны демоном talk.

David Faure faure@kde.org

## Использование

Чтобы использовать &ktalkd;, вам необходим клиент `talk`. Все системы &UNIX; имеют текстовый клиент `talk`. Наберите ``talk` username`, чтобы проверить что будет, когда вы получите запрос `talk`.

Также вы можете проверить автоответчик: отправьте себе сообщение `talk`, пропустите два звонка, и тогда должен сработать автоответчик.

&ktalk; - это графический клиент `talk` под &kde;. Пока этот пакет не входит в стандартный набор &kde;, но вы можете найти его на сервере ftp://ftp.kde.org, по адресу ftp://ftp.kde.org/pub/kde/stable/latest/apps/network

Диалоговое окно при звонке очень простое: respond или ignore.

С помощью диалога конфигурации вы можете настроить переадресацию другому пользователю или даже на другой компьютер.

### Выбор метода переадресации

Ни один из них не является идеальным, у каждого есть плюсы и минусы.

FWA - только оповещение о переадресации (forward announcement only).

  Прямое подключение. Не рекомендуется.

  - (+) Вы знаете кто вас вызывает, но

  - (-) Вызывающий абонент должен будет ответить на ваш запрос. Это раздражает.

  - (-) Не используйте, если автоответчик установлен на away. (Автоответчик не сможет выдать оповещение.)

FWR - Переадресация всех запросов (forward all requests) с изменением информационных полей сообщения

  Прямое подключение

  - (+) Вызывающий абонент не узнает о том, что вы отсутствуете, но

  - (-) Вы не узнаете, кто именно вас вызывал - только его имя пользователя, (например, вы увидите `talk from Wintalk@my_host`)

FWT - Переадресовывать все запросы и включаться в разговор.

  Без прямого подключения.

  - (+) Аналогично предыдущему, но работает и без прямого подключения (например, за файрволлом).

  - (+) Вам будет сообщено, с кем вы общаетесь, когда вы примете звонок

  - (-) Аналогично FWR, вы не узнаете в оповещении названия компьютера вызывающего абонента

Используйте FWT, если хотите, чтобы он работал за файрволлом (и если &ktalkd; имеет доступ к обеим сетям), и FWR в любом другом случае.

## Вопросы и ответы

Почему root не получает оповещений &kde;?

Потому, что автоматическлое определение пользователей может быть дырой в безопасности системы. Вы можете обойти это ограничение, добавив две строчки в файл конфигурации `xdm` (аналогично &kdm;).

Примечание : Дистрибутив S.u.S.E &Linux; содержит эти строки по умолчанию.

Эти файлы конфигурации обычно находятся в каталоге `/etc/X11/xdm`, или `/usr/X11R6/lib/X11/xdm` на других системах. Далее предполагается, что они находятся в `/etc/X11/xdm`, поэтому вам, возможно, потребуется уточнить их расположение.

Вот что вы должны сделать:

- Отредактируйте или создайте новый файл `Xstartup`, (в каталоге конфигурации `xdm`) так, чтобы он содержал:

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

- и файл `Xreset`, который выглядит:

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

- Убедитесь, что в файле `xdm-config` содержатся ссылки на эти два файла:

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

Благодаря этому &kdm; (или `xdm`) включит пользователя в utmp, что, собственно, и требовалось. Я думаю, что не &konsole;, или `xterm` должны заносить туда пользователя, а именно `xdm` и &kdm;. Тем не менее, это не занесет туда пользователя как пользователя Х при `startx`... Есть какие-нибудь соображения?

Почему я, будучи нормальным пользователем, не получаю оповещений &kde;?

Если вы работаете в &Linux; (с подключенным `/proc`), такое поведение - ошибка в программе. Пришлите мне подробное описание, чтобы я смог исправить эту ошибку.

Если вы работаете под &Linux; 2.0.35, то это - известная ошибка ядра, которая не позволяет root читать `/proc`. Решение этой проблемы аналогично описанному в предыдущем вопросе, запускать &kdm; или `xdm` для входа в X. Или обновить ядро!

Иначе, это так и должно быть. &ktalkd; не может найти пользователя, так как &kde; не включил его в utmp и используемая в &Linux; (`/proc`) функция определения отключена. Решение этой проблемы аналогично описанному в предыдущем вопросе, запускать kdm или xdm для входа в X. Другое решение - всегда запускать xterm.

Как я могу просмотреть отладочную информацию &ktalkd;?

Поскольку программа работает в качестве сервера, то стандартный вывод невозможен. Для того, чтобы осуществить вывод отладочной информации (например, для отправки мне отчета об ошибках!), внесите изменения в файл `inetd.conf`, который запускает &ktalkd; и &kotalkd;, следующим образом:

    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

Обратите внимание на параметр `-d`.

Затем добавьте в файл `/etc/syslog.conf` следующую строчку:

    *.*         /var/log/all_messages

Чтобы все заработало, необходимо перезапустить `inetd` и `syslogd`:

    % killall -HUP inetd
    % killall -HUP syslogd

Наконец, запустите `talk`, результат будет записываться в `/var/log/all_messages`

Когда будете отправлять мне отчет об ошибках, не забудьте приложить отладочную информацию, и, конечно, номер версии &ktalkd; и файл с сообщениями `./configure`. Спасибо.

## Авторские права и лицензии

Поддержку и доработку &ktalkd; осуществляет David Faure, faure@kde.org

Первоначально программа написана Robert Cimrman, cimrman3@students.zcu.cz

Перевод на русский - Илья Яловой i_yalovoy@mail.ru

&underFDL; &underGPL;

## Установка

### Где взять &ktalkd;

&ktalkd; стандартно поставляется в составе проекта &kde; http://www.kde.org и входит в пакет kdenetwork.

Вы всегда можете скачать последнюю версию &ktalkd; с главного &FTP; сайта проекта &kde;, ftp://ftp.kde.org/pub/kde или одного из его зеркал. Он обычно находится в ftp://ftp.kde.org/pub/kde/stable/latest/apps/network

### Требования

Для успешной компиляции &ktalkd; вам необходима последняя версия &kde; и библиотеки &Qt;. Все библиотеки и сам ktalkd можно найти на ftp://ftp.kde.org/pub/kde/.

### Сборка и установка

Чтобы собрать и установить &ktalkd; в вашей системе, наберите следующее в корневом каталоге дистрибутива &ktalkd;:

    % ./configure
    % make
    % make install

Поскольку &ktalkd; - демон, то для ``make` `install`` потребуются права root.

Не забудьте обновить файл `/etc/inetd.conf`. На пример, в &Linux;, если &kde; находится в `/opt/kde`, измените строки, касающиеся `talk` и `ntalk` на:

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

Скрипт должен произвести все необходимые изменения автоматически. Обновите `inetd.conf` запустив

    % ./post-install.sh

В любом случае вам потребуется после этого перезапустить inetd. В большинстве систем &Linux; необходимо набрать:

    % killall -HUP inetd

В новых системах, которые используют `xinetd`, больше не существует `/etc/inetd.conf`, и вы должны отредактировать или создать файл `/etc/xinetd.d/talk`, заменив следующие строки:

    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
    }

а затем перезапустить `xinetd`.

Сообщайте мне о всех изменениях, которые вы внесли для нормальной компиляции и работы &ktalkd; в вашей системе.