added docs by Igor Mitichev

master
Evgeniy Kozhuhovskiy 19 years ago
parent 2d9618e6fd
commit e0d853d5f1

3
debian/bfha.def vendored

@ -5,3 +5,6 @@ my $rep_from = "\"Statistics generator\" <fido\@localhost>";
my $rep1_subj = "Sessions history";
my $rep2_subj = "Sessions history";
my $rep3_subj = "Links statistics";
# We are reading configs, isnt it? :)
1;

@ -0,0 +1,14 @@
# xinetd service bforce-binkp
# Shamelessly stolen from RU.UNIX.FTN
# Original author Eugeny Davidov <2:5030/1900.3>
# Modified for ALTLinux by Sir Raorn <raorn@binec.ru>
service binkp
{
disable = no
socket_type = stream
wait = no
protocol = tcp
user = fido
server = /usr/bin/bforce
server_args = -i binkp
}

@ -0,0 +1,14 @@
# xinetd service bforce-ifc
# Shamelessly stolen from RU.UNIX.FTN
# Original author Eugeny Davidov <2:5030/1900.3>
# Modified for ALTLinux by Sir Raorn <raorn@binec.ru>
service fido
{
disable = no
socket_type = stream
wait = no
protocol = tcp
user = fido
server = /usr/bin/bforce
server_args = -i -a auto
}

