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)
Ответ на: комментарий от alien_2003

команду /help нужно писать контактам, а не транспорту

upd: впрочем, команду /help транспорту тоже исправил, но там ничего интересного не было.

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

Подскажите, как установить этот транспорт? Из-за строки «service_check_from: false» ejabberd не хочет запускаться (Unknown listening option 'service_check_from').

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

Закомментировал. Запустил сервер и транспорт. Если в gajim просмотреть сервисы, то транспорт там появляется не в разделе «Транспорты»,а в разделе «Другие» и название написано серым, при наведении мышкой, написано - «Этот сервис еще не сообщил информацию о себе».

Если нажать на транспорт, доступна кнопка «Зарегистрироваться», нажатие на нее в старой версии gajim просто закрывает окно со списком сервисов, а в новой появляется еще одно окно в котором бесконечно крутится индикатор ожидания.

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

Просто добавь JID транспорта в ростер и перелогинься.

annerleen ★★★★☆
() автор топика
10 октября 2019 г.
Ответ на: комментарий от annerleen

Эт что ещё?

Нарезалка исходников, чтобы компиляция не жрала тонны рамы. У меня гиг всего на VPS.

Блин, какое же кривое и глючно говно этот ваш тдлиб

Так зачем ты на нём пишешь? Тем более на некроверсии? Там в репозитории tdlib-ruby поговаривают, кстати, что TDlib ниже версии 1.5 сломался — правда?

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

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

Потому что актуальные версии tdlib не поддерживаются tdlib-ruby.

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

Там в репозитории tdlib-ruby поговаривают, кстати, что TDlib ниже версии 1.5 сломался — правда?

Всё работает, если Вы о транспорте, но мы тут подумываем нанять нормального программиста (а не меня) и переписать на Go.

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

актуальные версии tdlib

Так вопрос в том, на хрена использовать TDlib, когда есть tgp, например.

не поддерживаются tdlib-ruby

Уже два дня как поддерживаются ;-) А вот у вас не совсем поддерживается, сообщения не уходят, например. Куды пуллреквест-то слать? У вас на раяне как регистрация была выключена, так и есть.

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

А куда апплаиться? Я не то чтобы хорошо знаю Go, но хотя бы программист ;-) А то у вас там реально дичь в коде творится — мало того, что строки километровые, так ещё и ломается из-за отсутствия ненужных параметров в конфиге, причём в самых неожиданных местах.

anonymous
()

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

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

Каким макаром? Где ты учётку, через которую срать, без телефона возьмёшь? Это тебе не BugMeNot.

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

Который?

$ for i in `seq 112 117`; do host "51.38.144.$i"; done
112.144.38.51.in-addr.arpa domain name pointer mail.narayana.im.
113.144.38.51.in-addr.arpa domain name pointer xmpp.narayana.im.
114.144.38.51.in-addr.arpa domain name pointer dev.narayana.im.
115.144.38.51.in-addr.arpa domain name pointer rdp.narayana.im.
116.144.38.51.in-addr.arpa domain name pointer btc.narayana.im.
117.144.38.51.in-addr.arpa domain name pointer xzc.narayana.im.

На xmpp.narayana.im, как ни странно, не пускает; на narayana.im вродь сервер работает, но JID молчит.

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