LINUX.ORG.RU
ФорумJob

А никто случайно не хочет запилить мультиплатформенный Jabber-клиент на Qt?

 , , ,


2

7

В качестве отправной точки идеально подходит Kaidan.

Что получить на выходе:

- Кроссплатформенный (Linux, macOS, Windows) Jabber-клиент на Qt
- Отвязка от библиотек KDE, только Qt
- Современный десктопный UI/UX без неуместного планшетолюбия (что-то похожее на Telegram Desktop)
- Текстовые чаты / групповые чаты
- Передача файлов (XEP-0363)
- Синхронизация истории (Message Archiving Management, XEP-0313 и Message Carbons, XEP-0280)
- Шифрование OMEMO (XEP-0384)
- Аудио/видеозвонки с E2E шифрованием (XEP-0320)*

В общем, примерно то, что умеет современный Dino версии 0.4.2.
Большая часть уже реализована в Kaidan, а за часть с A/V звонками — необязательная, и за неё будет дополнительное баунти.

Фулл- или парттайм, допустим 3000$/месяц. (не смейтесь сильно, за рынком не слежу)
По вашему желанию можно договор с компанией в одной стран из списка враждебных (см. профиль).

Если заинтересовало — пишите предположительные сроки, за которые это собираетесь осилить, ну и контакт какой-нибудь.


И, ещё раз попрошу, не обсыкайте сильно, HR из меня отвратительный, лучше пинайте по делу — и обещаю исправиться! (в пределах разумного)

★★★★☆
Ответ на: комментарий от hateyoufeel

Что именно всё?

я вроде конкретику чуть дальше принёс.

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

дай угадаю, жабу последний раз ты тыкал году в 2018?

Или как ты предлагаешь протокол развивать? Комитетом? Голосованиями?

https://pbs.twimg.com/media/EeAjPIWXYAAdj1v.png

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

Что именно всё?

я вроде конкретику чуть дальше принёс.

Где? Единственное, что ты принёс, это тот факт, что они продают консалтинг с внедрением в том числе государственным организациям. Которые в принципе и так могут матрицу использовать, потому что сервера и клиенты открыты.

Кстати, они не одни такие. Какой-нибудь Wire тоже этим зарабатывает.

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

дай угадаю, жабу последний раз ты тыкал году в 2018?

Месяца два назад. То, что за 20 лет, что я пользуюсь XMPP, в нём до сих пор нет даже нормальной передачи файлов, это просто смешно. OMEMO почему-то до сих пор умеют не все клиенты, и я часто видел ошибки расшифровки, а дефолтный метод передачи файлов – загрузить на публичный HTTP сервер с доступом без аутентификации. Это какой-то позор, ей богу.

Или как ты предлагаешь протокол развивать? Комитетом? Голосованиями?

https://pbs.twimg.com/media/EeAjPIWXYAAdj1v.png

Ну, XMPP вот так и развивают. Результат ты видишь: 20 лет позора и полумёртвый протокол, ради клиента для которого ты готов деньги платить, потому что к 2023 всё почему-то сдохло.

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

Месяца два назад. То, что за 20 лет, что я пользуюсь XMPP, в нём до сих пор нет даже нормальной передачи файлов, это просто смешно. OMEMO почему-то до сих пор умеют не все клиенты, и я часто видел ошибки расшифровки, а дефолтный метод передачи файлов – загрузить на публичный HTTP сервер с доступом без аутентификации. Это какой-то позор, ей богу.

OMEMO умеют между собой Dino, Conversations, Gajim, Psi+ и всякие консольные хипстерские poezio, в том числе для передачи файлов.
а что не так с заливкой на http сервер, если расшифровать сможет только получатель, я не пойму? в шматриксе разве как-то иначе передача файлов сделана?

несовместимую реализацию OMEMO нашёл как раз только в Kaidan, о котором упоминал в ОП.

потому что к 2023 всё почему-то сдохло.

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