@ -0,0 +1,153 @@
Основные моменты настройки мейлера bforce
─────┐для ответа на входящие вызовы.┌────
└──────────────────────────────┘
Как известно, мейлер bforce может соединяться с другими фидошными станциями как по телефонным линиям, так и по IP каналам. В первом случае мейлер реализует стандартную EMSI-сессию, а во-втором, он способен использовать протоколы BinkP (стандартный порт 24554) и Ifcico (стандартный порт 60179). Первому протоколу соответсвует ноделистовый флаг IBN, а второму -- IFC.
В отличие от других мейлеров (например таких, как t-mail под win32 или binkd), bforce сам не отслеживает входящие вызовы. Этим занимаются другие программы, которые анализируют входящие сообщения и, если они оказываются фидошными вызовами, передают управление мейлеру.
Таким образом для того, чтобы bforce мог отвечать на входящие звонки, требуется настройка дополнительного програмного обеспечения. Ниже я в кратце рассмотрю настройку программы mgetty, которая отслеживает сигналы из com-порта и отвечает на телефонные звонки и настройку супердемона xinetd, который отслеживает входящие вызовы по каналам tcp/ip.
╔═══════════════════════════════════════╗
║1. Ответ на входящие телефонные звонки.║
╚═══════════════════════════════════════╝
Сигналы от модема отслеживает демон (резидент) mgetty. Это программа, которая постоянно сидит в памяти компьютера, заставляет модем поднимать телефонную трубку, анализирует сигнал, поступающий с той стороны телефонной линии и, в соответствиии с результатами этого анализа, передает управление той или иной прикладной программе. В случае фидошного вызова это будет наш bforce.
Mgetty входит в комплект подавляющего большинства дистрибутивов linux. Поэтому я не буду останавливаться на том, где взять эту программу, а только замечу, что для того, чтобы она понимала "специфику" фидошных сообщений, она должна быть откомпилирована с ключом "-DFIDO". Если вы компилируете программу из исходников, обратите на это внимание. Сложнее, если у вас например RPM. Так создатели Red Hat (Fedora Core) включают в дистрибутив пакет программы с отключенной фидошной функцией. В таком случае самое простое -- найти пакет от другого производителя, где эта функция включена. Например на моем RH 9.0 стоит mgetty от ASP (mgetty-1.1.30-2asp.i386.rpm)и прекрасно себя чувствует.
Будем считать, что с установкой разобрались, перейдем к настройке. У меня файлы конфигурации mgetty находятся в каталоге "/etc/mgetty+sendfax/":
[root@news mgetty+sendfax]# ls -l
итого 48
-rw------- 1 root root 1515 Апр 28 2003 dialin.config
-rw------- 1 root root 86 Янв 25 2003 faxheader
-rw------- 1 root root 2368 Янв 25 2003 faxrunq.config
-rw------- 1 root root 1532 Янв 25 2003 faxspool.rules.sample
-rw------- 1 root root 2953 Мар 17 13:04 login.config
-rw------- 1 root root 1641 Окт 30 2004 mgetty.config
-rw------- 1 root root 1046 Янв 25 2003 sendfax.config
-rw------- 1 root root 18101 Янв 25 2003 voice.conf
Приведу несколько цитат из конфигурационных файлов. Основной файл конфигурации mgetty.config
=====================================
debug 4
speed 57600
# настройки порта com1 (ttyS0 в unix-трансляции):
# возможно в вашей системе здесь будет другой значение
# например ttyS1 (com2)
port /dev/ttyS0
debug 3
# указываем, что у нас нет факса:
data-only y
# настраиваем диалог "программа-модем" для инициализации модема:
init-chat "" ATZ OK AT&F OK
# и для ответов на входящие:
answer-chat "" ATA CONNECT \c \r
======================================
Файл анализа входящих вызовов login.config:
===========================================
# Если звонит мейлер, передаем управление bforce:
/FIDO/ fido uucp /usr/local/bin/bforce @
# в этой строке fido и uucp -- пользователь и группа, от имени
# которых запускается mgetty
# Если звонит интернет-пользователь, передаем управление pppd:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap
# Во всех остальных случаях передаем управление утилите login:
* - - /bin/login @
==============================================
Следует обратить внимание на следующие основные моменты
1. Mgetty должен быть скомпилирован с -DFIDO
2. Файлы конфигурации в /etc/mgetty+sendfax обязаны иметь права chmod 0600 и chown root:root
3. Пути к программам в login.config должны соответствовать реальности (нередко бывает наоборот ;)
4. Пользователь и группа, от имени которых запускается bforce должны быть _корректными_!!! Обычно этот пункт вызывает самые большие проблемы. То не хватает прав на обращение к модему, то не хватает прав для записи в inbound, то еще какой-нибудь геморой. 90% проблем заключены именно в этом пункте.
Дальше. Запуск mgetty осуществляется через файл /etc/inittab
откорректируйте там (или напишите если ее нет) такую строчку:
S0:2345:respawn:/sbin/mgetty -D /dev/ttyS0
Здесь:
S0 -- идентификатор. Должен быть уникальным (нигде больше в этом файле не повторяться).
2345 -- уровни запуска, при которых стартует mgetty (если не знаете что это такое, пропишите как указано здесь).
respawn -- указывает системе перезапускать mgetty после того, как она завершит работу (в любом случае пропишите как указано здесь).
/sbin/mgetty -- путь к программе
-D -- ключ, сообщающих Mgetty, что на линии нет факса (data only)
/dev/ttyS0 -- порт, на котором сидит модем.
Если после перезагрузки на модеме загорелась лампочка TR, то все настройки выполнены правильно и mgetty подхватил модем.
И еще. Управление mgetty осуществляется файлом /etc/nologin.ttyS0 (расширение может быть другим, если модем находится на другом порту). Наличие такого файла запрещает mgetty поднимать трубку. Таким образом, прописав в crontab директивы 'touch /etc/nologin.ttyS0' и 'rm /etc/nologin.ttyS0' можно определять время, когда ваша станция отвечает на входящие.
╔═══════════════════════════════════════╗
║2. Ответ на входящие звонки по tcp/ip.║
╚═══════════════════════════════════════╝
Как было написано выше, bforce понимает не только сеансы по телефонным линиям, но и по tcp/ip. Здесь мейлер тоже не сам отслеживает входящие вызовы а принимает управление от демона xinetd (может быть inetd, но его мы здесь не рассматриваем).
Итак, вам надо:
1. Отредактировать файл /etc/services и проверить в нем наличие следующих строк:
binkp 24554/tcp # Binkley
binkp 24554/udp # Binkley
fido 60179/tcp # Ifmail
fido 60179/udp # Ifmail
2. Скопировать файлы bforce-binkp и bforce-ifc в каталог /etc/xinetd.d/:
# cd /etc/xinetd.d/
[root@news xinetd.d]# ls -l bforce-*
-rw-r--r-- 1 root root 424 Май 3 12:54 bforce-binkp
-rw-r--r-- 1 root root 423 Май 3 13:40 bforce-ifc
[root@news xinetd.d]#
3. Откорректируйте следующие значения в этих файлах:
disable -- должно быть в значении No (значение yes отключает сервис)
user -- должен быть корректным (если вы разобрались с mgetty, то это для вас не вопрос)
server -- проверьте правильность пути к программе.
4. Перезапустите xinetd:
[root@news xinetd.d]# /etc/init.d/xinetd restart
Останавливается xinetd: [ ОК ]
Запускается xinetd: [ ОК ]
[root@news xinetd.d]#
5. Протестируйте, работает ли:
[root@news xinetd.d]# telnet localhost 24554
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
-"OPT CRAM-MD5-27a76d745143285f7742-SYS vz111 station-ZYZ Tim Tashbaev-LOC Bryansk, Russia-PHN 7-083-273-38-30-NDL MO,V34,TCP,IBN-TIME 2005/05/03 15:23:20-3VER binkleyforce/0.22.8.ugenk4/linux-gnu binkp/1.0-2:6001/10@fidonet
Хм... Работает. Сам удивляюсь. Нечто похожее должно быть и при обращении к порту 60179 (telnet localhost 60179).
В общих чертах так. Если будет не получаться, то рекомендую действовать в следующей последовательности:
1. Перечитать все еще раз с самого начала.
2. Подумать.
3. Полазить в манах (man mgetty, man inittab, man xinetd, etc)
4. Еще раз подумать.
5. Написать в эхоконференцию ru.unix.ftn
Искренне ваш... Igor Mitichev (2:6001/9.0)
3 мая 2005 г. 15:30
Loading…
Cancel
Save