Eggdrop Guide Version 1.07 (03-Jun-2002) (c) 2002 Efim Shuvikov http://www.amiga.org.ru/eggdrop/ -----=# Содержание #=-------------------------------------------------------- 1. Общая информация a) Введение b) Что такое Eggdrop c) Что нужно для работы d) История бота e) Адреса и ссылки 2. Начало работы a) Где взять Eggdrop b) Компиляция c) Конфигурирование бота d) Настройка CronTab e) Запуск 3. Языковые аспекты 4. Botnet 5. Bouncer 6. Список изменений -----=# Введение #=---------------------------------------------------------- Данный документ описывает основы, которые требуются чтобы начать работу с ботом Eggdrop. -----=# Что такое Eggdrop #=------------------------------------------------- Eggdrop - это IRC-бот, написанный на языке C, доступный для любой более-менее распространённой платформы (unix, win32, amiga, etc...). Тесная интеграция языка Tcl ("тикль") позволяет писать собственные высокопроизводительные скрипты для расширения функциональности бота, что, при определённых навыках программирования, открывает почти безграничные возможности. Следует так же заметить, что у бота существует интерфейс API для написания внешних модулей на C, которые работают быстрее, чем сколь угодно хороший скрипт, однако сложность их отладки и изменения, и высокая производительность скриптов на Tcl в повседневном использовании обычно берут верх, даже у весьма искушённых пользователей. -----=# Что нужно для работы #=---------------------------------------------- Для работы бота необходим shell. Shell'ом называют наличие доступа к серверу (обычно Unix-серверу) на котором у вас есть право работать в качестве пользователя (закачивать, удалять, создавать, копировать файлы и, конечно же запускать). Обычно, shell-account можно получить следующими путями: 1) Купить (большинство крупных провайдеров продают shell-account'ы) 2) Взять бесплатно (выиграть, взломать, украсть) 3) Взять у знакомых владельцев серверов (обычно, все так и делают) 4) "Поднять" свой сервер (или запустить бота на локальной машине, которая в сети 24 часа в сутки) -----=# История Eggdrop #=--------------------------------------------------- Первый релиз бота Eggdrop для широкого применения появился в декабре 1993 года. Тогда это была версия 0.6 и ее автор был, теперь уже небезызвестный, Роби Поинтер (Robey Pointer). Есть данные, что бот Eggdrop "родился" из бота, который носил имя Unrest. А работа над Eggdrop до версии 0.6 велась несколько лет. С тех пор, Eggdrop является самым продвинутым и многофункциональным ботом для IRC. Для него написано несколько тысяч скриптов расширяющих его возможности. До версии 1.2 бота разрабатывал сам Роби, а с версии 1.3 его заменила команда Белдина (Beldin's development team). Эти же ребята пытались сделать заведомо неудачный проект Eggdrop2. Народу не понравились те нововведения и глюки, которых было в избытке, поэтому Eggdrop2 так и "умер" не родившись. Активность Белдина завершилась на версии 1.3.23 Дальнейшую разработку Eggdrop решила взять на себя команда Eggheads. В большинстве своем, состоящая из активных пользователей бота. Исходный код был выложен на CVS (Concurrent Version System), где и велась работа над ним. На данный момент времени они до сих пор и ведут этот проект. Сейчас существует две ветви развития Eggdrop: 1.6 - отлаженые версии бота для повседневного использования (STABLE) 1.7 - экспериментальные версии (DEVELOPMENT). Бот переписан "с нуля", добавлена модульная система поддержки различных языков программирования (теперь скрипты можно писать не только на Tcl), и прочие значительные изменения. Релизом этой ветви будет 1.8. Заметка: название Eggdrop было взято из кулинарной книги, где давался рецепт приготовления "Eggdrop soup". -----=# Адреса и ссылки #=--------------------------------------------------- При возникновении проблем с ботом или вопросов, их можно задать на одном из IRC-каналов: Канал от eggheads.org irc.undernet.org #eggdrop Канал от eggfaq.com irc.efnet.org #eggfaq Русский канал irc.forestnet.org #eggdrop Канал от egghelp.org irc.efnet.org #egghelp Канал от eggdrop.cx irc.gate.ru #eggdrop или в форуме по боту Eggdrop: http://www.egghelpforum.com/ Если же вы считаете, что нашли ошибку в боте, то немедленно сообщайте ее команде разработчиков по адресу: bugs@eggheads.org Если вы нашли и исправили ошибку в исходном коде бота, то присылайте файлы созданные при помощи "diff -bur >.patch" по адресу: patches@eggheads.org В письми опишите что и зачем вы изменили. И продублируйте это письма на адрес: eggdev@eggheads.org, но без файлов. А если же вы просто хотите побродить по сайтам посвященным боту и скриптам для него, то начните с самых главных, а далее по ссылкам. http://www.eggheads.org/ Официальный сайт разработчиков http://www.egghelp.org/ Популярный сайт пользователей бота http://www.eggfaq.com/ Сайт поддержки канала #EggFAQ http://johoho.eggheads.org/eggdrop/ Полезные ссылки и бинарные версии бота http://mars.age.psu.edu/search.html Поиск Tcl-скриптов http://mars.age.psu.edu/newfiles.shtml Список новых файлов ftp://ftp.eggheads.org/pub/eggdrop/scripts/ Крупнейшая коллекция скриптов http://www.baschny.de/eggdrop/ Сайт Ernst'a http://www.goblet.net/scripts/ Сайт Goblet'a http://lolstoolz.pwh.ch/indexen.html Сайт автора скрипта Lol's TooLz http://www.egghelp.org/netbots.shtml Система Netbots http://johoho.eggheads.org/eggdrop/components.htm Компоненты Netbots http://www.eggsource.com/ Скрипты для Eggdrop, BitchX, Tcl http://www.xcalibre.com/botnets.htm Список Botnet'ов Так же есть сайты, где можно найти описание команд для public-ботов, которых можно нередко встретить в IRC: http://seaguard.boom.ru/ Боты серии SG http://www.sy-tech.net/ Боты серии Credo http://center.nstu.ru/b-on/ Бот B-on http://bot.net.ru/ Боты серии TAHK http://kalich.sf.net/ Боты серии Kalich Если у вашего бота тоже есть сайт, вы можете прислать ссылку. -----=# Где взять Eggdrop #=------------------------------------------------- http://geteggdrop.com/ Сразу отдает последний релиз бота Примеры работы с geteggdrop.com: wget geteggpdop.com fetch geteggdrop.com tar xfz geteggdrop.com cat geteggdrop.com >>eggdrop.tgz ftp://ftp.eggheads.org/pub/eggdrop/GNU/ Исходные коды всех версий бота включая последнюю beta-версию http://johoho.eggheads.org/eggdrop/ Скомпиленные версии бота под разные http://www.unseen.org/~simpson/eggdrop/ платформы http://windrop.sourceforge.net/ Также можно скачать самую свежую версию бота используя систему CVS. Обычно это делается для того, чтобы можно было отлавливать баги в еще невыпущенных релизах бота и сообщать их разработчикам. Ну, а также иметь в своем распоряжении самую последнюю версию бота. Если же вы все-таки просто используете Eggdrop, я бы вам не рекомендовал работать на версиях с CVS, так как это все-таки девелоперские (возможно, нестабильные) версии. Но если вы хотите скачать последнюю версию с CVS, вам необходимо иметь установленный пакет для работы с CVS-системой. Обычно все операционные системы класса Unix оснащены им. Наличие можно проверить набрав в shell команду: cvs Если система сказала, что-то типа "command not found", это значит, что у вас не установен пакет поддержки CVS. Установите его. Если же вы увидели вывод встроенного help команды cvs, то все в порядке. В unix-shell наберите: 1) 'export CVSROOT=:pserver:anonymous@cvs.eggheads.org:/usr/local/cvsroot' 2) Затем наберите 'cvs login' 3) На запрос пароля нажмите 4) Наберите 'cvs checkout eggdrop1.6' (или нужную версию) 5) Далее произойдет обновление исходников в вашу локальную директорию 6) После завершения наберите 'cvs logout' В дальнейшем можно будет просто заходить в локальную директорию с исходниками и набирать 'cvs update' для автоматического обновления уже без использования приведенных выше шагов. -----=# Компиляция #=-------------------------------------------------------- Для сборки Eggdrop вам обязательно необходим и Tcl (язык программирования, который используется в ядре бота). Проверить наличие Tcl можно набрав в shell команду: tclsh (или tclshX.X, где X.X версия Tcl) Если вы получите приглашение в виде символа "%", значит Tcl есть. Если нет, то установите. Рекомендуемые к установке версии Tcl: 8.0.x или 8.3.x Скачать Tcl в исходниках можно с ftp-сайта: ftp://ftp.scriptics.com/pub/tcl/ Порядок сборки Tcl: 1) Распакуйте архив с Tcl (tar -zxf tcl8.x.x.tar.gz) 2) Зайдите в директорию с нужной платформой (cd tcl8.x.x/unix) 3) Наберите './configure' 4) Наберите 'make' 5) Наберите 'make install' И в /usr/local/lib появится libtcl8.x.x.so, в /usr/local/include директория tcl8.x.x, а в /usr/local/bin tcl-shell tclsh. Однако может наилучший вариант это установить Tcl из пакета (rpm, tgz, deb). А вот Eggdrop лучше собирать самому, так как все зависит от того, как вы хотите потом использовать бота. Собрать Eggdrop можно в двух видах: Static - будет занимать меньше, чем eggdrop + dynamic-модули, и будет в одном файле. Таким образом менять версию бота для тестов или проверок намного проще, так как менять надо всего лишь один файл. А также, если ваш бот запускается в одном экземпляре и больше нет никаких других ботов запускающихся из этой же директории, то этот вид сборки тоже будет лучшим вариантом. Dynamic - будет в виде нескольких файлов (сам eggdrop и модули) и займет чуть больше, из-за заголовков и служебной информации в скомпилированных файлах. Но динамик выигрывает за счет экономии памяти при запуске нескольких ботов. Если запустить несколько ботов, то память будет общей. А также dynamic-модули можно загружать/выгружать на лету. Последовательность для сборки бота такова: 1) Скачать бота с сайта или ftp (архив будет с именем eggdrop-1.x.x-tar.gz) 2) Если не установлен Tcl - скачать и поставить (установить можно как из исходников, так и из пакетов rpm, tgz, deb и т.п.) 3) Развернуть архив с ботом в нужную директорию. (tar -zxf <имя архива>) 4) Далее обычно хватает команды: ./configure Но если собирать нужно с конкретной версией Tcl, то указывайте: ./configure --with-tcllib=/libtcl8x.so --with-tclinc=/tcl.h Где "x" нужный номер версии библиотеки. 5) Для автоматического подключения модулей: make config Для ручного подключения модулей: make iconfig 6) Для сборки бота как dynamic (обычно): make Для сборки бота как static: make static 7) make install DEST= (где path, путь куда установить) -----=# Конфигурирование бота #=--------------------------------------------- Сразу после этого, бота необходимо сконфигурировать для того, чтобы его можно было запустить. Для этого скопируйте или переименуйте eggdrop.conf.complete в eggdrop.conf и откройте его редактором и начинайте настраивать. Все настройки расписаны в документе "Eggdrop Config Explanations". А здесь я приведу тот минимум, который необходим, чтобы просто "запуститься": 1) Установить путь до Eggdrop: #! /eggdrop 2) Установить username бота: set username 3) Установить адрес владельца бота: set admin 4) Настроить или отключить логи: logfile 5) Установить имя файла пользователей: set userfile 6) Установить порт/порты для сетевых соединений: listen 7) Убрать или закомментировать строку: die "Please edit your config file." 8) Установить имя файла каналов: set chanfile 9) Отключить (или заменить на свои) все настройки для канала #lamest 10) Отключить (или заменить на свои) настройку для канала #botcentral 11) Установить ник бота: set nick 12) Установить альтник бота: set altnick 13) Установить строку для whois на боте: set realname 14) Установить адрес(а) IRC-сервера(ов): set servers 15) Настроить пути для файловой системы (только если активен модуль filesys): set files-path и set incoming-path 16) Установить путь файла для записок (только если активен модуль notes) set notefile 17) Убрать или закомментировать строку: die "You didn't edit your config file like you were told, did you?" 18) Раскомментировать строку: #checkmodule blowfish 19) Отключить/подключить скрипты: source scripts/* Заметка: если вы уже имеете хорошо настроенного бота и хотите поставить свежую версию. То наверняка зададитесь вопросом: "А что нового было добавлено в конфиг?". Читайте "Eggdrop Config Explanation" раздел "Изменения". Или можете выяснить это сами с помощью команды diff. Она есть во всех unix-системах. Для этого вам потребуются два eggdrop.conf.complete, из старого дистрибутива и нового. Положите их вместе как: eggdrop.conf.old и eggdrop.conf.new После этого запустите команду: diff eggdrop.config.old eggdrop.config.new > eggdrop.config.changes И в файле eggdrop.config.changes вы получите все изменения. Заметка: если вам часто приходится добавлять/удалять скрипты в конфиг, и приходится очень долго "ползать" в конец огромного конфига, то есть способ упростить вам жизнь. Создайте файл eggdrop.scripts (там же где и eggdrop.conf) и поместите в него все вызовы (source scripts/<имя скрипта>). А в самом конфиге их удалите и поместите в конце всего одну строку: source eggdrop.scripts Теперь все изменения по скриптам делайте только в eggdrop.scripts -----=# Настройка CronTab #=------------------------------------------------- Для того, чтобы не произошло ситуации, когда ваш бот по какой-то причине завершил работу, был закрыт или просто "упал процесс" - существует система его автоматического запуска. Работает она на базе Cron (стандартное средство Unix-систем). Для настройки себе этой системы, можно пойти двумя путями: 1) Настроить файл botchk В комплекте с ботом идет файл "botchk". Скопируйте его туда, где лежит сам бот и его конфиги. Зайдите в него редактором и настройте поля: botdir="/home/eggdrop" Путь до директории с ботом. botscript="eggdrop mybot" Файл бота. Если вы пускаете бота сразу из eggdrop, то напишите просто "eggdrop". Если из отдельного файла конфига, то "eggdrop <имя файла>" botname="MyBot" Ник бота. ОБЯЗАТЕЛЬНО с соблюдением больших и маленьких букв. userfile="mybot.user" Имя файла с пользователями. Смотри настройку бота. Затем (под root'ом) зайдите редактором в /etc/crontab и добавьте строку: Для проверки каждую минуту: * * * * * /<путь>/botchk Для проверки каждые 5 минут: */5 * * * * /<путь>/botchk Для проверки каждые 10 минут: 0,10,20,30,40,50 * * * * /<путь>/botchk Для проверки каждые 15 минут: 0,15,30,45 * * * * /<путь>/botchk Для проверки каждые 30 минут: 0,30 * * * * /<путь>/botchk Если вы не хотите, чтобы бот писал о своих падениях вам на email, то добавьте в конец строки еще этот кусок: ">/dev/null 2>&1" (без "") Пример: */5 * * * * /home/eggdrop/botchk >/dev/null 2>&1 2) Построить свой botchk используя autobotchk Также в комплекте с ботом идет скрипт для автоматической генерации файла botchk. Для его использования также скопируйте его туда же, где лежит бот. И запустите с указанием имени конфига: ./autobotchk <имя конфига> Также можно сразу указать интервал времени для проверки и слать ли почту при падении: ./autobotchk <имя конфига> -noemail -5 Скрипт сам установит правильные ник бота и пути до него, а также сам "пропишется" в CronTab (если для этого у него хватит прав доступа). -----=# Запуск #=------------------------------------------------------------ Первый запуск бота обязательно делайте "вручную" и с указанием аргумента для создания файла пользователей "eggdrop -m". Иначе без этого файла бот вообще не будет работать. Порядок действий таков: 1) Запустить бота 'eggdrop -m' 2) Дождавшись его появления на IRC дать команду: '/msg <ник бота> hello' Если бот долго не приходит на IRC, ищите причину. Просмотрите логи. Запустите его еще с ключами "-nt". 3) После того как бот объявил Вас владельцем, установите себе пароль: '/msg <ник бота> pass <пароль>' 4) Зайдите на partyline используя DCC Chat-соединение с ботом и установленный только что пароль. 5) В partyline дайте команду: .die Бот отключится. После этого запуск с ключом "-m" используйте ТОЛЬКО для создания нового (пустого) файла пользователей. Заметка: Помните! Если вы случайно или специально запустите бота применив ключ "-m", то он уничтожит старый файл пользователей. Сообщения об ошибках при запуске: "Hostname self-lookup failed" Бот не может определить свой hostname. Задайте его вручную, прописав в конфиге: set my-hostname и set my-ip "Please select an encryption module" Вы забыли активизировать модуль blowfish. Найдите в конфиге строку со словами "checkmodule blowfish" и уберите перед ней символ "#" (то есть, раскомментируйте строку) Если такой строки не нашли - создайте ее. "Couldn't grab nearby port" Это означает, что бот не может открыть сокет на данном порту. Это может случиться, если: a) порт указанный в конфиге занят и конфликтует с другими программами b) неверные установки set my-hostname и set my-ip в конфиге c) если в каталоге лежит файл pid. Проблема "a" решается сменой порта на другой. Проблема "b" решается исправлениями переменных в конфиге. Проблема "c" решается удалением файла. Если ничего не помогло, то просто закомментируйте строку с "listen", но это отключит возможность соединять бот с другими ботами (Botnet) и работать с ним через telnet. "No userfile found" или "No channel file found" Отсутствует или недоступен файл пользователей. Отсутствие исправляется запуском с ключем "-m". Подробнее читай выше. Недоступность может быть вызвана неверными правами доступа к файлу. Установите их в 0644 (rw-r--r--). Если проблема не исчезла, пропишите в строке конфига: set userfile-perm 0644 -----=# Языковые аспекты #=-------------------------------------------------- Данный вопрос заслуживает отдельного внимания, так после выхода Tcl версии 8.1 у бота Eggdrop начались проблемы с языками отличными от английкого (iso8859-1), например русским. Случилось это потому, что Tcl был полностью переведён в стандарт Unicode, и все строковые значения (единственный внутренний формат хранения данных в Tcl) были переведены в форму UTF-8 (RFC 2044). Проблемы к примеру такие: не переводит русские буквы в нижний регистр команда [string tolower], некорректно конвертируются кодировки с помощью команды encoding И многое другое. И виноват в этом не Tcl, а сам Eggdrop, до сих пор некорректно поддерживающий unicode. Если вы 100% не хотите встретиться с этой проблемой, просто не устанавливайте Tcl версии 8.1 и выше. Но в этом есть и свой минус, особенно если вы пишите свои собственные скрипты или часто ставите новые. Tcl 8.0 уже устарел и в нем отсутствует большое количество процедур, команд и аргументов функций, которые используются при написании современных и быстрых скриптов. Так что этот вариант тоже нельзя назвать панецеей. Второй вариант и на данный момент вполне рабочий это установка бота с патчем для совместимости с UTF8 в Tcl. Этот патч появился с версии Eggdrop 1.6.4, но сам 1.6.4 лучше не ставить, так как он содержит ошибки, ровно как и 1.6.5. Советую всегда устанавливать последний Eggdrop и читать список изменений. Но и здесь не все гладко. Например можно увидеть "мусор", если написать по-русски realname бота или заводить из скриптов bind с русскими словами. Хотя они же, но созданные из патилайн успешно работают. А также еще есть одна проблема это маленькая буква "я" (символ с кодом 255) в DCC Chat (Partyline) при написании что-либо туда с ней бот теряет ее, а заодно и символ справа. Причина в том, что 255 символ, а под него и попадает буква "я", является системным для telnet-протокола, через который работает и DCC-соединение с ботом. Поэтому шансы получить работающую букву "я" ничтожно малы. Некоторые находят выход из ситуации переводя "я" в "Я". -----=# Botnet #=------------------------------------------------------------ Botnet'ом называют сеть из ботов. Ботов можно объединить как в свою собвстенную сеть, так и в уже существующую. Что может дать Botnet: 1) Разделение файла пользователей между ботами (Sharing). Это когда файл пользователей будет вести один бот (Hub), а другие боты (Leaf) будут просто из него черпать информацию. 2) Можно просто объединить ботов для общего partyline. Тогда люди имеющие доступ на разных ботах к partyline смогут видеть и общаться с пользователями других ботов. 3) Создавать сетевые сервисы. Например, сетевой seen, когда пользователь запросив информацию о последнем местонахождении интересующего его человека получит ответ от бота, который в свою очередь посмотрит в своей базе, а также спросит по Botnet у других ботов. Тем самым можно получить более информативный ответ. Более подробно о работе с Botnet и его настройкой читайте в документации по администрированию. -----=# Bouncer #=----------------------------------------------------------- Bouncer это "умный прокси" для IRC. Позволяет вам оставаться на каналах даже после выключения компьютера и иметь на IRC всегда один хост. Наиболее продвинутые баунсеры умеют вести логи обращений к вам, имеют встроенную поддержку ignores, bans, autoops и многое другое. Ссылки и описания на различные BNC-сервера (программы) вы найдете здесь: http://johoho.eggheads.org/eggdrop/bouncer.htm -----=# Список изменений #=-------------------------------------------------- 1.0 o Первая версия обновленного документа 1.01 o Небольшие текстовые правки 1.02 o Обновлен текст описания бота o Небольшие текстовые правки 1.03 o Небольшие грамматические и стилистические правки o Добавлена информация о patches@eggheads.org 1.04 o Добавлен раздел Bouncer o Добавлены новые ссылки 1.05 o Добавлена ссылка на www.geteggdrop.com 1.06 o Добавлена ссылка на ботов Kalich o Приведены примеры работы с geteggdrop.com 1.07 o Документ переименован в Eggdrop Guide ----------------------------------------------------------------------------- End Of File