на мобильники — Conversations.

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

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

OMEMO умеют между собой Dino, Conversations, Gajim, Psi+

Уметь-то умеют. Проблема в том, что ошибок с ключами вагоны и это стало даже оМЕМом (у меня зажим, есличо).

а что не так с заливкой на http сервер, если расшифровать сможет только получатель

Там нет шифрования, чувак. По дефолту XMPP загружает файлы на публичный HTTP-сервер в открытом виде и скачать их может любой, у кого есть ссылка. Если случайно OMEMO выключен, то получается вот такое, и надо быть осторожным. А в групповых чатах он обычно как раз выключен.

в шматриксе разве как-то иначе передача файлов сделана?

Нет. В шматриксе передача файлов in-band сделана.

на мобильники — Conversations.

У меня с подружкой и у половины наших друзей iOS. Нутыпонел. Есть какой-то Monal, но я его потыкал пару раз и решил, что монал я такое.

Я понимаю, что ты очень любишь XMPP и за что-то не любишь Matrix, но весь мир ушёл вперёд. Если лет 15 назад XMPP был крутым и новым, то сейчас момент уже упущен.

И это мы ещё до серверов не дошли. Чтобы поднять свой Dendrite, у меня ушло примерно 10 минут (в основном на перепих с nginx). А вот как поднять сервер XMPP, да чтобы видео-звонки работали, я боюсь даже представить, потому что от ejabberd у меня до сих пор ПТСР с ночными кошмарами.

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

У меня с подружкой
iOS.

что-то не сходится.

Там нет шифрования, чувак. По дефолту XMPP загружает файлы на публичный HTTP-сервер

по дефолту XMPP загружает файлы на том сервере, где находится учётка, не? с чего бы он вообще был публичным?
ну и да, это фоллбэк, модные клиенты уже давно умеют in-band передачу.

И это мы ещё до серверов не дошли. Чтобы поднять свой Dendrite, у меня ушло примерно 10 минут (в основном на перепих с nginx). А вот как поднять сервер XMPP, да чтобы видео-звонки работали, я боюсь даже представить, потому что от ejabberd у меня до сих пор ПТСР с ночными кошмарами.

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

а кошмары от ejabberd плюсану, после перехода на Prosody волосы на жопе стали мягкими и шелковистыми.

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

У меня с подружкой

iOS.

что-то не сходится.

Так получилось, что Android – полное говно, а Blackberry сдохли. Сам знаешь.

Там нет шифрования, чувак. По дефолту XMPP загружает файлы на публичный HTTP-сервер

по дефолту XMPP загружает файлы на том сервере, где находится учётка, не? с чего бы он вообще был публичным?

Доступ публичный. Если есть ссылка, кто угодно может скачать файл. Что тебе неясно?

ну и да, это фоллбэк, модные клиенты уже давно умеют in-band передачу.

Круто, только почему-то в зажиме два месяца назад это не работало.

И это мы ещё до серверов не дошли. Чтобы поднять свой Dendrite, у меня ушло примерно 10 минут (в основном на перепих с nginx). А вот как поднять сервер XMPP, да чтобы видео-звонки работали, я боюсь даже представить, потому что от ejabberd у меня до сих пор ПТСР с ночными кошмарами.

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

У кого у нас? Клиенту нужен STUN, чтобы через NAT ходить. Ждём IPv6, чо. У XMPP кстати так же, только с ещё парой свистоплясок.

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

Чтобы поднять свой Dendrite

а ещё вот красивое:https://github.com/libremonde-org/paper-research-privacy-matrix.org

Это проблемы matrix.org. Я им не пользуюсь.

Но если ты почитаешь ссылки, которые ты приводишь, там буквально написано: ололо сервер может видеть, что клиент к нему подключается и с кем-то общается. Караул!

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

Это проблемы matrix.org. Я им не пользуюсь.


Data sent on a potential regular basis based on a common web/desktop+smartphone usage even with a self-hosted client and Homeserver:

