BinkD FAQ Ответы на часто задаваемые вопросы по FTN-мэйлеру binkd $Date: 2004/04/15 17:38:16 $ Этот FAQ составлен на основе вопросов, часто встречающихся в эхоконференции RU.BINKD. Часть ответов основана на рекомендациях разработчиков. Со всеми предложениями и замечаниями пишите: Stas Degteff 2:5080/102 01. Где взять свежую версию BinkD. 02. Что такое binkd 03. Протокол binkp 04. Что такое и зачем нужен домен fidonet.net 05. binkd не соединяется. Что делать? 06. Как подружить binkd и HTTP-прокси. 07. Как подружить binkd и SOCKS-прокси. 08. IP-пойнт: как заставить binkd забрать почту с босса (аплинка). 09. Ошибка "start_file_transfer: .: Permission denied" 10. binkd и диалап: автоматический дозвон и отсоединение. 11. Изменил конфиг при работющем binkd. Когда подействуют изменения? 12. Как подружить binkd c T-mail/IP? 13. Существует ли в природе хоть один лог анализер под unix? 14. Binkd долго коннектится, хотя сетка скоростная. 15. Почему BinkD не понимает передаваемые параметры при запуске из inetd 16. Можно ли сделать FREQ в binkd. 17. Как добавить binkd в фидо-станцию, работающую на модеме. 18. Флаги по приему файла не создаются, программы не запускаются. 19. Не работает skipmask. 20. Binkd под DOS. 21. Binkd под Windows 3.x. 22. Разные FTN-домены в binkd. 23. Как работает "domain ... alias-for ..." в конфиге 24. Что означает диагностика "send: TCP/IP error (-10000)", как это лечить? 25. Argus (Radius) и binkd: ошибка Argus "Aborting due to carrier loss" 26. В названии аутбаунда - символ комментария и binkd не видит каталог. 27. Есть ли возможность запуска приложения в binkd по событию? 28. В чем различие между binkd/w32 и binkd/w9x? 29. Сильно не хватает чата в binkd! И время синхронизировать хочется. 30. Binkd принимает входящее соединение только после исходящего. A1. Обнаружил баг в binkd! A2. Как связаться с разработчиками. A3. Хочу сразу узнавать об изменениях в binkd! A4. А когда binkd будет делать ... ? ---------------------------------------------------------------------------- 01. Где взять свежую версию BinkD, документацию, FAQ и пр. Файл-эха AFTNBINKD. Кроме того, в Internet'е: Релизы, анализаторы логов и пр. (Pavel Gulchouck 2:463/68): ftp://cvs.happy.kiev.ua/pub/fidosoft/mailer/binkd/ Зеркало (Matt Bedynek 1:106/1): ftp://fido.thunderdome.ws/pub/mirror/binkd/ Бэты: Публичный CVS :pserver:binkd@cvs.happy.kiev.ua:/cvs , модуль binkd, пароль пустой Примеры команд. Залогиниться на сервер cvs: cvs -d :pserver:binkd@cvs.happy.kiev.ua:/cvs login Получить последние исходники ветки current: cvs -d :pserver:binkd@cvs.happy.kiev.ua:/cvs co binkd Получить последние исходники ветки binkd 0.9.5-stable: cvs -d :pserver:binkd@cvs.happy.kiev.ua:/cvs co -r binkd-0_9_5-stable binkd Получить исходники binkd 0.9.6-release: cvs -d :pserver:binkd@cvs.happy.kiev.ua:/cvs co -r binkd-0_9_6 binkd ftp://cvs.happy.kiev.ua/pub/fidosoft/mailer/binkd/snapshot (основной) ftp://ftp.grumbler.org/pub/binkd/current (зеркало, обновляется 23:50 UTC+5) Документация (англ.), анализаторы логов и пр.: http://www.doe.carleton.ca/~nsoveiko/fido/binkd/ Анализатор логов от val khokhlov (perl): http://www.vk.kiev.ua/create/soft.html#bnkds Man page, описание binkp, бинарники и пр. (Stas Degteff 2:5080/102): http://binkd.grumbler.org/ Этот FAQ: http://binkd.grumbler.org/binkdfaq.shtml (или .txt) В официальных источниках бинарники binkd именуются так, чтобы показать OS, компилятор и способ сборки. Версии для Windows (32bit): binkd.exe, binkdw32.exe - binkd/w32, консольный, скомпилирован MS Visual C binkd-dll.exe - binkd/w32, консольный, MS Visual C, требует msvcrt.dll binkd-mingw.exe - binkd/w32, консольный, MinGW32, требует msvcrt.dll binkd9x.exe - binkd/w9x, безоконный, скомпилирован MS Visual C binkd9x-dll.exe - binkd/w9x, безоконный, MS Visual C, требует msvcrt.dll binkd9x-mingw.exe - binkd/w9x, безоконный, MinGW32, требует msvcrt.dll Версии для OS/2: binkd2.exe - компилятор Watcom C, перла нет binkd2e.exe - emx, умеет подгружать перловую dll и работать без нее binkd2pl.exe - emx, perl слинкован статически (т.е. перловая dll не нужна) binkd2eo.exe - emx/omf (multithread), перла нет. ---------------------------------------------------------------------------- 02. Что такое binkd Бинкд - фидошный мэйлер, работающий через интернет по протоколу binkp (FSP-1011). Этот протокол поддерживается также мэйлерами Аргус (win32; RitLabs; http://www.ritlabs.com), BForce (unix), программой Internet Rex (DOS/W32/OS2) и BeeMail (win32; Stephen Proffitt, 1:105/10; http://beemail.gexonline.net/) Характеристики: - freeware, открытые исходники - версии для Unix (linux, freebsd, SCO, ...), OS/2 (native & EMX), Windows NT & Windows 95 - возможность работы демоном под Unix и сервисом Windows NT/2000 - простое TCP-соединение (целостность данных отслеживается на уровне TCP) - BSO (bink-style outbound) - LBSO (Long BSO) - имеется вариант с поддержкой ASO (Amiga-style outbound), распространяется в виде патчей (см. на серверах поддержки) - трансляция путей в ?LO файлах (используется при размещении аутбаунда на сетевых дисках) - персональные файлбоксы для отправляемых и принимаемых файлов для каждого узла - поддержка файлбоксов T-mail и The Brake! - поддержка трансляции FTN-адресов в доменное имя (*.fidonet.net) - поддержка файла паролей стиля T-mail - начиная с 0.9.4 и ifcico - c 1.0 - поддержка FREQ с использованием SRIF - создание флагов по приему файла (по маске) - запуск программ по приему файла (по маске) - отказ от приема файла (по маске) - начиная с 0.9.4 - работа через HTTP или SOCKS прокси-сервер (начиная с версии 0.9.3.https) - шифрование паролей (MD5) - начиная с релиза 0.9.4 - шифрование трафика - начиная с 0.9.5 - проверка IP-адреса удаленного узла при входящих соединениях - начиная с 0.9.5 ---------------------------------------------------------------------------- 03. Протокол binkp Расшифровка названия: binkd protocol. Описан в FSP-1011 (FIDOnet standard proposal - предложенный для обсуждения/рассмотрения FTSC стандарт) и порт 24554 выделен для binkp в RFC-1700 (request for comments, выпускаемый IANA). Использующий двустороннее TCP-соединение протокол обмена файлами, разработанный для FTN-мэйлера binkd. По умолчанию использует порт 24554. Существуют две версии протокола: 1.0 и 1.1, обратно совместимы. Основное отличие версии 1.1 в возможности делать FREQ во время сессии. Кроме того, binkp 1.1 в настоящее время имеет опции NR (non-reliable mode, режим работы с ненадежнвм каналом связи) и ND (no dupes mode, режим защиты от повторной передачи файлов), MD5 (хеширование паролей), CRYPT (шифрование трафика). Версия протокола 1.1 поддерживается мэйлером binkd, версия 1.0 реализована в мэйлере Argus и его клонах (в нем binkp реализован с добавлением собственного механизма обработки FREQ и другими изменениями), в MBSE, Internet Rex, BForce и других. В пакете Internet Rex (2.24 и более поздние) реализован также свой (несовместимый) вариант binkp/1.1. Описание протокола на русском языке лежит тут: http://binkd.grumbler.org/binkp/ ---------------------------------------------------------------------------- 04. Что такое и зачем нужен домен fidonet.net fidonet.net - домен, зарегистрированный для системы трансляции FTN-адресов в доменные имена internet. Используется преимущественно при binkp-соединениях. Адрес 1:2/3 преобразуется в домен f3.n2.z1.fidonet.net (для пойнта: 1:2/3.4 преобразуется в p4.f3.n2.z1.fidonet.net), затем binkd (или другой binkp-мэйлер) получает средствами операционной системы IP-адрес узла. Если домен существует - можно пытаться установить соединение. Исходя из этого была составлена "полиси домена fidonet.net": доменное имя в зоне fidonet.net выдается узлам, присутствующим в нодлисте, имеющим постоянный IP-адрес или доменное имя и круглосуточно отвечающим на порту 24554 по протоколу binkp. ---------------------------------------------------------------------------- 05. binkd не соединяется, сообщает про таймаут (timeout). Что делать? 1. Проверьте, отвечает ли удаленный узел на порту 24554 (команда telnet). Если соединение не устанавливается, проверьте, подключен ли этот компьютер в данный момент к сети (команда ping). Если проверки успешные - проверяйте настройки (при этом помогает увеличение уровня протоколирования: loglevel 6 или больше). Вот примеры для узла 2:5080/68: 1.1. (В ответе на телнет управляющие символы убраны, разбиение на строки выполнено для удобства) m:\>telnet f68.n5080.z2.fidonet.net 24554 -.OPT CRAM-MD5-593e3e5411515fc1cf75816bb74e41d0-SYS Academ -ZYZ Alexei Kuklin-LOC Ekaterinburg, Russia-NDL 115200,TCP,BINKP,HUB -%TIME Tue, 20 Feb 2001 15:25:20 +0500- VER binkd/0.9.4/Win32 binkp/1.1 - 2:5080/68@fidonet-OPT ND M:\>ping f68.n5080.z2.fidonet.net Pinging fido68.imp.uran.ru [195.19.130.68] with 32 bytes of data: Reply from 195.19.130.68: bytes=32 time=505ms TTL=122 Reply from 195.19.130.68: bytes=32 time=555ms TTL=122 Reply from 195.19.130.68: bytes=32 time=406ms TTL=122 Reply from 195.19.130.68: bytes=32 time=372ms TTL=122 Узел работает. Проверьте настройки своего Binkd. Возможно, задан слишком маленький таймаут (время, необходимое для установки соединения, можно оценить по задержке перед ответом в telnet). Другой вариант: телнет соединяется, а пинг - нет (сообщает "Request timed out" или "Превышен интервал ожидания"): M:\>ping f68.n5080.z2.fidonet.net Pinging fido68.imp.uran.ru [195.19.130.68] with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Это означает, что ICMP-пакеты запрещены на пути между вами. На работу binkd они не влияют. 1.2. M:\>ping f68.n5080.z2.fidonet.net Unknown host f68.n5080.z2.fidonet.net Такой ответ означает, что ваш компьютер не смог обнаружить запись в DNS для этого узла. Проверьте настройки DNS в системе. Если они верны - убедитесь, что DNS-сервер работает и адрес удаленного узла указан правильно. 1.3. Если пинг проходит, а telnet-соединение не устанавливается - возможно, что binkd на этом узле в данный момент не отвечает. Попробуйте выяснить с сисопом узла, запущен ли у него binkd. Если запущен и соединяется с другими узлами - это означает, что доступ к порту 24554 закрыт на файрволле Вашей сети. Попробуйте запустить binkd через прокси-сервер - см. "Как подружить binkd и HTTP-прокси", "Как подружить binkd и SOCKS-прокси" 1.4. M:\>ping -w 5000 f68.n5080.z2.fidonet.net Pinging fido68.imp.uran.ru [195.19.130.68] with 32 bytes of data: Reply from 195.19.130.68: bytes=32 time=3674ms TTL=122 Request timed out. Reply from 195.19.130.68: bytes=32 time=4232ms TTL=122 Request timed out. Телнет на порт 24554 иногда соединяется, а чаще - нет. Узел работает, но канал связи между вами сильно загружен или слишком медленный. При этом binkd соединяется не при каждой попытке (теряются IP-пакеты) или не соединяется вовсе (слишком мало время ожидания ответа удаленного узла). Первый случай "неизлечим", поскольку пакеты теряются в пути и повлиять на это Вы не в состоянии. Во втором случае нужно увеличить значение времени ожиданий в файле конфигурации binkd (значения задаются в секундах): timeout 60 connect-timeout 300 call-delay 60 Если увеличение этих значений не помогает - смените аплинка. 1.5. Телнет на порт 24554 не соединяется, хост на пинг не отвечает. Узел не отвечает. Вероятные варианты : 1 - в данный момент ваш компьютер либо удаленный узел не подключен к интернет или нарушена маршрутизация (обрыв на линии связи, отключение электропитания, проводятся работы у одного из провайдеров и пр.) - предпримите несколько попыток позже; 2 - Ваш компьютер находится в Intranet и выход в Internet возможен только через прокси-сервер - см. "Как подружить binkd и HTTP-прокси", "Как подружить binkd и SOCKS-прокси" ---------------------------------------------------------------------------- 06. Как подружить binkd и HTTP-прокси. Нередко в ЛВС организации пользователи выходят в Internet исключитально через прокси-сервер, установленный на единственном компьютере, имеющем выход в Сеть. При этом binkd не может установить прямое соединение с удаленным узлом и нужно использовать этот прокси-сервер. Поддержка прокси-серверов была включена в версии 0.9.3.https, 0.9.4 и более поздние. Работа через HTTP прокси возможна только в том случае, если в прокси-сервере разрешена команда CONNECT host 24554 (соединение с портом 24554) либо команда CONNECT разрешена для любого порта назначения. Обычно эта команда используется в протоколе "защищенный HTTP" (ссылки вида HTTPS://...), иначе называемого S-HTTP. Из-за этого такой прокси нередко называют "HTTPS-прокси". Если binkd сообщит, что произошла ошибка авторизации, значит в настройке прокси-сервера нужная команда запрещена (или разрешена только для порта 443, что для нас несущественно). Предположим, что компьютер, подключенный к Internet, имеет во внутренней сети IP-адрес 192.168.0.1 и прокси-сервер на нем "отвечает" по порту 3128. Вот строка в файле конфигурации binkd, нобходимая для работы через этот HTTP-прокси: 1. Прокси-сервер без авторизации пользователя (не требуется вводить имя и пароль): proxy 192.168.0.1:3128 2. Прокси-сервер с авторизацией пользователя (требуется вводить имя и пароль, к примеру, имя user и пароль password): proxy 192.168.0.1:3128/user/password 3. Прокси-сервер фирмы Microsoft с авторизацией пользователя по протоколу NTLM. (Требуется входить в домен.) К примеру, имя user и пароль password, компьютер пользователя host и домен ntdomain: proxy 192.168.0.1:3128/user/password/host/ntdomain Если администратор прокси-сервера разрешил соединения только с избранными портами (обычно это порт 443) - тогда binkd выдаст диагностику "Connection rejected by proxy". Вот пример: 31 Mar 16:48:43 [59987] BEGIN, binkd/0.9.3/SOCKS/HTTPS -p BINKD.CFG 31 Mar 16:48:43 [59987] clientmgr started + 31 Mar 16:48:43 [40423] call to 2:5000/44@fidonet 31 Mar 16:48:43 [40423] trying 195.209.235.3, port 24554... 31 Mar 16:48:43 [40423] connected to proxy.osu.ru:24554 31 Mar 16:48:44 [40423] Connection rejected by proxy (HTTP/1.0 403 Forbidden) ? 31 Mar 16:48:44 [40423] unable to connect: {13} Permission denied В этом случае можно попробовать использовать http-туннелинг, например с помощью httport (взять можно на http://www.htthost.com/) ---------------------------------------------------------------------------- 07. Как подружить binkd и SOCKS-прокси. Нередко в ЛВС организации пользователи входят в Internet исключитально через прокси-сервер, установленный на единственном компьютере, имеющем выход в Сеть. При этом binkd не может установить прямое соединение с удаленным узлом и нужно использовать этот прокси-сервер. Поддержка прокси-серверов была включена в версию 0.9.4 и более поздние. Binkd работает с SOCKS-прокси версий 4 и 5. Первые не требуют авторизации (ввода имени и пароля), вторые как правило ее требуют. Предположим, что компьютер, подключенный к Internet, имеет во внутренней сети IP-адрес 192.168.0.1 и SOCKS-сервер на нем "отвечает" по порту 1080. Вот строка в файле конфигурации binkd, нобходимая для работы через этот SOCKS-прокси: 1. SOCKS-сервер без авторизации пользователя (не требуется вводить имя и пароль): socks 192.168.0.1:1080 2. SOCKS-сервер с авторизацией пользователя (требуется вводить имя и пароль, к примеру, имя user и пароль password): socks 192.168.0.1:1080/user/password ---------------------------------------------------------------------------- 08. Как заставить binkd забрать почту с босса (аплинка) Нужно создать полл. binkd это умеет посредством опции -P: binkd -P1:2/3 binkd.cfg обычно при этом нужно, чтобы binkd завершил работу по окончании сессии, для чего используется опция -p: binkd -p -P1:2/3 binkd.cfg Если binkd после окончания сессии долго не завершается, уменьшите значение параметра rescan-delay (иногда и timeout). Если binkd работает постоянно (например установлен как сервис в Windows) и требуется регулярно забирать почту, нужно использовать внешние по отношению к binkd программы или скрипты. Например, в DOS, Windows или OS/2 достаточно выполнить команду: cd . >> %outbound%\NNNNMMMM.ilo где NNNN - шестнадцатиричный номер сети, MMMM - шестнадцатиричный номер узла, %outbound% - путь к аутбаунду нужной зоны. ---------------------------------------------------------------------------- 09. Ошибка "start_file_transfer: .: Permission denied" Это сообщение появляется когда binkd не может открыть файл на отправку, указанный в лошке (*.?lo). Скорее всего в этом файле есть строка, состоящая из одной ".", т.к. poll создается командой echo . >> xxxxyyyy.flo ее нужно заменить на "cd . >> xxxxyyyy.flo" ---------------------------------------------------------------------------- 10. Binkd/win и диалап: автоматический дозвон и отсоединение Задача: настроить систему так, чтобы binkd инициировал телефонный звонок к провайдеру, забирал почту, после чего соединение нужно разорвать. Решения: 1 вариант Установить автоматическое установление связи и таймаут в свойствах соединения (завершать соединение при отсутствии данных через указанное время). При этом удобно использовать нестандартную программу дозвона (Advanced Dialer и т.п.). binkd нужно будет периодически запускать с ключом -p (и, возможно, -Pадрес - чтобы binkd создал полл на адрес)% binkd -p -P1:2/3.4 binkd.cfg 2 вариант Используется опция командной строки -p и командный файл, в котором запускается сервис удаленного доступа (RAS), затем запускается binkd, после завершения binkd RAS останавливается. для Windows NT и Windows 2000 два варианта: === binkdpoll1.cmd rasdial Соединение binkd -p binkd.cfg rasdial Соединение /disconnect === === binkdpoll2.cmd net start "remote access service" net start "remote access auto service" binkd -p binkd.cfg net stop "remote access auto service" net stop "remote access service" === 3 вариант (наилучший для win9x) Используются опции командной строки -p и -Pадрес, управление соединением осуществляется нестандартной программой дозвона (к примеру, dialerp). Этот вариант наиболее надежен (особенно в случае плохой связи с модемом провайдера) благодаря тому, что dialerp при установлении соединения может запускать указанные программы. Вот командный файл, который нужно вызывать из параметра Execute файла конфигурации dialerp: ==== binkd -p -P1:2/3.4 binkd.cfg dialerp BREAK * ==== Остается вопрос: где взять dialerp. Ответ: спроси у автора (Alexander Vedjakin, 2:5020/540) или поищи в архивах файл-эх и на ftp/http. При любом варианте в файле конфигурации binkd нужно поставить малое значение у параметра rescan-delay - тогда binkd будет завершаться быстрее: === binkd.cfg # Outbound rescans period (sec) rescan-delay 2 === ---------------------------------------------------------------------------- 11. Изменил конфиг при работющем binkd. Когда подействуют изменения? Начиная с версии 0.9.1 binkd научился определять обновление файла конфигурации. Запущенный с флагом -C он при этом завершался с кодом 3. (После каждой входящей сессии производилась проверка времени модификации). Вот файл для запуска binkd версий 0.9.1-0.9.3 и 0.9.4-0.9.6/w32: ==== :aaa binkd -C binkd.cfg if errorlevel 4 goto end if errorlevel 3 goto aaa :end ==== В версиях 0.9.4/unix и /os2-emx (только в этих) сделан автоматический перезапуск binkd, если он запущен с ключом -C. Кроме того, начиная с версии 0.9.4 проверяются файлы, включенные в конфиг по include, и проверка происходит не только при входящих соединениях, но и через каждые rescan-delay секунд. В версии 0.9.4/w32 при установке binkd в качестве сервиса Windows NT, нужно установить его с параметром -C: тогда binkd будет перечитывать конфиг. До версии 0.9.4 изменения конфига не проверялись, если binkd был запущен в режиме client-only (ключ -c). В версях для unix конфиг перечитывается по сигналу SIGHUP, командой kill -HUP `cat /var/run/binkd.pid` В версии 1.0 сделано автоматическое перечитывание конфига при его изменении. Проверка проводится через каждые rescan-delay секунд. ---------------------------------------------------------------------------- 12. Как подружить binkd c T-mail/IP? Hикак не подружить. Протоколы принципиально разные: binkd работает по протоколу binkp, t-mail/IP - EMSI & etc. ---------------------------------------------------------------------------- 13. Существует ли в природе хоть один лог анализер под unix? Существует множество Perl'овых скриптов, к примеру вот: binkdstat версия 0.1 beta4 от 6.01.2002 Генератор статистики для binkd (c) Dmitry Sergienko, 2:464/910@fidonet, trooper@unity.net 14.08.2000 http://www.unity.net/~trooper/fido/binkdstat Несколько разных генераторов лежат у Nick Soveiko: http://www.doe.carleton.ca/~nsoveiko/fido/binkd/statistics_generators/ Также существует программа BndStat: BNDST101.ZIP 34812 14-Aug-01 (AREA:AFTNMISC) BndStat 1.01. With sources. BinkD statistics generator. Compiled for all platforms. Included win32 binaries. (C) Dmitry Rusov, 2:5090/94 ---------------------------------------------------------------------------- 14. Binkd долго коннектится (~20 секунд), хотя сетка скоростная (ЛВС). Наверное "включен" параметр backresolv (писать в лог доменное имя удаленного хоста) и не настроен DNS. Самое простое - нужно закомментировать backresolv в файле конфигурации. Посложнее: необходимо настроить DNS. ---------------------------------------------------------------------------- 15. Почему BinkD не хочет понимать передаваемые параметры при запуске из inetd В inetd.conf нужно первым параметром указывать имя программы (в случае с binkd - любая строка), вторым и далее параметрами - ключи запуска (-iqs и прочее по вкусу), последним параметром - полнопутевое имя конфига: binkp stream tcp nowait root /usr/fido/binkd binkd -isq /usr/fido/binkd.cfg Если не используется опция -q, в конфиге нужно убрать вывод на консоль (закомментировать printq, percents, conlog). ---------------------------------------------------------------------------- 16. Можно ли сделать FREQ в binkd. Запросто! Binkd поддерживает WAZOO FREQ. Чтобы запросить файлы с удаленной системы нужно создать файл вида nnnnmmmm.REQ и поместить его в outbound рядом с файлами *.?ut и *.?lo, относящимся к нужному линку. Но файлы *.REQ не инициируют прозвонку в binkd, для совершения FREQ нужно создать полл. Для приема и обработки FREQ в Binkd настраивается вызов внешнего фрек-процессора, поддерживающего SRIF (FSC-0086). Читай файл "!SRIF.TXT" и комментарий к "exec" в конфиг-файле. Вот примеры строки в конфиге для DOS-based OS и для *nix (там приходится указывать маску с регулярными выражениями, чтобы binkd распознал файлы независимо от регистра букв: и *.REQ, и *.req): exec "\\ftn\\allfix\\allfix.exe RP -SRIF *S" *.req exec "/ftn/bin/tmafreq *S" *.[rR][eE][qQ] С binkd совместимы следующие FREQ-процессоры (но не только эти, подойдет любой FREQ-процессор, поддерживающий SRIF): Allfix от Harms Software Engineering: файлэхопроцессор со встроенным обработчиком файловых запросов, существуют версии под DOS и OS/2; ViReq от Michael Haase (2:2432/280): специализированный FREQ-процессор под Windows, распространяется Michael Massenberg (2:2411/505) посредством Fido-over-IP, по модему и ISDN. ---------------------------------------------------------------------------- 17. Как добавить binkd в фидо-станцию, работающую на модеме. Нужно настроить модемный мэйлер и тоссер на режим BSO (binkley-style outbound), так чтобы у всех (и у binkd тоже) совпадали inbound- и outbound-каталоги. Если же мэйлер "умеет" только AMA (arcmail-attach) - придется сменить мэйлер. ---------------------------------------------------------------------------- 18. Флаги по приему файла не создаются, программы не запускаются Наверняка неправильно указана маска в конфиге. Нужно так (версии для windows и os/2 - первые две строки, в юникс-версиях остальные): flag m:\\ftn\\flg\\pntseg.flg m:\\\\ftn\\\\inbound\\\\sec\\\\pntstr*.* flag m:\\ftn\\flg\\toss.flg *.su? *.mo? *.tu? *.we? *.th? *.fr? *.sa? *.pkt exec "/usr/local/bin/ftrack -c /fido/conf/ftrack" *.[Pp][Kk][Tt] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Ss][Uu][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Mm][Oo][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Tt][Uu][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Ww][Ee][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Tt][Hh][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Ff][Rr][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Ss][Aa][0-9A-Za-z] flag "/ftn/flg/fech-in" /ftn/inboundsec/*.[Tt][Ii][Cc] Надо указывать полное имя файла, который должен приняться, с четырьмя слешами или маска должна начинаться с символа "звездочка". Для флага нужно использовать двойные слэши. Полное имя - потому что имя файла без пути означает событие приема файла не в инбаунд, а в текущий каталог. Если маска начинается с "*", то в любой (а поскольку файлы принимаются в один из инбаундов, работает для всех сессий - и парольных, и непарольных). В юниксах нужно учитывать, что большие-маленькие буквы в именах файлов различаются (используйте регулярные выражения в масках). ---------------------------------------------------------------------------- 19. Не работает skipmask. Для skipmask имя файла сравнивается без пути и регистрозависимо. ---------------------------------------------------------------------------- 20. Binkd под DOS. Victor Pashkevich (2:451/30) портировал binkd 0.9.2 для операционной системы MS DOS. C марта 2003 года новый вариант этого порта поддерживается официально (и включен в дерево исходников на CVS). Исходники binkd 0.9.2/dos: http://www.doe.carleton.ca/~nsoveiko/fido/binkd/0.9.2/ Исходники и бинарники binkd 0.9.2/dos и binkd 0.9.5a/dos (не самые свежие): http://www.n451.z2.fidonet.net/binkd/ Свежие исходники - на CVS. Особенность версии под DOS в том, что в системе нет поддержки сети и каждая возможная реализация использует один из стеков IP, разработанных независимыми производителями. Реализация от Victor Pashkevich работает только с драйверами IBM TCP/IP версии 2.1. Найти их можно в Internet: http://www.ibm.com http://binkd.grumbler.org/tcpdos21.rar ftp://ftp.grumbler.org/pub/tcpdos/tcpdos21.rar Кроме имеющегося, каждый желающий может портировать binkd под имеющуюся у него версию драйверов IP под DOS :-). Исходники - в Internet'е и файл-эхе (см. "Где взять свежую версию BinkD.") ---------------------------------------------------------------------------- 21. Binkd под Windows 3.x. Sergey Zharsky (zharik@usa.net) портировал binkd 0.9.2 и binkd 0.9.5 для Windows 3.x. Работает c IP стеками Trumpet Winsock ver. 3.0 revision D и Novell TCP/IP Client for Win 3.11 (см. ответ на вопрос "Binkd под DOS." параграф "Особенность..."). Исходники и бинарники: http://zharik.host.sk/index.php?pages=d&page=d Только 0.9.2: http://www.doe.carleton.ca/~nsoveiko/fido/binkd/0.9.2/ ---------------------------------------------------------------------------- 22. Разные FTN-домены в binkd и тоссер, не поддежривающий 5D outbound. Ситуация: два домена (с разными номерами зон, хотя это непринципиально), почта на первый домен отправляется, на второй - нет. Такая ситуация может возникнуть, если отсутствует поддержка 5D outbound у тоссера, трекера и других фидошных программ, используемых на FTN-системе. Типичная конфигурация binkd для двух доменов и 5D outbound: domain fidonet c:\\ftn\\outbound\\fido 2 domain omeganet c:\\ftn\\outbound\\omega 11 address 2:5070/222@fidonet 11:58/6@omeganet В domain прописывается не default зона сети, а зона, которую не надо добавлять к имени outbound'а (т.е. для зоны, указанной в строке domain, расширения аутбаунда не обрабатываются). Если бы твой тоссер создавал для omeganet бандлы в каталоге omega, то надо было бы писать 11; а раз он создает в omega.00b (или как там?), то писать надо 2, вот так: domain fidonet c:\\ftn\\outbound\\fido 2 domain omeganet c:\\ftn\\outbound\\omega 2 address 2:5070/222@fidonet 11:58/6@omeganet ---------------------------------------------------------------------------- 23. Как работает "domain ... alias-for ..." в конфиге Алиасы учитываются при анализе адреса удаленной стороны. Пример: domain fidonet.net alias-for fidonet При проверке домена: fidonet.net в адресе удаленной стороны заменятеся на fidonet и адрес 1:2/3.4@fidonet.net будет восприниматься как 1:2/3.4@fidonet ---------------------------------------------------------------------------- 24. Что означает диагностика "send: TCP/IP error (-10000)" и как это лечить? Тут две ошибки, основная исправлена перед ответвлением binkd 0.9.5-stable: 1. Дело в том, что в паре мест в коде binkd не было сделано сохранение значения кода ошибки, но это не проявлялось нигде кроме как в win-версии. Ошибка проявлялась потому, что в run-time библиотеке MS Visual C (в отличие от большинства) нарушается стандарт. Ошибка в том, что errno и h_errno в MSVC RTL являются макросами, раскрывающимся в системные вызовы, и все они сходятся в вызов GetLastError(). А значение, возвращаемое этой системной функцией, сбрасывается в нуль при любом успешном системном вызове. Таким образом, errno выставляется в ноль например при успешном открытии файла. (По стандарту errno не должен меняться если не было ошибки.) В binkd влияние этого бага устранено: 2003/04/28 07:30:16 gul * Bugfix: Log() changes TCPERRNO 2. Ошибка в Winsock - select() всегда возвращает успешный код для non-blocked socket. Влияние ее (и других обнаруженных в winsock ошибок) частично устранено: 2003/06/06 16:27:44 gul * Workaround winsock bug - giveup CPU when sending file 2003/08/11 08:41:55 gul * workaround winsock bug (patch by Alexander Reznikov) 2003/08/24 00:29:31 hbrew * win9x-select-workaround fix, thanks to Pavel Gulchouck) Eсть ещё эффект при высоких уровнях протоколирования (в лог пишется куча сообщений 'data transfer would block', отладочная информация по результатам работы select()). Hо на работу в обычном режиме это не влияет. Устранить это можно, но Павел не стал усложнять код. ---------------------------------------------------------------------------- 25. Argus (Radius) и binkd: ошибка Argus "Aborting due to carrier loss" Сессия между binkd и Radius (или Argus - это несущественно) обрывается с непонятной диагностикой "Aborting due to carrier loss" при включенном в Radius шифровании трафика. При этом на стороне binkd соединение обрывается по инициативе удаленной стороны ("Connection reset by peer"). Лог со стороны Radius: 30-Aug-2003 22:24:31 Encrypted (2:463/375) session 30-Aug-2003 22:24:32 Aborting due to carrier loss 30-Aug-2003 22:24:32 Session aborted 30-Aug-2003 22:24:32 End Причина в том, что авторы Argus придумали свой способ шифрования трафика, и в binkd это расширение не реализовано. Все бы ничего, но тонкость в том, что Argus (и вслед за ним Radius) не соблюдает совместимость с протоколом binkp: шифрование включается безусловно, без проверок его поддержки удаленной стороной. Такое вопиющее нарушение спецификации недопустимо - но увы. Выход: отключить шифрование в Argus для каждого линка, у которого используется binkd. Правильное поведение мэйлера должно было быть следующим: - если шифрование необязательно - продолжать некриптованную сессию; - если в настройке мэйлера установлено обязательное шифрование - сообщить удаленной стороне об аварийном завершении, например так: M_ERR "DES encription required" ---------------------------------------------------------------------------- 26. В названии каталога - символ комментария и binkd не видит каталог. При настройке binkd в работающей станции с bink/+: в путях встречается символ "#", он является комментарием для конфига binkd и, чтобы binkd воспринял правильный путь, этот символ надо искэйпить в конфиге обратным слэшем: domain fidonet c:\\fido\\\#out inbound-nonsecure c:\\fido\\unsec\#in inbound c:\\fido\\\#in В версии 1.0 начиная со снапшота 1.0a-317 этот искейпинг можно не использовать, поскольку началом комментария в середине строки стала считаться последовательность пробела и решетки (" #") или табуляции и решетки. Примеры ниже. Нет комментария: temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name Комментарии: inbound c:\\fido\\in # это комментарий, потому что есть пробел перед "#" # Вся эта строка - комментарий ---------------------------------------------------------------------------- 27. Есть ли возможность запуска приложения в binkd по событию? Если речь о временных событиях - нет, и не будет. Для управления событиями существуют разнообразные планировщики, в современных операционных системах они включены в поставку. Если же речь о событии приема некоторого файла - давно реализовано (начиная с версии 0.9), см. в конфиге токены exec и flag. ---------------------------------------------------------------------------- 28. В чем различие между binkd/w32 и binkd/w9x? Binkd/w32 - традиционный вариант binkd, консольное win32 приложение. Binkd/w9x - GUI-приложение win32, создающее временные консольные окна по мере необходимости. Если запустить binkd/w32 в существующем консольном окне (например, в окне command.com или cmd.exe), он будет работать в том же окне. В отличие от него binkd/w9x при запуске сразу же отдает управление вызвавшей его задаче. Необходимость разработки binkd/w9x была вызвана тем, что в Windows 95/98/Me и в Windows NT/2000/XP/2003 есть несколько серьезных различий. Во-первых, консоль реализована по-разному. Основное отличие - консоль в Windows 9x не воспринимает сигналы shutdown и window close, поэтому работающий binkd/w32 не может корректно завершиться при закрытии окна и завершении (перезагрузке) системы. Во-вторых, в версиях Windows разных веток сильно различаются принципы работы сервисов. В итоге, binkd 1.0a/w32 может работать только сервисом Windows NT и последующих, а binkd 1.0a/w9x - только сервисом Windows 95/98/Me. В будущем планируется сделать поддержку сервисов NT в binkd/w9x. Корректная поддержка работы binkd/w32 сервисом под Windows 9x невозможна из-за описанных особенностей реализации консоли в этих системах. ---------------------------------------------------------------------------- 29. Сильно не хватает чата в binkd! И время синхронизировать хочется. Чтобы початиться - используй talk, icq или irc (да хоть Gadu-Gadu). Если есть, где запустить binkd, то по тому же каналу может pаботать и все перечисленное, и многое другое. Чаться до умопомpачения, если сильно надо. И для синхронизации времени по IP есть специальные утилиты, например, ntpdate. Причем ntp* берут время с серверов точного времени, в отличие от мэйлеров. ---------------------------------------------------------------------------- 30. Binkd-service принимает входящее соединение только после исходящего. Такое поведение замечено при работе binkd/w32, установленного сервисом на компьютер с работающим McAfee Firewall. При этом файрвол стартует после запуска binkd и не обнаруживает его активность, соответственно не дает установиться соединению. Соответственно нужно обеспечить запуск binkd после инициализации файрвола. Возможные решения: отказаться от использования binkd как самостоятельного Windows NT service и запускать его из-под внешнего менеджера сервисов, или запускать как обычную программу, либо отказаться от использования такого файрвола. ---------------------------------------------------------------------------- A1. Обнаружил баг в binkd! Попpобуйте освежить веpсию (возможно, ошибка уже исправлена). Если не помогло - надо "пинать" pазpаботчиков: binkd-bugs@happy.kiev.ua Pavel Gulchouck 2:463/68 pассылка binkd-dev@happy.kiev.ua В писме нужно подробно описать ситуацию возникновения ошибки, при этом обязательно указать номеp веpсии и приложить вырезку из подpобного лога (loglevel больше 5). ---------------------------------------------------------------------------- A2. Как связаться с разработчиками. Автор первых версий binkd - Дмитрий Малов - ныне отошел от проекта. В 2000-2003 годах проект координирует Павел Гульчук 2:463/68 (Pavel Gulchouck ), он же и пишет большую часть кода. Для общения разработчиков и тестеров создана рассылка: binkd-dev@happy.kiev.ua. Чтобы на нее подписаться, напишите письмо: To: majordomo@happy.kiev.ua Subject: subscribe binkd-dev ---------------------------------------------------------------------------- A3. Хочу сразу узнавать об изменениях в binkd! Подпишись на список рассылки binkd-diffs@happy.kiev.ua: по нему отправляются изменения в исходниках (заодно можно и проверить патчи на ошибки). Инструкция в предыдущем ответе. Для обсуждения binkd, общения пользователей и разработчиков существуют две эхоконференции FIDOnet: русскоязычная RU.BINKD и англоязычная (международная) BINKD. Ищите на эхохабах :). ---------------------------------------------------------------------------- A4. А когда binkd будет делать ... ? Возможно, будет когда-нибудь. А может и не будет. Можно подождать, пока желаемая возможность будет реализована или устранить "недостаток" самостоятельно - ведь исходники открыты. При этом имеет смысл прислать разработчикам патч: возможно, он будет включен в основную ветку и наверняка будет размещен на вебсайте или FTP. === Конец.