LINUX.ORG.RU

Потестируйте чатик на Кутях

 


1

2

Приветствую всех обитателей ЛОРа. Пришел к вам с просьбой протестировать самописный чат на C++ с использованием Qt. Это мой первый проект вообще и делается исключительно для того, чтобы набраться опыта. Все полный опенсорс,

Сервер: https://github.com/gadoofou87/neutron
Клиент: https://github.com/gadoofou87/neutron-qt

доступно для собственной сборки, но для онтопика приготовил AppImage (доступен тут - https://github.com/gadoofou87/neutron-qt/releases).

Больше всего хотелось бы услышать комментарии безопасников, потому что реализован собственный криптопротокол (статические ключи на ECDH, эфемерные на SIDH, ID сервера - хэш от публичного ключа, который проверяется при каждом рукопожатии с сервером, чтобы блокировать MITM). Из остального, сервер умеет параллелить клиентов по всем потокам, реализованы комнаты (в том числе запароленные), отправка сообщений, файлов (+ предпросмотр картинок), получение непрочитанных сообщений.

ID: FDF882BA452BAF7C1FCF348633F6003086029A09B4BC764B175ED1914A44F34E
Хост: ec2-18-222-196-33.us-east-2.compute.amazonaws.com
Порт: 10500

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



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

Клиент отправляет UUID последнего сообщения, которое он получил в комнате. Сервер выбирает все сообщения, которые были отправлены позднее, и отправляет их клиенту. Используется для получения непрочитанных сообщений, как можно понять. Или вопрос не в этом был?

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

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

hommoul68
() автор топика

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

Ты же понимаешь что свой крипто протокол - это для баловства. В серьезный проект нужно брать что-нибудь проверенное.

rumgot ★★★★★
()
  1. вообще нет комментариев в коде, например class File - зачем он ?
  2. в чем смысл таких записей «auto main(int argc, char *argv[]) -> int» ?
x905 ★★★★★
()
Ответ на: комментарий от x905
  1. Просто как вспомогательный. Как минимум в нем добавлены дополнительные проверки и свой деструктор, в клиентской части он расширен. Отстутствие комментариев исправлю
  2. https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-trailing-return-type.html
hommoul68
() автор топика
Ответ на: комментарий от rumgot

Конечно понимаю, но, опять же, весь проект баловство и для опыта. Кроме того, хотелось включить постквантовый алгоритм генерации ключей, в SSL такого сейчас пока нет (только с патчами)

hommoul68
() автор топика

не конпеляется чятик

WARNING: Failure to find: QDarkStyleSheet/qdarkstyle/style.qrc
/usr/lib64/qt5/bin/rcc: File does not exist 'QDarkStyleSheet/qdarkstyle/style.qrc'
Harald ★★★★★
()
Ответ на: комментарий от Harald

Да ладно, она же опенсорсная и с MIT лицензией :) Забавно скорее то, что под виндой она нормально не собирается. Возможно, конечно, я криворукий, но скомпилить я ее смог только через MinGW, дополнительно еще заменив функцию рандома (стандартная уводит в бесконечный цикл). Визуал студия даже на портативной имплементации бросает Illegal instruction

hommoul68
() автор топика

Начинание похвальное. Но хочу понять: оно чем-то лучше чем связка JABBER-сервера и любого XMMP-клиента? Только шифрованием?

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

Бинарный формат представления данных вместо XML, постквантовое шифрование, но на этом пожалуй все, да Личных сообщений нет, в одно время можно находиться только в одной комнате, E2E отсутствует (OMEMO в JABBER-е), клиент под мобилки отсутствует. Конечно я планирую его еще развивать, но пока так

hommoul68
() автор топика
Ответ на: комментарий от hommoul68
Makefile:1731: recipe for target 'client.o' failed
In file included from ../neutron-qt-src/core/client.h:4:0,
                 from ../neutron-qt-src/core/client.cpp:1:
../neutron-qt-src/core/utils.h:4:31: fatal error: cryptopp/cryptlib.h: No such file or directory
 #include <cryptopp/cryptlib.h>
                               ^