The Matrix ID of users, usually including their username.
Email addresses, phone numbers of the user and their contacts.
Associations of Email, phone numbers with Matrix IDs.
Usage patterns of the user.
IP address of the user, which can give more or less precise geographical location information.
The user's devices and system information.
The other servers that users talks to.
Room IDs, potentially identifying the Direct chat ones and the other user/server.



ага.

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

ага.

Там в настройках каждого клиента identity сервер есть. Чувак нашёл эту фишку и раздул из мухи слона. Всё просто: не используй vector.im в качестве identity сервера, а лучше вообще не используй identity сервер. И всё.

В любом случае, я повторюсь: XMPP сдох. Это печально, но это так.

P.S. блин, это статья из 2019 года. Оно там ещё Riot зовётся. Чувак, ты совсем позоришься уже.

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

… По дефолту XMPP загружает файлы на публичный HTTP-сервер в открытом виде и скачать их может любой, у кого есть ссылка. …

в шматриксе разве как-то иначе передача файлов сделана?

Нет. В шматриксе передача файлов in-band сделана.

У меня в E2EE-чате в элементе (по-умолчанию) прилетают только маленькие event’ы, в которых содержится необходимая инфа по файлу, включая MXC-ID:

json: content.file.url = mxc://matrix.org/123456789012345678901234

которые можно использовать, чтобы загрузить файл просто wget’ом:

https://matrix.org/_matrix/media/r0/download/matrix.org/MXC-ID
https://matrix-client.matrix.org/_matrix/media/r0/download/matrix.org/MXC-ID

(Там же в event’е есть и key, и iv, так что можно взять AES256-CTR и вручную потом самому расшифровать, но это к данном вопросу не относится).

Что касается официального матрикс-сервера, то сам файл доступен к загрузке кому угодно, у кого есть ссылка, т.е. MXC-ID. Так же как и с XMPP HTTP Upload. Хуже того на джаббер-серверах через неделю-другую-третью файл будет удалён (тем более после появления GDPR, а ещё нет лишних файлов - нет проблем), а на официальном матрикс-сервере они остаются на года (только что проверено). Учитывая как настроено E2EE по-умолчанию, это как раз имеет смысл (в отличие от OMEMO, где сообщение с ссылкой на файл расшифровывается единожды, и ключ выкидывается, файл загружается, и дальше это проблема клиента его не удалить).

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

по дефолту XMPP загружает файлы на том сервере, где находится учётка, не? с чего бы он вообще был публичным?

ну и да, это фоллбэк, модные клиенты уже давно умеют in-band передачу.

Как это фоллбэк? XMPP же текстовый XML, поэтому in-band приводит к распуханию брутто-размера чуть ли не на треть из-за base64-кодирования. Поэтому сделали jingle P2P - так что можно обмениваться файлами друг с другом напрямую. Но с переходом на мобилки появилась проблема одновременного нахождения в сети обоих клиентов и надёжной связи. Поэтому перешли на HTTP Upload. В удобное время отгрузил, в удобное время принял (да ещё и с возможностью дозагрузки).

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

Что касается официального матрикс-сервера, то сам файл доступен к загрузке кому угодно, у кого есть ссылка, т.е. MXC-ID. Так же как и с XMPP HTTP Upload. Хуже того на джаббер-серверах через неделю-другую-третью файл будет удалён (тем более после появления GDPR, а ещё нет лишних файлов - нет проблем), а на официальном матрикс-сервере они остаются на года (только что проверено).

Они удаляются потом. Я сейчас проверил свой сервер, у меня нет файлов старше двух недель в media_store.

То, что matrix.org делает говно, это ожидаемо, поэтому не надо пользоваться этим сервером. S2S не просто так сделан, в конце концов. Самый лучший вариант: скинуться по паре баксов в месяц и поднять с посонами свой сервер. Dendrite на 15 человек без проблем живёт на VPS за 10 евро в месяц, на котором кроме него ещё всякого крутится.

