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)

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

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

jabber:iq:gateway

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

annerleen ★★★★☆
() автор топика

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

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

Тдлиб течёт.

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

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

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

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

мертвечину
последний коммит 36 минут назад

Вы серьёзно? Люди должны читать твой высер на моём ЛОРе?

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

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

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

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

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

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

Gitlab, remine, chef, puppet. Homebrew из macos. Это то, что пришло в голову без гугла и написано на ruby. Достаточно нормальные программы?

shell-script ★★★★★
()
Ответ на: комментарий от 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
()
Ответ на: комментарий от t184256

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

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

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

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

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

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

OSBuster
()

Прошу прощения, что лезу с советами, но вы не пробовали/не хотели вбундлить перехаканную tdlib, которая не течёт, в сорцы?

Wladmis
()

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

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

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

А в чем смысл этой штуки?

Поддержка секретных чатов

Сходу

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

Наша шайка, например.

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

Я записал тебя.

anonymous
()

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

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

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

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

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

Океееей.

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

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

annerleen ★★★★☆
() автор топика

ТЕЛЕГРАМ НЕ НУЖЕН

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

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

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

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

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

Проблемы явно на твоей стороне.

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

уже давно закопали и свалили на матрицу, а там тож транспорт телеги есть и ватсапа.

В матриксе есть транспорт ватсапа? И нормально работает?

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

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

У тебя с системой что-то не то. На моем раче она работает 24/7, ни разу не крашилась.

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

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

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

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

Вейланд до сих пор не вышел из альфы

4.2 версия протокола wayland 1.0 вышла в 2012 году. стабильная версия моего композитора - sway вышла в марте этого года

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

Зависимости Ruby 2019

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

А на чём писать - на бидоне или жабьем скрипе?

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

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

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

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

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

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

Долгие бодания с профайлером в Ruby, пока не поняли, что течёт tdlib (разработчики закрыли баг с WONTFIX — это фича)

Ещё одно доказательство нужности сборщика мусора.

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

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

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

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

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

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

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

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

Im_not_a_robot ★★★★★
()

А есть ли что-то наоборот? Чтобы можно было из телеграма пользоваться жаббер аккаунтом?

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