LINUX.ORG.RU

Приглашаю к участию в разработке IRC/XMPP бота на Bash

 , , ,


2

6

https://github.com/spfng/IMVoglea

Выложил свои первые наработки, если у вас есть просто идеи — делитесь.

Скрипты irc_shell/gw_irc.sh и jabber_shell/gw_jabber.sh осуществляют подключение к IRC и Jabber соответсвенно и стабильно держат подключение, переподключаются если его сбросить.

Для обработки сырого трафика выполняются irc_shell/raw_irc.sh и jabber_shell/raw_jabber.sh.

В директории scripts/ выполняются скрипты, например scripts/help.sh. Скрипты вызываются из raw-скриптов и получают команды, например, когда пришло сообщение, вызывается функция on_message, ей передаются параметры — кто написал, где написал и что написал. $sender, $target, $string.

В скрипте делаем какие-то действия, и для обратного ответа используем команду say. Команда say для каждого протокола IRC и Jabber своя. Она формирует сырое сообщение для отправки на сервер.

Таким образом, когда мы пишем боту !help, не важно где, в IRC или Jabber, для скрипта это действие выглядит одинаково, поэтому он одинаково её обрабатывает и отвечает.

Вот такая модульная структура, обеспечивающая конечным скриптам прозрачную совместимость с любыми чат-протоколами.

Товарищи, которые тусуются в #lor @ Freenode, наверняка знают и помнят бота Voglea, который всех радовал. Вот это оно самое.

★★★★★

Херасе какая тяжелая наркомания. Но круто. Буду посмотреть.

anonymous ()

лучше начни С изучать

Harald ★★★★★ ()

Не майся дурью, лучше контрибуть в открытые проекты. Работы навалом.

Deleted ()

Предлагаю вдоль.

Deleted ()

У кого-то слишком много свободного времени. ;) Спуфи, не майся дурью. Твою бы энергию, да в мирных целях!

beastie ★★★★★ ()

ИМХО, bash здесь не самый лучший выбор...

P. S. Но догадываюсь, что переделывать просто лень...

Kroz ★★★★★ ()

Красиво.

Но хочу вас огорчить, вот это утверждение ложно:

Public Domain

https://github.com/spfng/IMVoglea/blob/master/LICENSE (полное содержимое)

Авторское право назойливей, чем вы предполагаете.

Добавьте (по хорошему, в каждый файл) полноценные уведомления об авторских правах или об отказе от авторских прав (второе возможно не во всех странах). Если нужна наикратчайшая разрешительная формула, можно взять GNU All-Permissive License:

# Copyright © <годы-создания> <ваше-имя-и-фамилия>
# 
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without any warranty.
Zmicier ★★★★★ ()

Тебе ведь уже говорили, что shell - не язык программирования?

kirk_johnson ★★ ()

отличный выбор инструментов, главное - релевантный!

anonymous ()

На свифте нужно, а не на этом говне.

Deleted ()
 put "NICKSERV IDENTIFY $(< ~/freenode_passwd)"
 sleep 1
 put "JOIN #lor"
 sleep 1
 put "JOIN #s2ch"

ну это-то можно было не хардкодить

anonymous ()
Ответ на: комментарий от anonymous

хотя там все сыровато

openssl у меня в debian без "-CApath /etc/ssl/certs/" не захотел работать.

потом скрипт запустился, вывалил

irc_shell/raw_irc.sh: line 48: on_mode: команда не найдена

и дальше

irc_shell/raw_irc.sh: line 48: raw: команда не найдена
irc_shell/raw_irc.sh: line 48: raw: команда не найдена

в этом месте уже стало лень разбираться

anonymous ()
Ответ на: комментарий от anonymous

на самом деле тут всё в порядке. просто нехватает одной проверки.

в IRC _каждое_ событие передаётся на скрипт. а в скриптах нету обработчика on_mode, raw, а есть только on_message. но не перечислиять же в каждом скрипте каждый эвент IRC? вот поэтому надо будет просто добавить проверку, после загрузки скрипта, что вызванный эвент существует.

Spoofing ★★★★★ ()
Ответ на: комментарий от Harald

зачем нужен C в 2016 году, кроме как для всяких контроллеров?

lazyklimm ★★★★★ ()
Ответ на: комментарий от lazyklimm

кроме контроллеров С в 2016 году нужен как минимум для ядра линукса, кодеков, высокопроизводительных графических и криптографических библиотек, системных утилит и т.д.

Harald ★★★★★ ()
Ответ на: комментарий от Spoofing

на самом деле тут всё в порядке

так он же в канал ничего не пишет. на !help вываливает ошибку и все. или так и задумано?

anonymous ()

Был у нас бот на баше. Как только появилась нужда в команде, которая работает десятки секунд, пришлось переписывать. В итоге он на go.

derlafff ★★★★★ ()
Ответ на: комментарий от Harald

