LINUX.ORG.RU

Zhabogram 2.0 — транспорт из Jabber в Telegram

 , ,


3

1

Zhabogram — транспорт (мост, шлюз) из сети Jabber (XMPP) в сеть Telegram, написанный на Ruby. Преемник tg4xmpp.

  • Зависимости

    • Ruby >= 1.9
    • xmpp4r == 0.5.6
    • tdlib-ruby == 2.0 с скомпилированным tdlib == 1.3
  • Возможности

    • Авторизация в существующем аккаунте Telegram
    • Синхронизация списка чатов с ростером
    • Синхронизация статусов контактов с ростером
    • Добавление и удаление Telegram-контактов
    • Поддержка VCard с аватарками
    • Отправка, приём, редактирование и удаление сообщений
    • Обработка цитат и пересланных сообщений
    • Отправка и приём файлов и специальных сообщений (поддержка фото, видео, аудио, документов, голосовых сообщений, стикеров, анимаций, геолокаций, системных сообщений)
    • Поддержка секретных чатов
    • Создание, управление и модерирование чатов/супергрупп/каналов
    • Сохранение сессий и автоматическое подключение при входе в сеть XMPP
    • Получение истории и поиск по сообщениям
    • Управление аккаунтом Telegram
  • Значимые изменения до версии 1.0, новости о которой не было на LOR:

    • Добавлена обработка SIGINT с корректным закрытием всех сессий
    • Добавлены (и позднее удалены) поддержка iq:jabber:register (регистрация пользователей), iq:jabber:gateway (поиск контактов)
    • Долгие бодания с профайлером в Ruby, пока не поняли, что течёт tdlib (разработчики закрыли баг с WONTFIX — это фича)
  • Изменения до версии 2.0:

    • Добавлена поддержка OTR (если Zhabogram используется с обеих сторон — не спрашивайте.)
    • Использование сериализации YAML вместо sqlite3 для сохранения сессий.
    • Убрано автоматическое определение часового пояса в связи с тем, что некоторые клиенты не следуют протоколу и отправляют кашу
    • Исправлены запросы на авторизацию (подписку) от публичных каналов, из которых было перенаправлено (forwarded) сообщение, но подписчиком которого вы не являетесь
  • Изменения в версии 2.0

    • NB! Сломана обратная совместимость конфиг-файла и файла сессий (для поддержки индивидуальных настроек в будущем).
    • Код переписан на 80% — теперь он в разы читаемее. Внутренняя логика приведена в порядок.
    • Количество запросов к Telegram уменьшено в три раза
    • Убраны jabber:iq:register, jabber:iq:gateway
    • Переписаны /команды — теперь они разные для чатов и для самого транспорта (системные функции). Для получения списка команд пришлите команду /help.

Для установки потребуется собственный Jabber-сервер. Рекомендуется получить API ID и API HASH в Telegram для более стабильной работы. Подробную инструкцию можно найти в файле README.md.

>>> Подробности

★★★

Проверено: jollheef ()

Убраны jabber:iq:register,

- Потому что в этом нет особого смысла — в любом случае у Telegram мудрёная система авторизации из нескольких (заранее неизвестных) количества шагов и придётся прибегать к общению командами.

jabber:iq:gateway

- Потому что так и не удалось заставить это работать на «чужом» сервере (когда JID на jabber.ru, скажем, а транспорт на xmpp.jp)

annerleen ★★★ ()

Если собираетесь использовать ЭТО на постоянной основе

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

Тдлиб течёт.

annerleen ★★★ ()

Наша шайка, например.
Перезапуски абсолютно незаметны — сессии поднимаются автоматически, все сообщения приходят даже если пришли в момент перезапуска.

Я не знаю, может при небольшом кол-ве сообщений перезапускать вообще не нужно — у нас у одного юзера стописят конф с миллионами сообщений в день, страдаем.

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

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

Поэтому ещё раз повторю просьбу ограничиться в своих бесполезных высерах на моём ЛОРе.

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

Вы серьезно? Человек должен тащить мертвечину в свою систему?

Вам срочно надо переходить на JavaScript, там всё свежее-свежее! Правда не работает нормально, но свежее-свежее и модное-модное :)

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

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

Тут люди не используют дистрибутивы из за цвета дефолтной темы, не используют хорошие, годные программы из за тулкита, на котором они написаны, а вы говорите из за языка!

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

Вы серьезно? Человек должен тащить мертвечину в свою систему?

Мертвечина это только в забитых стереотипами мозгах погромистов из постсовка не умеющих в английский и следовательно выбор Руби как первого языка предполагает гораздо тернистый путь для условного студента из Урюпинска. В США в вебне с вакансиями и проектами на Ruby всё в порядке:

https://spectrum.ieee.org/view-from-the-valley/at-work/tech-careers/what-prog...

https://medium.com/@yoelblum_45935/demand-for-ruby-on-rails-is-still-huge-ea4...

OSBuster ()
Ответ на: комментарий от shell-script

GitLab - прямо-таки антиреклама Ruby. Как к языку к Ruby я отношусь тепло, но к идее деплоить такие «флагманские» примеры его применения отношусь прохладнейше.

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

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

Кстати, SUSE переписали свой конфигуратор YaST на Ruby уже в десятых.

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

Почему странное учитывая специфику задачи?

Вот Google в 2016 вроде (когда уже все хипстеры форсили Node.js) запилил Fastlane https://fastlane.tools/ , которым сейчас пользуется каждый второй iOS- и Android-разработчик. Не на Python, не на Go, а именно на Ruby.

Учитывая специфику задачи (самописный DSL и метапрограммирование на каждый чих), то выбор понятен. Собственно, Puppet и Chef написаны на Ruby по этой же причине.

Для YaST задачи попроще, но выбор тоже совершенно точно не хуже Python.

OSBuster ()

Re: Если собираетесь использовать ЭТО на постоянной основе

А вы репортить пробовали, или установить проблему и исправить? В issues на гитхабе нет ни одного репорта о том, что он действительно течёт. И пулл-реквестов нет.

Как разработчики узнают о проблеме, если никто не дал знать?

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

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

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

А все остальные, выходит, тут с разработкой не связаны, ждали по выделенному каналу экспертной оценки «связанного с разработкой» лоровца bernd, а сам сабж и примеры по ссылкам и в комментариях выше выдуманы исключительно ради срача под новостью на ЛОРе.

Океееей.

OSBuster ()

А вы репортить пробовали, или установить проблему и исправить? В issues на гитхабе нет ни одного репорта о том, что он действительно течёт. И пулл-реквестов нет.
Долгие бодания с профайлером в Ruby, пока не поняли, что течёт tdlib (разработчики закрыли баг с WONTFIX — это фича)

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

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

Ну и секретные чаты, как уже было сказано.

eternal_sorrow ★★★★★ ()
Последнее исправление: eternal_sorrow (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

Под wayland он глючит так.
Телега на онтопик глючный кусок дерьма.

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

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

даже го популярнее и востребованней руби

Неудачи вам писать тонны копипасты

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

«удобный» пых в очередной раз выкидывает совместимость со старым кодом, а jit до сих пор не завезли.

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

«удобный» пых в очередной раз выкидывает совместимость со старым кодом

кмк, иначе годный язык общего назначения из шаблонизатора не получился бы

а jit до сих пор не завезли

будет в php8 же. А пока есть opcache, который тоже даёт хороший буст

Ford_Focus ★★★★★ ()
Последнее исправление: Ford_Focus (всего исправлений: 1)
Ответ на: комментарий от NextGenenration

А на чём писать - на бидоне

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

Im_not_a_robot ★★★★ ()