Ну и да, т.к. матрица работает по HTTP, то это в принципе in-band :)

P.S. попробовал скачать файл через wget со своего сервера как ты описал. Меня в член послало.

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

Они удаляются потом. Я сейчас проверил свой сервер, у меня нет файлов старше двух недель в media_store.

ну так это и в Prosody настраивается, наркоман?

prosody.cfg.lua:	http_upload_file_size_limit = 128*1024*1024;  -- 128 MiB
prosody.cfg.lua:	http_upload_expire_after = 60*60*24*365*420;  -- 420 Years


ну и да, на виртуалке за 10$ прекрасно себя чувствует
root@prosody1:~# free -m
              total        used        free      shared  buff/cache   available
Mem:           3946        1029         149         183        2768        2488
Swap:             0           0           0



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

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

я про XEP-0446, 0047, 0048.
хотя я сейчас ещё раз покурил, там в качестве бэкенда тот же HTTP File upload используется, так что я тоже наркоман.

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

Про Matrix уже писали в треде? Я недавно попробовал, мне зашло, поднял на своей машинке сервер, потихоньку с телеги перевожу домашних втуда. Хотя «шо то шо это», жабер уже не актуален, matrix ещё не актуален и вряд ли выйдет в широкие массы, имхо.

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

Они удаляются потом. Я сейчас проверил свой сервер, у меня нет файлов старше двух недель в media_store.

Тогда хорошо, что настройки по-умолчанию у dendrite консервативные.

Ну и да, т.к. матрица работает по HTTP, то это в принципе in-band :)

По json же, иначе джаббер тоже по http (есть даже converse.js, чтобы прямо из браузера заходить в MUC’и). Если бы файлики по 10..100…1000 МБ шли бы in-band, т.е. их нельзя было бы пропускать при получении сообщений (и вообще заранее узнать, что вот такой-то event здоровенный файл), это был бы ужас.

P.S. попробовал скачать файл через wget со своего сервера как ты описал. Меня в член послало.

Если свой сервер, то там надо не только домен, но и дальше после /download/ тоже заменить на имя своего сервера.

Вот тут пишут, что аутентификация не предусмотрена: https://spec.matrix.org/v1.6/client-server-api/#get_matrixmediav3downloadservernamemediaid

И версия с /r0/, наверное, подустарела уже, лучше заменить на актуальную /v3/.

GET /_matrix/media/v3/download/{serverName}/{mediaId}.

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

так что, пусть будут оба протокола, конкуренция ещё никому не мешала

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

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

жабер уже не актуален, matrix ещё не актуален и вряд ли выйдет в широкие массы, имхо.

Когда в очередной раз читаешь, что надо бы ввести контроль за чатами, ну вотсэп, телеграм, аймесседж, то даже радуешься, что «уже» и «ещё». Как с вирусами под линукс, который никак не выйдет выше одного процента на десктопах. Ну, до того как в браузерах не стали пускать слишком много скрипта. Да и с чатами это не более чем самоуспокоение, потому что формально любой чат тогда попадает.

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

Да и с чатами это не более чем самоуспокоение, потому что формально любой чат тогда попадает.

удачи вводить контроль за чатами в федерации с шифрованным TLS трафиком, причём актуально как для жабы, так и для матрикса.

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

Да, я так и делал. Выдаёт 404, хотя на диске файл есть. Скорее всего, клиент таки передает токен где-то, но мне лень смотреть.

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

ну так это и в Prosody настраивается, наркоман?

Я ещё раз повторюсь, в третий раз: в случае с HTTP Upload файл не зашифрован. Так что любой, кто узнает имя файла, может его слить и прочитать. В этом основная проблема, а не в том, что он где-то хранится. У тебя это вообще никаких эмоций не вызывает, что ли?

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

