Об IRC. Доступно и со вкусом.

Введение в бота eggdrop

Небольшая статья, посвященная основным понятиям бота eggdrop.


Eggdrop бот
Бот eggdrop, это программа скрипт, который запускается на Unix платформе (существуют версии eggdrop для Windows 9X/NT) и подключается к IRC, как робот, который всегда online в IRC - это формирует его различные функции.
Так как eggdrop - это программа, он должен быть скомпилирован, чтобы работать. В основном eggdrop был разработан для операционной системы UNIX, поэтому и распространяется в виде исходного кода. Однако можно взять и уже скомпилированный готовый для запуска код под основные операционные системы ( FTP for eggdrops ). Как только бот скомпилирован, конфигурационный файл, поставляемый с eggdrop, должен быть отредактирован и заполнен всей информацией необходимой боту. Это включает в себя его имя, каналы, на которых он будет присутствовать, сервера, которые он будет использовать, дополнительные модули, которые необходимо загрузить. После завершения конфигурации бот запускается в IRC сеть. Как только бот "родился", он должен быть натренирован его владельцем.

Пользователи бота
Общение с запущенным ботом может быть через /msg , через DCC чат или через telnet. Внутри бота поддерживается список пользователей, права каждого пользователя определяются его флагами. Основная иерархия это владелец, мастер, оператор, пользователь. В зависимости от уровня определяются права пользователя. В дополнение к основному уровню с помощью дополнительных флагов может быть разрешен доступ к тем или иным функциям или даны дополнительные права.
Самый высокий уровень +n владелец (owner) бота. Зачастую это действительно человек, который запустил программу, однако это может быть и другой пользователь. +n может делать на боте и на канале все что угодно, а также имеет доступ к компьютеру на котором запущен бот через него. Следующий уровень +m Мастер. Мастер имеет почти все привелегии владельца с ограничениями доступа к внутренним настройкам и права давать привелигии +m другим пользователям. +o - оператор канала, он может управлять ботом только в том что относится к текущему каналу. Оператор не может добавлять или менять привелегии других пользователей и иногда может не иметь доступа к боту через DCC чат.
Остальные пользователи не имеют возможности влиять на канал или бота, они просто зарегестрированы на нем, чтобы, например, можно было узнать когда этот человек последний раз был на канале с помощью комманды seen. Также, с помощью флагов, можно запретить доступ на канал, зашедший человек будет сразу выброшен с канала.

Управление ботом через /msg
Через комманду /msg можно получить доступ к некоторым фунциям бота.
email - установить свой e-mail адрес, он будет доступен по комманде whois;
help - получить справку о коммандах бота;
ident - установить новый host адрес, необходимо указать пароль;
info - то что установлено по этой комманде будет показываться при входе на канал. Также будет видно по коммандам

who и whois;
notes - позволяет написать записку человеку. Он будет информирован о ней как только присоединиться к каналу;
pass - Установить свой пароль, который используется для других комманд. Оператор обязан установить свой пароль для

Работы любой комманды оператора;
who - Показывает список того кто на канале и их info;
whois - Дает информацию о человеке, его e-mail, info, время, когда он последний раз был на канале и его статус.

Комманды доступные оператору:
go - Покинуть канал (если не оператор);
invite - Пригласить на канал (если бот оператор);
op - Получить статус оператора.

DCC доступ
DCC дает доступ ко всем функциям бота в отличии от ограниченного кол-ва команд, которые дотупны через /msg. Для доступа к боту через DCC пользователь должен иметь +p флаг и установленный пароль. Некоторые боты позволяют иметь доступ операторам без установленного флага +p.
После запроса DCC, если пользователю разрешен доступ, запрашивает пароль, после чего показывает motd (message of the day). Все комманды на боте начинаются с "." (.help) все остальное считается текстом и дублируется всем пользователям находящимся на party line (DCC или telnet подключении), текст, который начинается с "," рассылается только мастерам (+m).

Команды бота
who +ban say away quit
whom -ban msg me servers
whois bans act note channel
match resetbans motd files kick
bots op addlog newpass kickban
bottree deop invite console chat
notes topic nick email info
echo botinfo stick unstick strip
trace fixcodes filestats page su
комманды доступные мастеру (+m)
adduser +host chattr save reload
deluser -host status boot chaninfo
chinfo +user set jump dump
chemail -user flush dccstat debug
comment binds banner +ignore +chrec
rehash restart reset -ignore -chrec
ignores
комманды доступные владельцу (+n)
chanset chansave chanload
+chan die -chan simul modules
loadmodule unloadmodule
комманды мастера ботнета (+B)
+bot chbotattr chnick chpass +bothost
-bot link chaddr relay -bothost
unlink assoc boot

Botnet - сеть ботов
IRC канал существует с момента создания его пользователем IRC и до тех пор пока на нем присутствует хоть один пользователь. Однако никто не сможет присутствовать на канале непрерывно. Поэтому на канале обычно присутсвует как минимум 2-3 бота, что бы в случае отсутствия одного из них остальные смогли поддерживать нормальное функционирование канала. Соответственно необходимо чтобы информация на ботах о пользователях была синхронизированна. Список пользователей на канале должен быть единым для всех ботов. Для этого в eggdrop предусмотренна возможность связывания (link) нескольких ботов. Боты общаются между собой поддерживая измения в
списке пользователей и обмен сообщениями party line пользователей находящихся в DCC chat или telnet с ботами). Все это образует сеть ботов - botnet. В ботнет может входить от 2 до нескольких сотен ботов. Так как связь ботов не требует чтобы боты находились на одном канале, сеть может объединять ботов, находящихся на разных каналах. Обычно они группируются по каналам, и затем связываются между собой.
Для ведения общего списка пользователей, один бот устанавливается как основной, а остальные как подчиненные.

Основной бот хранит список пользователей, учитывает изменения, вносимые в список подчиненными ботами, и рассылает изменения на подчиненные боты.
Посмотреть структуру ботнета можно коммандой .bottree

[TestBot(dcc)] [10:31] #BotM# bottree
[TestBot(dcc)] TestBot
[TestBot(dcc)] |--Guard
[TestBot(dcc)] |--MBot
[TestBot(dcc)] | `--Botik
[TestBot(dcc)] `--Strange

Комманда .who показывает боты которые непосредственно подлинкованы к данному.

Скрипты
Бот является программой, которая запускается и управляется скриптами. Практически все функции релизованы в скриптах на языке tcl, которые поставляются вместе с ботом. Язык tcl несложный и в тоже время дает широкие возможности для расширения функциональности бота. Это могут быть как скрипты, выполняющие функции защиты канала, так и скрипты, которые служат чисто развлекательным целям (рассказать анекдот например).




---
Источник: www.intramail.ru
Автор: ---