Так вот, после скитаний по просторам интернета и поиска информации с разрозненных уголков решил собрать воедино. Про его популярность, минусы и плюсы пропустим. В качестве сервера для бота была использована виртуальная машина с LM Serena cinnamon (все манипуляции с установкой и сборкой проводились в сессии ssh с ней).
Первым делом нужно подготовить почву для успеха нашего дела.
Код: Выделить всё
sudo apt install build-essential make mc tcl tcl-dev gcc
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» в конце. 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/'
Первой строкой мы создаем ключ и сертификат.
Во второй строке мы объединяем .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)
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 меняем на имя нашего бота.На этом установка бота завершена успешно, можно приступать к изучению, настройкам и работе со скриптами.
Руссифицированную версию конфига можно взять здесь.
Так же для анализа и сравнения можно воспользоваться генератором конфига для eggdrop (не рекомендую вслепую оттуда копировать текст, но для анализа пойдет.)
Ещё там есть пункты, которых нет в начальном конфиге и в переведенной версии. Если есть желающие - могут внести свой вклад.
Поскольку информация чуть ли ни эксклюзивная - не могу не добавить.
Чтобы бот мог работать со скриптами, обрабатывающими https-запросы, необходимо обеспечить ему поддержку SSL.
В просторах интернета многие лишь вскользь упоминают об этом, но нигде не расписывалось что и как. Одно место всё-таки нашел!!!
Итак, поскольку изменения касаются не только какого-то одного этапа - они выделены мигающим текстом.
ВНИМАНИЕ!!! Для работы с ssl ник вашего бота должен быть обязательно зарегистрирован в irc-сети вашего канала.