Здравствуйте, коллеги!
Новый год подкрадывается всё ближе, а это значит, что нам снова пора собраться вместе для того чтобы хорошо провести время!
Для тех кто еще не знаком с новогодним хабрачатом, расскажу немного про него. Это несколько чатов на разных платформах, объединенных мостом. Боты в каждой из платформ пересылают сообщения из остальных и получается, что все как-бы находятся в одном чате, при этом не покидаю любимой платформы. В этом чате мы традиционно встречаем Новый год уже четвертый раз (в прошлом году только в одном SSH-чате было больше сотни человек).
В центре внимания, конечно, SSH-чат, который работает только несколько дней до нового года и несколько после. В этом году разные люди так же подняли чаты в XMPP (Jabber), Телеграмме и IRC. Так же традиционно есть чат-бот tars, который может вывести ёлку и поздравить с новым годом. В прошлые года таких ботов делали несколько человек (кто-то даже на баше).
SSH-чат обычно открывает @podivilov, для этого используется кастомный SSH сервер, написанный на go. Устанавливается и настраивается он довольно просто. Для начала можно освободить стандартный порт SSH, чтобы при заходе в наш чат не вводить порт. В ubuntu server, например, это делается так. В файле /etc/ssh/sshd_config
находим строку Port 22
и меняем число на нужный порт. После этого перезапускаем ssh демон sudo systemctl restart sshd
и стандартный порт свободен (убедитесь, что фаерфол пропустит вас по новому порту).
Скачивается бинарник под нужную платформу из релизов на github. Можно положить его, например, в /usr/bin
. Далее пишем простой скрипт, который будет перезапускать сервер, в случае падения.
#!/bin/bash
while :
do
/usr/bin/ssh-chat --admin=/root/.config/ssh-chat/admins --bind=0.0.0.0:22 --log /root/ssh-chat.log --motd=/root/.config/ssh-chat/motd
sleep 1
done
Давайте разберем параметры запуска
admin
путь до файла со списком публичных ключей администраторов (у них стандартный набор возможностей: кик, бан и прочее)
bind
айпи и порт, на котором сервер будет транслировать
log
путь до файла с логами чата
motd
путь до файла с сообщением дня (message of the day), которое будет показываться при каждом заходе в чат
Теперь мы можем запустить этот скрипт любым удобным способом (в сессии tmux/screen, через systemctl и т.д.) и чат готов. Вводим ssh nickname@habr2021.podivilov.ru
и попадаем в наш чат. Для списка комманд нужно ввести /help, а для выхода /exit или Ctrl+D.
Мост уже который год хостит @mrDoctorWho, для этого используется matterbridge, который кстати тоже написан на go. Его установка и настройка, как ни странно происходит точно так же. Скачиваем бинарник из релизов на github и кладем его, куда нам надо. Далее пишем конфигурационный файл и скрипт старта. Как-то так выглядит конфиг от @mrDoctorWho:
Файл конфигурации matterbridge.toml[xmpp.myxmpp]
Server="helldev.net:5222"
#Jid your userid
Jid=""
Password=""
Muc="conference.helldev.net"
Nick="bridge"
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
[sshchat.mychat]
Server="habr2021.podivilov.ru:22"
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
[telegram.mytelegram]
Token=""
RemoteNickFormat="[{PROTOCOL}] `<{NICK}>` "
MessageFormat="Markdown"
[general]
MediaDownloadPath="/var/www/"
MediaServerDownload="https://helldev.net/"
[[gateway]]
name="gateway1"
enable=true
[[gateway.inout]]
account="telegram.mytelegram"
channel="-1001200239638"
[[gateway.inout]]
account="sshchat.mychat"
channel="sshchat"
[[gateway.inout]]
account="xmpp.myxmpp"
channel="ny"
К сожалению, у matterbridge слишком много возможностей, чтобы описать их в этой статье, поэтому советую обратиться к официальной вики, в которой все достоточно понятно и подробно рассписано.
А вот скрипт запуска, который почти ничем не отличается от скрипта для SSH-чата:
Скипт для запуска моста start.sh#!/bin/bash
while :
do
/usr/bin/matterbridge -conf /root/.config/matterbridge/matterbridge.toml
sleep 1
done
После старта этого скрипта мы имеем полностью работающий мост между всеми нашими чатами.
Чат-бот, который гуляет по чатам уже который год подряд, называется tars. Бот поздравляет с Новым годом, выводит новогоднюю ёлку ASCII-артом и имеет несколько других команд, в зависимости от того, кто его делал. Первая версия была запущена три года назад, к сожалению не помню кем. Бот был написан на bash-скрипте с использованием screen.
Свою версию я писал на JavaScript с использованием только стандартных библиотек. С его исходным кодом можно ознакомиться здесь. Если вкратце, он вызвает процесс командной строки с помощью модуля child_process (в зависимости от операционной системы, используются либо bash.exe, либо bash). Далее он открывает ssh сессию может писать либо читать прямо из нее. Кроме этого, код довольно заурядный, с его последней версией вы можете ознакомиться на гитхабе.
Выбирайте любой понравившийся и присоединяйтесь. С наступающим Новым Годом!
Центр управления связью общего пользования (ЦМУ ССОП) Роскомнадзора рекомендовал компаниям из реестра провайдеров ограничить доступ поисковых ботов к информации на российских сайтах.…
Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…
Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…
Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…
У частных продавцов на Авито появилась возможность составлять текст объявлений с помощью нейросети. Новый функционал доступен в категории «Обувь, одежда,…
24 апреля 2024 года в Москве состоялась церемония вручения наград международного конкурса Workspace Digital Awards. В этом году участниками стали…