compilation terminated.
make: *** [client.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from ../neutron-qt-src/core/packet.h:4:0,
                 from ../neutron-qt-src/core/server.h:5,
                 from ../neutron-qt-src/core/server.cpp:1:
../neutron-qt-src/core/utils.h:4:31: fatal error: cryptopp/cryptlib.h: No such file or directory
 #include <cryptopp/cryptlib.h>
                               ^
compilation terminated.
Makefile:1890: recipe for target 'server.o' failed
make: *** [server.o] Error 1
In file included from ../neutron-qt-src/core/packet.h:4:0,
                 from ../neutron-qt-src/core/server.h:5,
                 from ../neutron-qt-src/ui/mainwindow.h:5,
                 from ../neutron-qt-src/ui/connectdialog.cpp:3:
../neutron-qt-src/core/utils.h:4:31: fatal error: cryptopp/cryptlib.h: No such file or directory
 #include <cryptopp/cryptlib.h>
                               ^
compilation terminated.
Makefile:2050: recipe for target 'connectdialog.o' failed
make: *** [connectdialog.o] Error 1
11:50:41: Процесс «/usr/bin/make» завершился с кодом 2.
Ошибка при сборке/разворачивании проекта neutron-qt (комплект: Desktop Qt 5.13.1 GCC 64bit)
Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Библиотека Crypto++ установлена в системе? Обычно она в имеется в репах популярных дистров, так что даже компилировать не придется

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

Поставил libcrypto++ и libmsgpack с dev-пакетами. Теперь ошибки такие:

../neutron-qt-src/core/client.cpp:12:31: fatal error: cryptopp/xed25519.h: No such file or directory
 #include <cryptopp/xed25519.h>
                               ^
compilation terminated.
Makefile:1731: recipe for target 'client.o' failed
make: *** [client.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from ../neutron-qt-src/ui/mainwindow.h:5:0,
                 from ../neutron-qt-src/main.cpp:2:
../neutron-qt-src/core/server.h:13:33: fatal error: cryptopp/chachapoly.h: No such file or directory
 #include <cryptopp/chachapoly.h>
                                 ^
compilation terminated.
Makefile:2218: recipe for target 'main.o' failed
Makefile:1890: recipe for target 'server.o' failed
In file included from ../neutron-qt-src/core/server.cpp:1:0:
../neutron-qt-src/core/server.h:13:33: fatal error: cryptopp/chachapoly.h: No such file or directory
 #include <cryptopp/chachapoly.h>
                                 ^
compilation terminated.
make: *** [main.o] Error 1
make: *** [server.o] Error 1
In file included from ../neutron-qt-src/ui/mainwindow.h:5:0,
                 from ../neutron-qt-src/ui/connectdialog.cpp:3:
../neutron-qt-src/core/server.h:13:33: fatal error: cryptopp/chachapoly.h: No such file or directory
 #include <cryptopp/chachapoly.h>
                                 ^
compilation terminated.
Makefile:2050: recipe for target 'connectdialog.o' failed
make: *** [connectdialog.o] Error 1
12:04:16: Процесс «/usr/bin/make» завершился с кодом 2.
Ошибка при сборке/разворачивании проекта neutron-qt (комплект: Desktop Qt 5.13.1 GCC 64bit)

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

Классический способ установки трояна под линукс..)

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

Как я понял, в репах старая версия библиотеки, а она не реализует нужные методы. Можно клонировать и скомпилировать ее самому, указав в qmake пути до нее, конечно, но если нет желания тратить время, в релизах (https://github.com/gadoofou87/neutron-qt/releases) лежит готовый AppImage

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

Как то ты не по-человечески к пользователям относишься. Я типичный тупой пользователь, и не понимаю тебя.

Ты вот написал:

доступно для собственной сборки, но для онтопика приготовил AppImage.

Только ссылки на этот Appimage не предоставил. Мол догадайтесь сами, где его искать, отгадайте еще одну загадку. Ни в новости этой инфы нет, ни в README.md, нигде. Я думал, может сайт у тебя какой-то есть, поковырял поисковик, тоже ничего не нашел.

Спустя сутки я узнал, где брать Appimage.

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

Сильно извиняюсь, просто по собственному опыту всегда на Гитхабе ищу бинарники во вкладке release. Добавлю в шапку

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

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

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

Кстати, а на что нужно нажать, чтобы добавить бинарь к релизу? Я в своих репозитариях такой кнопки не вижу.

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

У релиза нажать Edit

Реально, у тебя какой-то другой GitHub. Там нет кнопки «Edit». Есть кнопка «Edit Tag». И вот оказывается, чтобы добавить файлы, надо выбрать редактирование тега.

http://i.piccy.info/i9/286694355542c2b86bb20c614dcec5ce/1579722495/25093/1358...

Там вообще все замудрено. Когда смотришь список релизов, переключатель Release/Tags стоит на Release. Выбираешь релиз, и на открывшейся странице этот переключатель сам собой переключается на Tags. Добиться такого скриншота как у тебя я вообще не смог. Если находясь на странице выбранного релиза переткнуть этот переключатель на Releases, то он включится, но при этом произойдет переход снова к списку релизов.

Лучшие специалисты по юзабилити тщательно старались, чтобы никто не понял как все это работает.

Завтра попробую твой чатик через AppImage.

Xintrea ★★★★★
()
Последнее исправление: Xintrea (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.