Трансляция общего чата и (или) лички с dc++ хаба в Jabber и обратно. Скрипт является универсальным (т.е. рабоатет на всех хабах), написан на perl под unix/linux.
Для работы требуются сам perl, и модули Net::DirectConnect, Net::Jabber, String::SetUTF8, Text::Iconv и IPC::ShareLite для него.
В текущей версии (0.1) реализованы следующие возможности:
отправка сообщений в общий чат dc-хаба из jabber и обратно;
отправка личных сообщений из jabber конкретным пользователям на хабе и обратно;
добавление неограниченного числа пользователей для трансляции чата/лички;
включение/отключение чата/лички для каждого пользователя по отдельности;
В личке у dc/jabber бота доступны следующие команды:
!help - данная справка
!info - о программе
!ping - поросто проверка, жив ли бот
!mycfg - просмотреть свои настройки
!savecfg - сохранить конфиг в файл
!loadcfg - загрузить конфиг из файла
Последние две - только для хозяина бота.
Конфиг пользователя включает в себя следующие параметры:
dc_user = Имя_юзера_на_хабе
jid = jabber-логин@jabber.server
chat = 1 (включить/отключить трансляцию общего чата хаба в jabber)
pm = 1 (включить/отключить трансляцию лички с хаба в jabber)
dc_offline = 1 (пока не реализовано)
Если указана единица (1) - опция включена, ноль (0) - отключена.
Если включена личка (pm=1), можно отправлять ЛС, используя специальный формат. Чтобы отправить личку с dc-хаба кому-нибудь в jabber, необходимо в приват jabber-бота отправить сообщение вида: "<юзер> сообщение" (без кавычек), а чтобы отправить ЛС из jabber кому-нибудь на dc-хаб, нужно использовать такой формат: "юзер: сообщение" (без кавычек).
Хозяин бота может отправлять из jabber'а команды хаб-ботам (т.е. сообещение без префикса "<юзер>"). Например, чтобы отправить команду !help хаб-боту Security из jabber'а, нужно использовать следующую конструкцию:
!bot Security !help
Конфиг каждого пользователя записывается в конфигурационный файл dcj-linker.conf (находится рядом с самим скриптом) (каждый юзер в новой строке) в следующем виде:
< user="Имя_юзера_на_хабе" jid="jabber-login@jabber.server" chat="1" pm="1" dc_offline="1" >
Замечания.
Команда !savecfg Вам не должна понадобиться, сделана она на будущее.
Напротив, !loadcfg может пригодиться после изменения файла конфигурации при работающем скрипте, например, при добавлении нового пользователя или изменении каких-либо параметров. В этом случае, перезапуск скрипта не понадобится.
Чтобы данный скрипт корректно работал с русскоязычными никами (или другими, не составленных из латинских букв, цифр и некоторых других символов), необходимо подправить установленный модуль Net::DirectConnect. Для этого найдите файл "DirectConnect.pm", например, у меня он находится здесь: "/usr/lib64/perl5/vendor_perl/5.8.8/Net/DirectConnect.pm". Откройте его в любом текстовом редакторе и найдите строку
next unless /\w/;
измените "\w" на "\S":
next unless /\S/;
После этого кириллические ники должны будут работать нормально.
Ниже представлен пример конфигурационного файла dcj-linker.conf с некоторыми комментариями.
# Конфигурационный файл скрипта dcj-linker.
# Настройки
#Адрес хаба
dc_host=127.0.0.1
#Порт хаба
dc_port=411
#Имя бота на хабе
bot_name=JabberBot
#Пароль бота на хабе
bot_pass=botpassword
#Описание бота на хабе
bot_description=Соединяю всё хорошее:-)
#Почтовый адрес бота
bot_email=jabberbot@e-mail.server
#Логин и сервер хозяина jabber-бота
j_admin_login=adminjbot
j_admin_server=jabber.server
#Ник хозяина бота на хабе
dc_admin_bot=AdminJBot
#Логин, сервер, порт, пароль, ресурс бота на jabber сервере
jbot_username=jabberbot
jbot_server=jabber.server
jbot_port=5222
jbot_password=jbotpassword
jbot_resource=www.dcadmins.org
#Максимальное число попыток подключения к хабу
dc_reconnect=7
#Пауза между попытками подключения к хабу
dc_reconnect_timeout=4
#Максимальное число попыток подключения к jabber серверу
j_reconnect=7
#Пауза между попытками подключения к jabber серверу
j_reconnect_timeout=4
#Кодировка, используемая на хабе
dchub_code=cp1251
#Кодировка в jabber (всегда utf8)
jabber_code=utf8
#Ники ботов на хабе, для отправки им сообщений (команд) без префиксов
hub_bot=Security
hub_bot=OpChat
# База юзеров
< user="AdminJBot" jid="adminjbot@jabber.server" chat="1" pm="1" dc_offline="1" >
< user="user" jid="user@jabber.server" chat="1" pm="1" dc_offline="0" >
dcj_linker_v0.1.7z ( 6.5 килобайт )
: 22
Осталось только скрипт ещё добавить, и всё будет хорошо..
Спс, полезная фишка