LINUX.ORG.RU

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

 , , zhabogram


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 ()
Последнее исправление: Deleted (всего исправлений: 4)
Ответ на: комментарий от anonymous

Как ты себе это представляешь?
В телеграме нет интерфейса мостов, который позволил бы создавать «вымышленные» чаты

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

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

А в каком месте он годный? Тем что на нём кучу хлама написали?

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

Вот по этому писать что-то кроме очередного cms на пыхе не стоит.

<holywar>с#</holywar>

На каком именно? На собственническом?

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

Это активно развивающийся и использующийся язык

Скоро одна из веток наконец-то умрёт. В другой активно слова slave удаляют. И это развитие?

есть в любом дистре линукса по умолчанию

Не по умолчанию, а по зависимостям. Если ставить минимальный образ, то вполне может и не быть.

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

А в каком месте он годный? Тем что на нём кучу хлама написали?

кому хлама, кому 80%+ процентов всего вэба. При этом язычок-то появился сильно позже и бидона, и руби, как же так произошло?

Вот по этому писать что-то кроме очередного cms на пыхе не стоит.

ну дык бэкенд - его узкая и целевая ниша. К нему, конечно, прикручивали и GTK, и ncurces, и нейронные сети, и еще много чего интересного, но будем честны - это скорее just4lulz, чем реальное применение

На каком именно? На собственническом?

что значит «на каком»? если ты про выбор между framework/mono/core, то никакого выбора больше нет - все актуальные наработки всех проектов перекачуют в core, и только core получит дальнейшее развитие

если ты про дурную славу «родителя» - c# стандартизирован как стандарт ECMA, а разработкой runtime и sdk занимается выделенная foundation, т.е. прямо всё по шеньшую

и докину еще немного рекламы - начиная с core3 будет стабилизирован Blazor и c# станет fullstack-языком

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

кому хлама, кому 80%+ процентов всего вэба.

Эти проценты не делают хлам «не хламом»

При этом язычок-то появился сильно позже и бидона, и руби, как же так произошло?

Лучшее враг хорошего. Люди, в большинстве своём, не желают чего-то «идеального» или близкого к нему. Следовательно сейчас пхпешник будет использовать занакомый инструмент, а не изучать новый. В прошлом пых подкупал как тем что требуемое для разработки уже идёт из коробки и не нужно искать какие-то гемы, так и примитивностью самого языка. Для написания очередного cms совершенно не важно, как сделаны замыкания. Если сравнивать с тем же перлом, то пых элементарен, и там не напорешья на проблему с тем что это, вектор или скаляр, плюс нет такого стремления к лаконичности.

что значит «на каком»? если ты про выбор между framework/mono/core, то никакого выбора больше нет - все актуальные наработки всех проектов перекачуют в core, и только core получит дальнейшее развитие

Значит надо либо отдельный репозиторий подключать, либо собирать с нуля. Хорошая альтернатива ruby

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

Достаточно нормальные программы?

Не очень, на самом деле.

Homebrew невероятно костыльный, а GitLab пожирает ресурсы как не в себя.

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

Люди, в большинстве своём, не желают чего-то «идеального» или близкого к нему.

может быть потому что понятие «идеального» у каждого своё, и руби в большинстве своём в него не вписывается? «да нет, бред какой-то»(с)

Значит надо либо отдельный репозиторий подключать, либо собирать с нуля. Хорошая альтернатива ruby

у .net хотя бы репозиторий есть и docker-образы от самих разработчиков, а не куцый костыль rvm

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

может быть потому что понятие «идеального» у каждого своё, и руби в большинстве своём в него не вписывается? «да нет, бред какой-то»(с)

И кто считает идеальным php? А однострочные лямбды, self в методах и ломающийся от форматирования python?

у .net хотя бы репозиторий есть, а не куцый костыль rvm

Подобный костыль есть у python и у haskell, и связан с тем, что ставить разные версии одного и того же пакета научились недавно и не везде. Если у dotnet номер не указывается, подобно python|python2|python3, то та же самая проблема ждёт и их

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

И кто считает идеальным php?

большинство тех, кто на нём пишет и зарабатывает?

Подобный костыль есть у python и у haskell, и связан с тем, что ставить разные версии одного и того же пакета научились недавно и не везде. Если у dotnet номер не указывается, подобно python|python2|python3, то та же самая проблема ждёт и их

Указывается. И переключение дефолтной версии штатной утилитой. И указание версии рантайма в файле проекта. В общем, всё по фэншую

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

Ну так Телега же — дырка от жопы — зачем её вообще использовать и популяризировать? Это просто коммерческая поделка утыканная зондами, как вообще эта штука попала сюда на ЛОР?

anonymous
()

Я правильно понимаю, что у вас кроме ЛОРа никаких каналов поддержки нет? Давеча, после неуспешных попыток поставить более старый Zhabogram, поиск хоть каких-либо контактов обломался. Аккаунт в телеге не нашёлся, по annerleen/annelin/ещё пару форм. На мыло телефонной конторы вашей писать, что ли?