кстати, спасибо, не слышал о нем. Правда у меня так и не получается завести ни один клиент, кроме элемента на корпоративной учетке(( от элемента подташнивает мальца

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

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

(Безотносительно того, насколько говно механизм передачи файлов в Jabber.)

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

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

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

hateyoufeel ★★★★★
()

hateyoufeel

в случае с HTTP Upload файл не зашифрован.

в случае если ты не включил шифрование — он не зашифрован.
в случае, если ты включил шифрование — он зашифрован AES/GCM.
все современные клиенты (и даже дедовские, вроде Psi+) это умеют.

чо не так-то?
да и там выше подсказали, что нешифрованный файл из матрикса тоже можно слить.

вывод — перед тем, как отправить нюдсы — включи E2EE.

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

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

У тебя это вообще никаких эмоций не вызывает, что ли?

вообще говоря нет, при этом я параноик тот ещё.

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

У тебя это вообще никаких эмоций не вызывает, что ли?

алсо лол, удачи сбрутитьтакойURL.

Нахрена его брутить? Случайная копипаста и всё, поехали.

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

При использовании http_upload у меня так и было - лежало нешифрованным несмотря на включенный OMEMO.

Но есть замена: mod_http_file_share.

Я ненастоящий сварщик, но в отличие от каноничного http_upload вот та вторая штука хранит мою тестовую png картинку куском нечитаемого бинаря.

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

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

у нас на сервере сейчас используется http_upload, при включенном OMEMO файл шифруется.

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

все современные клиенты (и даже дедовские, вроде Psi+) это умеют.

В каком месте пси умеет aesgcm? Некоторое время умел, но потом - при переносе http upload из плагина в основное тело псины - выпилили.

Теперь получать умеет, отправлять - нет.

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

откуда ж я знаю, как собеседники с Psi+ мне отправляют зашифорванные файлы?

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

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

В незашифрованной комнате в Matrix файлы тоже не будут шифроваться. Примеры:

https://matrix-client.matrix.org/_matrix/media/r0/download/matrix.mit.edu/hzHSpzPzWxYidDIBedswoCrE https://matrix-client.matrix.org/_matrix/media/r0/download/matrix.org/KgZzimEjpkuQfmiNDlvgjRPz

Аналогично в XMPP MUC.

Если в личке или в многопользовательском чате включено OMEMO, то файл шифруется с помощью AES-256-GCM.

Подобрать URI практически невозможно, только если сервер не настроен криворуким ламером – например, если веб-сервер отдаёт файлы напрямую с диска, таким образом выключая защиту в виде (псевдо)рандомных последовательностей символов в URI, которые проверяет XMPP-сервер.

Защита от случайной копипасты это не аргумент. Точно так же можно случайно скопипастить ссылку на незашифрованный файл в Matrix.

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

В незашифрованной комнате в Matrix файлы тоже не будут шифроваться. Примеры:

В матрице шифрование по дефолту сейчас везде. В отличие от XMPP. Если бы в XMPP было E2EE из коробки повсюду, вопросов бы не было.

Если в личке или в многопользовательском чате включено OMEMO,

Вот именно что если. Это не дефолт.

Защита от случайной копипасты это не аргумент.

Окей, кто-то обосрался с настройкой nginx и тот показывает список файлов в директории. Это куда вероятнее, чем ты думаешь.

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

В матрице шифрование по дефолту сейчас везде. В отличие от XMPP. Если бы в XMPP было E2EE из коробки повсюду, вопросов бы не было.

В чатах с 100+ пользователями его не включают – интересно, почему? 🤔️

Вот именно что если. Это не дефолт.

А ты хочешь супер-пупер-секьюрити даже не пошевелив пальцем? Оно в два клика включается в Dino и Conversations. Но да, хотелось бы по дефолту, конечно.

Окей, кто-то обосрался с настройкой nginx и тот показывает список файлов в директории. Это куда вероятнее, чем ты думаешь.

Ага. Частое явление. Только XMPP тут при чём?

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

Да и если «везде», то откуда я эти ссылки взял?

xenith
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.