Callback-howto
Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.
Linux callback howto.
В багатьох новачків-лінуксоїдів виникає питання: як використовувати послугу зворотнього виклику для роботи в мережі Інтернет. Якщо для користувачів систем М$ цієї проблеми не існує взагалі, то для юнікс-подібних систем потрібно дещо “потанцювати з бубном”. Отже переходимо для розгляду цієї проблеми.
Взагалі для роботи callback в Linux потрібно небагато: ppp версії 2.4.1 чи новішої, зібраної з підтримкою протоколу CBCP, щось_з_графічним_інтерфейсом для роботи через ppp в зручному режимі (не всім зручно працювати в консолі), ще обов'язково: модем та телефонна лінія, не зайвим буде й аккаунт якого-небудь провайдера з callback %).
Перше: підтримка протоколу CBCP в ppp. Якщо ви не впевнені в наявності необхідних опцій, то робимо наступне: завантажуємо сирці ppp з http://ppp.samba.org (або беремо його з диску сирців, якщо він є), розпаковуємо, знаходимо файл ./pppd/Makefile.linux та прибираємо коментар з рядка CBCP=y. Після цього йдуть стандартні:
$ ./configure $ make $ su [root@host]# make install
Треба зауважити, що /usr/sbin/pppd має бути suid.
Отже, маємо ppp з підтримкою всього, що нам потрібно. Можемо починати працювати. Перший (графічний) метод: беремо kppp зі складу KDE 3.3 або chestnut-dialer (що кому до вподоби) й заповнюємо в них усі потрібні місця, у крайньому разі – читаємо інструкцію до вибраної дзвонилки.
Метод другий (консольний): тут вже на що в кого вистачить фантазії, але найголовніше створити peer-конфіги (тека /etc/ppp/peers), наводжу свої:
CB
/dev/ttyS0 115200 connect '/usr/bin/chat -f /etc/ppp/dialCB.ch -r /var/log/chat.report' defaultroute lock ipcp-accept-local ipcp-accept-remote noauth user ******* callback ####### -detach
CBAnswer
/dev/ttyS0 115200 connect '/usr/bin/chat -f /etc/ppp/dialCBAnswer.ch -r /var/log/chat.report' defaultroute lock ipcp-accept-local ipcp-accept-remote noauth user ****** callback ####### -detach
гадаю, всі зрозуміли, що замість зірочок пишемо логін, а замість ####### — свій номер.
Тепер створюємо файл /etc/ppp/dialCB.ch, в якому пишемо:
REPORT CONNECT ABORT BUSY ABORT "NO CARRIER" ABORT ERROR ABORT "NO DIALTONE" "" "at&f" TIMEOUT 5 OK ATDP####### TIMEOUT 70 CONNECT
та dialCBAnswer.ch:
REPORT CONNECT ABORT BUSY ABORT "NO CARRIER" ABORT ERROR ABORT "NO DIALTONE" "" "at&f" TIMEOUT 5 OK "" TIMEOUT 60 RING ATA TIMEOUT 40 CONNECT
В мене все це працювало за допомогою скрипта:
#!/bin/sh while [ 1=1 ]; do echo "===> Starting pppd" /usr/sbin/pppd call CB echo "===> Waiting for incoming call" /usr/sbin/pppd call CBAnswer echo "===> Connection terminated" sleep 2 done
Всі скрипти були написані Олександром Мотіним (mav@alkar.net) та трохи адаптовані мною під лінукс. З'єднувався запуском, роз'єднувався вбивством скрипта (хоча це й не зовсім зручно, але мене влаштовувало).
Ну а тепер – швидких ліній та “а ні busy ні disconnect'у”.

