IRC. Бот eggdrop

Аватара пользователя

Автор темы
Dja
Сообщения: 2761
Зарегистрирован: 27 авг 2016, 17:03
Решено: 11
Откуда: Воскресенск
Благодарил (а): 391 раз
Поблагодарили: 282 раза

IRC. Бот eggdrop

Сообщение Dja » 08 янв 2017, 05:22

Раз уж пошла песня про irc, то надо было и бота мастерить для логирования чата. А то совсем беда.

   Так вот, после скитаний по просторам интернета и поиска информации с разрозненных уголков решил собрать воедино. Про его популярность, минусы и плюсы пропустим. В качестве сервера для бота была использована виртуальная машина с LM Serena cinnamon (все манипуляции с установкой и сборкой проводились в сессии ssh с ней).

   Первым делом нужно подготовить почву для успеха нашего дела.

Код: Выделить всё

sudo apt install build-essential make mc tcl tcl-dev gcc
После этого создадим пользователя eggdrop (без прав админа) sudo adduser eggdrop
Качаем исходники. (рекомендую с github).

Код: Выделить всё

wget https://github.com/eggheads/eggdrop/archive/develop.zip
unzip develop.zip -x joe
Полученную папку перекидываем на подопытную машину любым удобным способом (можно и сначала архив закинуть, а там распаковать).
   Запускаем ssh-сессию под пользователем eggdrop. На полученную или распакованную папку даем права на исполнение рекурсивно (со всеми вложенными папками и(или) файлами). Предположим, что полученная папка у нас в домашнем каталоге пользователя eggdrop

Код: Выделить всё

chmod +x -R eggdrop-develop
Делаем это для того, чтобы наверняка все нужные файлы пометить на исполнение. Теперь заходим в папку.
Отредактируем файл src/tcl.c nano -c src/tcl.c
Нам нужна 696 строка.
if (encoding == NULL) {
encoding = "iso8859-1";
}
приводим к виду
if (encoding == NULL) {
encoding = "iso8859-1";
encoding = "utf-8"; }
Приступаем к сборке.

Код: Выделить всё

cd eggdrop-develop
./configure
Это запустит процесс конфигурации и преинсталляции бота. Дождитесь его окончания. Увидите приглашение со словами «make config» в конце. Собственно, что и выполняем далее. make config - продолжится процесс конфигурации. Дождитесь выполнения. Увидите приглашение со словами «make» в конце. make - компиляция бота. Дождитесь выполнения. Увидите приглашение со словами «make install» в конце. make install - завершение инсталляции. Все файлы собранного бота будут помещены в папку /home/eggdrop/eggdrop/
   Давайте создадим сертификаты!

Код: Выделить всё

openssl req -newkey rsa:4096 -days 730 -x509 -keyout eggdrop1.key -out eggdrop1.crt 
cat eggdrop1.crt eggdrop1.key > ~/eggdrop/eggdrop1.pem 
chmod 600 ~/eggdrop/eggdrop1.pem
openssl x509 -sha1 -fingerprint -noout -in ~/eggdrop/eggdrop1.pem | sed -e 's/^.*=//;s/://g;y/ABCDEF/abcdef/'
где eggdrop1 меняем на ник нашего бота.
Первой строкой мы создаем ключ и сертификат.
Во второй строке мы объединяем .key и .crt в один .pem файл, который будет одобрен IRC сетью.
Меняем право доступа (чтение/запись только для себя).
Четвертой строкой меняем срок действия RSA сертификата.

   Теперь переходим к редактированию конфигурационного файла /home/eggdrop/eggdrop/eggdrop.conf. Можете его сначала себе на машину скопировать, я предпочитаю прям в консоли nano eggdrop.conf
