HOWTO : fidonet software for unix

[ index ] [ areafix ] [ binkd ] [ filefix ] [ ifmail ] [ inn ] [ mgetty ] [ sendmail ] [ together ] [ stat ] [ utilities ] [ download ]

mgetty

Автор программы - Gert Doering, gert@greenie.muc.de, URL : http://alpha.greenie.net/mgetty/.
Берем последнюю версию с http://alpha.greenie.net/mgetty (я использовал mgetty1.1.21-Jul24.tar.gz), разворачиваем в, например, /usr/src/mgetty-1.1.21 и заходим в этот каталог. Все дальнейшие пути к файлам с исходниками, если не указано иное, будем считать от него. Рекомендую наложить на mgetty патч, автором которого является Alexey Gretchaninov, scorp@home.scorp.org.ru, 2:5010/81@fidonet; URL : http://scorp.org.ru/mgetty/. Этот патч, среди всего прочего, дает возможность указывать mgetty временные промежутки, когда оно будет отвечать на входящие звонки. Забираете его : ftp://ftp.scorp.org.ru/mgetty/mgetty.sc.zip, раскручиваете, читаете readme, копируете mgetty-1.1.20.sc.diff в /usr/src/mgetty-1.1.21, переходите туда и запускаете patch -p1 < mgetty-1.1.20.sc.diff. Патч должен наложиться. Почитайте файл README.1st и можно приступать к установке.
Скопируем policy.h-dist в policy.h, начнем редактировать policy.h :
Проверьте, где у вас лежит программа login (обычно - /usr/bin/login)
#define DEFAULT_LOGIN_PROGRAM /usr/bin/login
Прописываем UID, GID и права владельца портов с модемами, на которых будут сидеть mgetty (см. раздел ifmail.html#port_owner)
#define DEVICE_OWNER uucp
#define DEVICE_GROUP dialer
#define FILE_MODE 0660

Каталог lock должно совпадать с LOCKDIR у ifmail'a (см. раздел ifmail.html#lock_dir), каталог с pid-файлом обычно - /var/run
#define MGETTY_PID_FILE : /var/run/mgetty.%s.pid
#define LOCK : "/var/spool/lock/LCK..%s"

Скорость для порта модема. Лучше, чтобы она совпадала со скоростью, указанной в Modemport у ifmail'а (см. ifmail.html#lock_speed), хотя в любом случае для каждого порта ее можно настроить в mgetty.config
#define DEFAULT_PORTSPEED 115200
Строка инициализации ваших модемов.
#define MODEM_INIT_STRING "ATZ0"
Я факсы на модемы принимать не собирался, поэтому установил тип в "data" и не трогал секцию, посвященную факс-настройкам.
#define DEFAULT_MODEMTYPE "data"
Путь к sendmail'у.
#define MAILER "/usr/sbin/sendmail"
С policy.h все.

Теперь редактируем Makefile. Прочитайте комментарии в нем касательно -D опций, добавьте в CFLAGS опции -DBSD -DFIDO.
Подкорректируеем LIBS и INSTALL, раскоментарив подходящие для FreeBSD
LIBS=-lutil
INSTALL=install -c -o root -g wheel

Запускаем make, если все в порядке, то make install

В /usr/local/etc/mgetty+sendfax правим конфиги :
В login.config изменились строчки :
/FIDO/     fido  fido   /usr/local/fidonet/bin/ifcico @
callback      -     -   /usr/local/sbin/callback -s 115200 -S 955-55-55
Первая - запуск ifcico для ответа на входящие звонки, а вторая - запуск прграммы callback (берется из дистрибутива mgetty) для руления станцией из дома ;)
Строчку с /AutoPPP/ я убрал за ненадобностью.

Прописываем запуск mgetty в /etc/ttys, например :
cuaa0 "/usr/local/sbin/mgetty" cons25r on insecure
cuaa1 "/usr/local/sbin/mgetty" cons25r on insecure

Прочитайте man mgetty.
Теперь активируем эти изменения : kill -1 1.
Проверим, получилось ли :
$ ps -ax | grep mgetty
13849 ?? I  0:00.06 /usr/local/sbin/mgetty cuaa0
13852 ?? I  0:00.05 /usr/local/sbin/mgetty cuaa1
23002 p0 S+ 0:00.03 /usr/local/bin/bash -c ps -ax | grep mgetty
23004 p0 R+ 0:00.00 grep mgetty

Судя по первым двум строчкам, программы запущены.
Для того, чтобы в лог-файлах mgetty (/var/log/mgetty.cuaa?) регистрировались входящие фидошные звонки, необходимо предоставить ifcico право на запись в этот лог. Как один из вариантов, можно установить такие права :
-rw-rw-r-- 1 root fido 4503 29 окт 09:12 mgetty.cuaa0
-rw-rw-r-- 1 root fido 1732 29 окт 12:61 mgetty.cuaa1

При входящих звонках mgetty определяет можно ли поднимать трубку по флагу, заданному в NOLOGIN_FILE в policy.h (по умолчанию - /etc/nologin.%s, где %s - cuaa0, cuaa1, etc.). Т.е. создавая/удаляя этот флажок через cron вы управляете mgetty. Например :
/etc/crontab :
--------------
# Запрет ответа на входящие звонки
# по первой линии - Пн.-Пт. с 8:00 до 23:00
0  8  * * 1-5 root touch /etc/nologin.cuaa0
0  23 * * 1-5 root rm /etc/nologin.cuaa0
# по второй линии - Пн.-Пт. с 18:00 до 22:00, Сб-Вс - весь день
0  18 * * 1-5 root touch /etc/nologin.cuaa1
0  22 * * 1-5 root rm /etc/nologin.cuaa1
0  0  * * 6   root touch /etc/nologin.cuaa1
59 23 * * 7   root rm /etc/nologin.cuaa1
--------------

Редактируете /usr/local/etc/mgetty+sendfax/mgetty.config :
Раздел ----- global section ----- у меня полностью закоментарен, все настройки описаны отдельно для каждой линии :
# Модем № 1, USR Courier
port cuaa0
speed 115200

# В будни отвечаем на входящие звонки только ночью,
# в выходные круглосуточно
answer-time 1.20:00-5.08:00,6.00:00-7.24:00
#
# В ZMH + NMH (с 6:00 до 8:00) отвечаем на любой скорости,
# в остальное время на скорости не менее 28800
# Для срабатывания этих двух временных промежутков
# корректируем /etc/crontab (см. together.html#ZMH)
{06:00-08:00} init-chat "" \d\dATZ0 OK
{08:00-06:00} init-chat "" \d\dATZ0 OK AT&U14 OK

# Модем № 2, USR
port cuaa1
speed 115200
answer-time 01:00-08:00
init-chat "" \d\dATZ0 OK AT&U14 OK


Hints :
Если вы монтируете корневой раздел как r/o, то имеет смысл при компиляции mgetty исправить NOLOGIN_FILE на /var/run/nologin.%s и работать с флажком как с /var/run/nologin.cuaa0.

This is a part of "HOWTO : fidonet software for unix", http://howto.id.ru
Original of this document is located at http://howto.id.ru/mgetty.html
Copyright (c) Vitaly Kuharev, 2:5058/49@fidonet, 1999-2001
Last updated : March, 09, 2001