Botnet'ом называют сеть из ботов. Ботов можно объединить как в свой собвстенный Botnet, так и в уже существующий.
Что может дать Botnet:
1. Разделение файла пользователей между ботами (Sharing). Это когда файл пользователей будет вести один бот (MasterBot), а другие боты (ShareBots) будут просто из него черпать информацию.
2. Можно просто объединить ботов для общего partyline. Тогда люди имеющие доступ на разных ботах к partyline смогут видеть и общаться с пользователями других ботов.
3. Создавать сетевые сервисы. Например, сетевой seen, когда пользователь запросив информацию о последнем местонахождении интересующего его человека получит ответ от бота, который в свою очередь посмотрит в своей базе, а также спросит по Botnet у других ботов. Тем самым можно получить более информативный ответ.
Команды: .+bot - Добавление бота в userfile. .+bot <botnick> <host:port> .-bot - Удаление бота из userfile. .-bot <botnick> .botattr - Устанавка флагов для бота. .chaddr - Установка хоста бота. .chaddr <bot> <host:port> .link - Линковка ботов. .link <bot> .unlink - Разлинковка ботов. .unlink <bot> .bots - Список всех ботов в сети Botnet. .bottree - Дерево Botnet. Выводит карту сети ботов, где ясно видно все ветви сети и даже какие из ботов являются Share. .botinfo - Информация по всем ботам. Подробнейшая информация: имена ботов, владелецы, каналы, версии. .who - Информация о боте. Тоже самое, что и .botinfo, но только по конкретному боту. .who <bot> .relay - Прозрачный переход на другого бота. Для входа не требуется отключаться от текущего. Удобно для отладок и просто временной необходимости зайди в partyline с другого бота. .trace - Путь от вашего бота до тестируемого. .trace <bot> .dccstat - Статистика сокетов. Выводит статистику всех портов, что слушает бот и к кому он подключен.
Соединение ботов в сеть.
Чтобы связать ботов вместе, вам необходимо добавить информацию о линкуемом боте. То есть занести в userfile новую запись.
Предположим, что есть два бота: Бот "Azure" на хосту "bot.azurez.net" и слушаещим порт "7812" Бот "Binny" на хосту "binny.eggy.org" и слушаещим порт "4554"
Тогда на боте Azure делаем: .+bot Binny binny.eggy.org:4554 Тогдв на боте Binny делаем: .+bot Azure bot.azurez.net:7812
После этого вы можете попробовать слинковать ботов вместе используя команду .link
Чтобы боты "слинковывались" автоматически, вам необходимо один из ботов сделать хабом (Hub). Допустим, сделаем хабом Azure. Тогда на боте Binny нужно для записи Azure в userfile поставить один флаг:
.botattr Azure +h
Также есть понятие "alternate hub". Им называют бота, на который стоит флаг +a. Нужен он для того, чтобы стать хабом, если основной хаб по какой-либо причине отключился или недоступен.
Допустим, наш Botnet выглядит так:
Azure |-- Ado |-- Binny `-- Caramba
И на ботах были сделаны следующие команды: На боте Azure: .botattr Ado +h На боте Ado: .botattr Azure +h На боте Binny: .botattr Azure +h На боте Caramba: .botattr Azure +h На боте Binny: .botattr Ado +a На боте Caramba: .botattr Ado +a
И теперь в случае падения Azure, боты Binny и Сaramba перелинкуются на Ado.
Разделение файла пользователей между ботами.
Эта возможность дает преимущества, особенно, если у вас несколько ботов на одном канале. Вам не нужно будет добавлять одного пользователя в userfile всех ботов, а потом также во всех ботах расставлять флаги этому пользователю. Боты сделают это сами.
Внимание! Если вы будете настраивать Sharing на уже слинкованых ботах, то ради безопасности снимите флаг +h. Чтобы боты сами не послинковались и не поперезаписывали свои userfile. И естественно, в объяснениях шаг №1 вы можете пропускать.
В качестве примера применим наших двух виртуальных ботов: Azure и Binny. Azure будет MasterBot'ом (который ведет userfile, это также называется Passive Share), а Binny - ShareBot'ом (который этот userfile использует, это называется Aggressive Share).
На Azure вам потребуется: 1) Поместить Binny в userfile, как бота. .+bot Binny binny.eggy.org:4554 2) Установить его как ShareBot. .botattr Binny +s 3) Указываем какие флаги каких каналов обменивать через Share. .botattr Binny |s #channel Если этого не указать, в обмен пойдут только глобальные флаги пользователей.
На Binny вам потребуется: 1) Поместить Azure в userfile, как бота. .+bot Azure bot.azurez.net:7812 2) Установить его как MasterBot. .botattr Azure +p 3) Указываем какие флаги обменивать через Share. .botattr Azure |+s #channel
Заметка: если вам нужно обменивать между ботами ВСЮ информацию, то вместо того, чтобы прописывать каждый канал, применяйте флаг "g" для бота. Он означает "global share". Подробнее читайте в описании флагов.
Напоминание: если вы отключали +h, не забудьте вернуть.
Работа с partyline.
Как уже говорилось, после того, как вы слинкуете вашего бота с крупным Botnet'ом. В вашем partyline будут доступны все пользователи других ботов имеющих доступ к partyline. Это будет чем-то напоминать IRC. В partyline даже есть каналы.
Команды для работы в partyline: .chat - Команда переключения между каналами partyline. .chat <channel> Каналы в partyline цифровые (текстовый вариант создается с помощью модуля assoc). Основной partyline канал имеет номер "0". Для того, чтобы остаться на боте, но отключиться от partyline: .chat off .away - Помечает вас, как отсутствующего в partyline. .away <text> Для возвращения из режима away, либо просто что-то скажите в partyline, либо наберите .away без параметров. .me - Делает action в канале partyline. Аналог /me в IRC. .me <text> .msg - Посылает сообщение заданному пользователю. Аналог /msg в IRC. .msg <nick>@<bot> <text> .whom - Выводит список всех, кто сейчас в partyline. .whom <channel> Параметр channel необязателен и применяется только для просмотра пользователей заданного канала partyline. В выданном списке напротив каждого пользователя может быть знак: @ - оператор + - мастер * - владелец Если пользователь не оператор, не мастер и не владелец, напротив него знака не будет. .note - Посылает сообщение заданному пользователю. И если он сейчас не в сети, то оставляет ему сообщение. .note <nick>@<bot> <text> .boot - Выбросить пользователя в partyline. Аналог /kick в IRC. .boot <nick> <reason> .assoc - Именование partyline-каналов символьными именами. .assoc <channel> <name> Чтобы просто вывести список именованных каналов: .assoc Для удаления имени у канала: .assoc <channel>