Редактируем его подставляя свои значения. Здесь приведен тот минимум, который необходим для того, чтобы бот запустился.
Начинаем сверху и двигаемся вниз.
#! /path/to/executable/eggdrop -> #! /home/eggdrop/eggdrop/eggdrop
set username "lamest" -> set username "username_вашего_бота_тут"
set admin "Lamer <email: lamer@lamest.lame.org>" -> set admin "ваш_ник_тут" - Имя владельца бота. Выводится в .status и /msg <botnick> help Можете, конечно, и почту указать.
set network "I.didn't.edit.my.config.file.net" -> set network "irc.spotchat.org"
#logfile jpk #lamest "logs/lamest.log" -> logfile jpk #ваш_канал_тут "logs/ваш_канал_тут.log" - включаем логи. Пример logfile jpk #linuxmint-ru "logs/linuxmint-ru.log" (раскомментировали и прописали свое)
m приватные сообщения и ctcp на бота
k кики, баны, смены режимов канала
j входы, выходы, сетевые-сплиты
p публичные разговоры в канале
s серверные соединения/сообщения
b линковка ботов и обмен файлом пользователей
c команды даваемые боту через msg и dcc
x работа с файловым пространством
r (если use-console-r 1) ВСЁ приходящее от сервера
v (если debug-output 1) ВСЁ исходящее на сервер
t (если debug-output 1) botnet-траффик
o прочее: информация, ошибки (ВАЖНАЯ ИНФОРМАЦИЯ)
w wallops: сообщения между IRCop'ами (нужен флаг +w в init-server)
set userfile "LamestBot.user" -> set userfile "ник_вашего_бота_тут.users" - файл пользователей: в нем будут храниться данные о пользователях.
# listen 3333 all -> listen 3333 all - устанавливаем порты. Какие порты должен "слушать" бот?
#set ssl-privatekey "eggdrop.key" -> раскомментить. eggdrop заменить на ник бота.
set ssl-certificate "eggdrop.crt" -> аналогично предыдущему.
set ssl-capath "/etc/ssl/" - закомментим |раскомментим| -> #set ssl-capath "/etc/ssl/"
#set ssl-cafile "" -> приводим к виду set ssl-cafile "/etc/ssl/certs/CA.pem"
#set ssl-ciphers "" -> приводим к виду set ssl-ciphers "DEFAULT ADH"
#set ssl-cert-auth 0 -> меняем set ssl-cert-auth 2
#set ssl-verify-dcc 0 -> меняем set ssl-verify-dcc 1
#set ssl-verify-clients 0 -> меняем set ssl-verify-clients 1
#set owner "MrLame, MrsLame" -> set owner "ваш_ник_тут" - делаем себя овнером. Этот пользователь будет ВСЕГДА иметь флаг "+n".
die "Please make sure you edit your config file completely." - эту строку надо закомментировать или удалить!!!
set chanfile "LamestBot.chan" -> set chanfile "ник_вашего_бота_тут.chan" - тут всё понятно. Файл хранения данных о каналах.
#channel add #lamest -> раскомментим и укажем нужный нам канал channel add #linuxmint-ru
set nick "Lamestbot" -> set nick "ник_вашего_бота_тут"
set altnick "Llamab?t" -> альтернативный ник если основной ник будет недоступен. Символ "?" в нике будет автоматически заменяться на цифру.
set realname "/msg LamestBot hello" -> укажем реальное имя. Я указал свой ник. -> set realname "Ваш_ник"
set servers {
  you.need.to.change.this:6667
  another.example.com:7000:password
  [2001:db8:618:5c0:263::]:6669:password
  ssl.example.net:+6697
}
Пишем свою сеть и убираем лишние
set servers {
irc.spotchat.org:6667
}
set files-path "/home/mydir/filesys" -> set files-path "/home/eggdrop/eggdrop/filesys"
set incoming-path "/home/mydir/filesys/incoming" -> set incoming-path "/home/eggdrop/eggdrop/filesys/incoming"
set notefile "LamestBot.notes" -> set notefile "ник_вашего_бота_тут.notes"
die "You didn't edit your config file like you were told, did you?" - закомментировать или удалить!!!
Для добавления скриптов помещаем их в папку scripts нашего бота, а в конфиге добавляем строчки source /home/eggdrop/eggdrop/scripts/название_скрипта.tcl

Для автоидентификации бота необходим скрипт идентификации - тут уж кто какой найдет.
   После того, как отредактировали конфиг - приступаем к запуску. ./eggdrop -m eggdrop.conf - находясь уже в папке бота. Ведь мы правили конфиг, а значит мы там. Ключ -m приведет к созданию файла пользователей. В дальнейшем надо будет запускать без этого ключа. После того, как бот появился на канале пишем ему вообщение /msg ник_бота Hello после чего бот предложит задать пароль владельца /msg ник_бота pass пароль. Управление ботом далее ведётся в основном через так называемый патилайн — это DCC чат с ботом (обыкновенное окошко в irc-клиенте, похожее на приват). Это достигается командой /dcc CHAT ник_бота. В открывшемся диалоге вам нужно будет ввести заданный ранее пароль. После этого будет доступно управление. Команды начинаются с точки .die - отключить бота. .restart - перезапуск бота. .help - выведет список первично доступных команд.
Для входа в управление ботом можно так же воспользоваться телнетом telnet 127.0.0.1 3333 где 127.0.0.1 - IP ресурса с ботом а 3333 - порт, если в конфиге не меняли на другой. После предложения ввода логина и пароля вводим указанного овнера в конфиге и пароль от него. Находясь в патилайне или телнете после идентификации бота у никсервиса пишем .msg nickserv cert add eggdrop1.pem где eggdrop1 меняем на имя нашего бота.
   На этом установка бота завершена успешно, можно приступать к изучению, настройкам и работе со скриптами. :magic:

Руссифицированную версию конфига можно взять здесь.
Так же для анализа и сравнения можно воспользоваться генератором конфига для eggdrop (не рекомендую вслепую оттуда копировать текст, но для анализа пойдет.)
Ещё там есть пункты, которых нет в начальном конфиге и в переведенной версии. Если есть желающие - могут внести свой вклад. :write:

Поскольку информация чуть ли ни эксклюзивная - не могу не добавить.
Чтобы бот мог работать со скриптами, обрабатывающими https-запросы, необходимо обеспечить ему поддержку SSL.
В просторах интернета многие лишь вскользь упоминают об этом, но нигде не расписывалось что и как. Одно место всё-таки нашел!!!
   Итак, поскольку изменения касаются не только какого-то одного этапа - они выделены мигающим текстом.
ВНИМАНИЕ!!! Для работы с ssl ник вашего бота должен быть обязательно зарегистрирован в irc-сети вашего канала.
Новичок? - ознакомься с правилами

В поисках истины :grabli:

Вернуться в «Руководства»