anonymous
()

Ну вот, опять.

[ 0][t 0][1565383491.361042023][Client.cpp:269] Check `!is_locked` failed

Что с этим делать-то? Даже залогиниться не успеваю, а оно уже падает. tdlib самосборный, если что; ваш вообще не подошёл, там какие-то странные глюки с базой были.

anonymous
()

Перестало валиться, теперь такая фигня после авторизации:

#<Thread:0x0000557363e8ed20@/var/lib/gems/2.5.0/gems/tdlib-ruby-2.0.0/lib/tdlib/update_manager.rb:17 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
        9: from /var/lib/gems/2.5.0/gems/tdlib-ruby-2.0.0/lib/tdlib/update_manager.rb:18:in `block in run'
        8: from /var/lib/gems/2.5.0/gems/tdlib-ruby-2.0.0/lib/tdlib/update_manager.rb:18:in `loop'
        7: from /var/lib/gems/2.5.0/gems/tdlib-ruby-2.0.0/lib/tdlib/update_manager.rb:18:in `block (2 levels) in run'
        6: from /var/lib/gems/2.5.0/gems/tdlib-ruby-2.0.0/lib/tdlib/update_manager.rb:40:in `handle_update'
        5: from /var/lib/gems/2.5.0/gems/tdlib-ruby-2.0.0/lib/tdlib/types.rb:668:in `wrap'
        4: from /var/lib/gems/2.5.0/gems/tdlib-ruby-2.0.0/lib/tdlib/types.rb:668:in `each'
        3: from /var/lib/gems/2.5.0/gems/tdlib-ruby-2.0.0/lib/tdlib/types.rb:670:in `block in wrap'
        2: from /var/lib/gems/2.5.0/gems/tdlib-ruby-2.0.0/lib/tdlib/types.rb:679:in `wrap'
        1: from /var/lib/gems/2.5.0/gems/dry-struct-0.5.1/lib/dry/struct/class_interface.rb:201:in `new'
/var/lib/gems/2.5.0/gems/dry-struct-0.5.1/lib/dry/struct/class_interface.rb:208:in `rescue in new': [TD::Types::ScopeNotificationSettings.new] unexpected keys [:disable_pinned_message_notifications, :disable_mention_notifications] in Hash input (Dry::Struct::Error)

И процесс после этого продолжает висеть, но уже не фунциклирует. Это в tdlib-ruby репортить нужно?

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

Сабж издревле позиционируется как мост для старых мобильников, на которые нет официального Telegram. Что вместо Jabber предлагаешь? Wireless Village? Спецификация открытая, с библиотеками для WBXML только печально, но в принципе, можно сделать, было бы время и желание...

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

Да, но автор забил хер на неё.
Ты не ту (бинарную) версию библиотеки собрал, читай внимательно ОП

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

self-hosted бинарник не требует на машине клиента никакого предустановленного рантайма - при компиляции необходимая частичка рантайма будет положена рядом с твоей программой

а начиная с core3 программу с рантаймом можно будет упаковать в один сжатый исполняемый файл - прямо как в golang

c# - не скриптота, инструментарий тут куда более развитой, а возможности куда более шире

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

А какую надо-то? С 1.3.6 сходу падает вообще:

[ 0][t 1][1565432343.586966515][LogEvent.h:207][!NetStatsManager][&version() < static_cast<int32>(Version::Next)]       Wrong version 19
До какого коммита откатиться точно?

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

Зачем, если у меня старый работает?

И новые ведь не лучше. В новых кнопочных моноблоках на Android поголовно камеры на 2 МП стоят, как в моём древнем. И ещё не факт, что качеством лучше. На KaiOS официального Telegram нету тоже; web-версия работает, но это до поры до времени, ибо там браузер на Gecko фиксированной версии. Ну и на хрена менять шило на мыло, спрашивается?

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

mautrix-whatsapp? Оно же очередная обёртка на Whatsapp Web :/ А такого, чтобы мобильный клиент заменяло, нету? Были yowsup-cli и whatsapp-purple, но сломались.

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

Загадить чем? Кстати, туда и некоторые Jabber-ные чатики перекатились, и даже гейтуются сами с Jabber, ради ретроградов.

anonymous
()

Омские линуксоиды одобряют! Больше транспортов хороших и разных.

linuxmaster ★★★★
()

Похоже на говнокод

``` ruby zhabogram.rb /opt/zhabogram/inc/xmppcomponent.rb:4:in `initialize': wrong number of arguments (given 1, expected 0) (ArgumentError) from zhabogram.rb:15:in `new' from zhabogram.rb:15:in `<main>' ```

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

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

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

Если «половина» команд не работает (в т.ч. исходящие сообщения), вероятнее всего, телега/API ключ в бане.

Можно поднять tdlib_verboity повыше и увидеть что и почему.

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