для ядра линукса

его на 80% пишут корпорации, да и вообще, порог вхождения очень высокий

кодеков, высокопроизводительных графических и криптографических библиотек, системных утилит и т.д.

ну т.е. считанные проценты. Не, ну т.е. кто-то должен этим заниматься, но имхо это должны быть исключительно любители вручную тасовать байтики. Предлагать учить C человеку, которому это нафиг не сдалось - имхо зря.

lazyklimm ★★★★★ ()

Будь так добр, напиши браузер на баше. И ходи на ЛОР только через него.

redgremlin ★★★★★ ()
Ответ на: комментарий от kirk_johnson

К сожалению иногда кроме шелла ничего скриптового нет

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от lazyklimm

да и вообще, порог вхождения очень высокий

Не настолько как кажется.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Harald

А я ему скидывал дельное почитать. Он даже начинал вроде. Но, опять скачет аки блоха и не может определиться в какую сторону ему углубляться.

deep-purple ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

и интернетов нет, и пакетного менеджера нет, и задницу даже вытереть нечем

lazyklimm ★★★★★ ()

годно и полезно для всякого эмбеддед.

кукаретиков всяких с пистонами и прочим го.... не слушай, эти жители петушатника в жизни ничего кроме своего писюка не видели и думают что везде и всюду где есть линукс стоят терабайты винтов и гигабайты памяти.

Stanson ★★★★★ ()
Ответ на: комментарий от lazyklimm

его на 80% пишут корпорации

а в корпорациях этим кто занимается, рептилоиды?

порог вхождения очень высокий

ну для кого как

но имхо это должны быть исключительно любители вручную тасовать байтики

а чем Спуфинг на такого не похож?

Harald ★★★★★ ()

это ты с этим ботом собираешься новый год встречать?

registrant ★★★★★ ()
Ответ на: комментарий от Harald

а чем Спуфинг на такого не похож?

оке, я бы не хотел, чтобы спуфи писал ядро линукса :D

lazyklimm ★★★★★ ()
Ответ на: комментарий от kirk_johnson

на тот момент было ненужно, хотя jimtcl влезал и ещё немного оставалось

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Stanson

годно и полезно для всякого эмбеддед.

Тот же lua куда более выразителен и быстрее bash.

kirk_johnson ★★ ()
Ответ на: комментарий от kirk_johnson

Пока ты на нём не пишешь что-то standalone. Сразу вовсю вылезает несовместимость версий и местами недостаток батареек

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Пока ты на нём не пишешь что-то standalone. Сразу вовсю вылезает несовместимость версий и местами недостаток батареек.

Я писал. Работало.

kirk_johnson ★★ ()
Ответ на: комментарий от kirk_johnson

И я писал, и у меня работало, но количество ручного напилинга в сравнении с тем же питоном было больше.

Dark_SavanT ★★★★★ ()

IRC, XMPP, bash, 2015

найдите лишний член ряда

anonymous ()
Ответ на: комментарий от kirk_johnson

Тот же lua куда более выразителен и быстрее bash.

Какой-нибудь shell по-любому должен быть в любом девайсе с линуксом. Bash отлично подойдёт в качестве этого какого-нибудь шелла. Да и запинать обсуждаемое чтобы работало на каком-нибудь busybox'овом ash тоже можно. А вот lua совсем не обязан быть в любом девайсе с линуксом. И, кстати, знать его и любить совершенно не обязательно чтобы полноценно пользоваться линуксом, в отличии от шелла.

Stanson ★★★★★ ()
Ответ на: комментарий от Stanson

Какой-нибудь shell по-любому должен быть в любом девайсе с линуксом. Bash отлично подойдёт в качестве этого какого-нибудь шелла. Да и запинать обсуждаемое чтобы работало на каком-нибудь busybox'овом ash тоже можно. А вот lua совсем не обязан быть в любом девайсе с линуксом. И, кстати, знать его и любить совершенно не обязательно чтобы полноценно пользоваться линуксом, в отличии от шелла.

Возможно примерно такой же логикой руководствовались авторы dracut. Что получилось мы видим.

kirk_johnson ★★ ()
Ответ на: комментарий от kirk_johnson

Возможно примерно такой же логикой руководствовались авторы dracut. Что получилось мы видим.

Я вот не вижу, например. Зато вижу что например в слаке почти все слакотулзы написаны на шелле и работают прекрасно десятилетиями. Наверно дело всё-же не в шелле, а в чём-то другом, да?

Stanson ★★★★★ ()
Ответ на: комментарий от Stanson

Я вот не вижу, например. Зато вижу что например в слаке почти все слакотулзы написаны на шелле

Мб поэтому их пакетный менеджер до сих пор не умеет нормальные зависимости? Не путай сценарии выполнения (сеть поднять, бекап сделать) и программы. Это разные вещи.

kirk_johnson ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.