LINUX.ORG.RU

Вышел первый релиз Pica Pica Messenger

 , ,


7

5

Тихо и незаметно, после четырех лет разработки, вышел первый релиз Pica Pica Messenger — программного обеспечения для организации децентрализованной распределенной защищенной системы обмена мгновенными сообщениями.

В состав Pica Pica входят две программы: pica-node — сервер-узел (нода) распределенной сети и pica-client — графический клиент. pica-node написан на C, pica-client — C++ c применением фреймворка Qt.

Предполагается, что распределенная сеть нод pica-node будет поддерживаться на добровольных началах. Каждый желающий может установить на своем компьютере pica-node и обеспечивать передачу служебного трафика и сообщений между участниками сети (аналогично Tor, I2P, Freenet и пр.).

Исходный код

>>> Подробности



Проверено: Shaman007 ()
Последнее исправление: antonsv (всего исправлений: 3)

Ответ на: комментарий от hibou

Если думаешь развивать, пиши хорошую документацию по протоколу! Скорейшая встройка его в месенджеры - лучшая популяризация. Плагин для пиджина можно за пару дней сваять. Но нужна документация.

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

Насчет пиджина. Он под лицензией GPL и поэтому несовместим с OpenSSL, который используется клиентом. Хотя в принципе это не проблема, его просто не включат в официальный пакет пиджина, нужно будет распространять его отдельно. Еще можно добавить опциональную поддержку GnuTLS вместо OpenSSL

antonsv
() автор топика
Ответ на: оффлайн-сообщения от pinkpiton

а если собеседник оффнулся, куда пойдёт мессага для него?

в нынешней реализации: клиент будет периодически пытаться отправить сообщение. Если клиент закрыть, сообщение потеряется

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

Это тоже будет гоняться через ноды?

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

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

In file included from PICA_nodeaddrlist.c:5: PICA_nodeaddrlist.h:32: error: expected specifier-qualifier-list before 'time_t'

кажется, в PICA_nodeaddrlist.h не хватало строчки

#include <time.h>

но лучше добавить баг в багзиллу, с подробностями (дистрибутив, версия GCC)

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

что-то я в этом слакбилде не вижу, где устанавливается иконка picapica-icon-sit.png

Без неё конечно будет работать, но выглядеть будет не так как задумано :)

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

И при попытке обернуть твой инсталлер в ебилд он вылетит с красивым красненьким сообщением о нарушении сэндбокса. Гениально чо.

это я уже понял, эта фича теперь отключаема ))

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

я правильно понимаю распределенность и ащищенность как то, что террористы и педофилы будут переписываться, а все остальные страдать?

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

ну вот я о том же) спасибо, не нужно, я лучше в родных СОРМ-овых водах посижу )

nerfur ★★★
()

Я думаю, стоит выложить исходники на google code/github/bitbucket - было бы удобнее.
Для автосборки пакетов в том числе.
Да и потом, по-моему стоило распределенный транспорт к jabber прикрутить. Зачем реализовывать все фичи im-протокола заново?

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

Вышла альтернатива мессенджеру, владельцы которого прослушивают разговоры и просматривают переписку. Можно ли этому не радоваться?

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

Нахир пакеты, без пакетов можно безруких отсеять! А вот github репа нужна, это да.

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

Майкрософт давно перевела скайп на 100 000 серверов под Линуксом, т.к. им нужно читать и слышать, чочо люди творят.

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

Я про то, что хорошие идеи из Skype (прогон трафика через другие ноды, а не центральные сервера) нужно заимствовать и это правильно.

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

ну опционально дефолтно можно нужно и напрямую реализовать

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

я правильно понимаю распределенность и ащищенность как то, что террористы и педофилы будут переписываться, а все остальные страдать?

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

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

главное, чтобы это понимали охотники на ведьм, а то «побанят по ип» нахрен

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

да, и в ноду добавить возможность запрета на переброску видео/аудио/файлов/ типа --transmit_text_only

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

Чувак, привыкай, что Qt != графический тулкит

Только не говном он от этого быть не перестал.

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

Это Доку Умаров, разрешите добавить вас в список контактов.

fero ★★★★
()

Наверное тормозное г*но будет. Но стоит попробовать. Такие вещи повышают значимость сообщений вроде «Как сам?» в собственных же глазах.

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

Как будет github репа поставлю себе ноду.

а если на sourceforge будет, или вообще self-hosted репа, тогда что? :)

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

Я хоть сейчас его установлю(для поддержки других), но с кем там общаться?

можно свой номер на ЛОРе выложить :) как я например. Два человека со мной уже вышли на контакт

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

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

gcc -g -O2 -o pica-node pica_node-PICA_node.o pica_node-PICA_msgproc.o pica_node-PICA_nodeaddrlist.o pica_node-PICA_nodejoinskynet.o pica_node-PICA_nodeconfig.o pica_node-PICA_log.o pica_node-dictionary.o pica_node-iniparser.o pica_node-PICA_node.o: In function `print_version': /var/www/pica-pica/data/pica-pica-0.5.1/openssl/include/PICA_node.c:2338: undefined reference to `SSLeay_version' pica_node-PICA_node.o: In function `client_list_addnew': /var/www/pica-pica/data/pica-pica-0.5.1/openssl/include/PICA_node.c:1389: undefined reference to `SSL_new' /var/www/pica-pica/data/pica-pica-0.5.1/openssl/include/PICA_node.c:1413: undefined reference to `SSL_set_fd' pica_node-PICA_node.o: In function `client_list_delete': ..... /var/www/pica-pica/data/pica-pica-0.5.1/openssl/include/PICA_nodeaddrlist.c:61: undefined reference to `sqlite3_close' pica_node-PICA_nodejoinskynet.o: In function `send_nodelistreq': /var/www/pica-pica/data/pica-pica-0.5.1/openssl/include/PICA_nodejoinskynet.c:146: undefined reference to `RAND_bytes' collect2: ld returned 1 exit status make: *** [pica-node] Error 1

anonymous
()

А каким образом реализована «регистрация» аккаунтов? Этим занимается главная нода?

Хочется чуть больше технических подробностей

По хорошему, можно было бы привязать аккаунты к PGP-сети. Это решит проблему идентификаторов и добавит децентрализации

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

./configure --disable-client

собирается только node, зависимости qt не требуются

А зачем при сборке(!) требовать sqlite3, а не libsqlite3-devel?!

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

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

При регистрации pica-client генерирует пару RSA ключей, потом генерирует Certificate Signing Request и в нем в поле CommonName записывает имя, указанное в поле Name. После этого коннектится к registrar.picapica.im:2288 и отправляет CSR. В ответ получает подписанный сертификат, с полем CommonName в формате = id#имя

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

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

Можно конечно реализовать поиск и идентификацию абонентов по 2048-4096-8192 битным ключам вместо 32 как сейчас, но это будет тормозить и жрать память и трафик :)

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

А зачем при сборке(!) требовать sqlite3, а не libsqlite3-devel?!

при сборке создается база sqlite из скрипта nodelist_db_create.sql, которая при make install копируется в нужное место

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

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

не найдены зависимости. Странно, как тогда configure завершился?

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

Каждому пользователю при регистрации выдается X.509v3 сертификат, который содержит в себе уникальный номер пользователя.

Сертификаты обычно имеют ограничения по веремени. На сколько лет выдается данный сертификат? Может ли он быть применим после истечения срока годности?

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

ой у меня опять двух символьный gmail.com угнали. Этот фетиш будет всегда и везде, за исключением tor там используются хеши 3eouoeu3244euoeu.onion

При наличии сертификата X.509v3 - вряд ли.

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

Сертификаты обычно имеют ограничения по веремени. На сколько лет выдается данный сертификат? Может ли он быть применим после истечения срока годности?

выдается приблизительно на 10 лет. Кстати тут как раз проявляется проблема 2038 года - если сейчас подписать сертификат сроком больше 16 лет, то он автоматически оказывается просроченным со сроком истечения где-то в 1970х годах :)

Что делать потом, через 10 лет, надо будет подумать :)

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

Можно конечно реализовать поиск и идентификацию абонентов по 2048-4096-8192 битным ключам вместо 32 как сейчас

То есть, уже сейчас система ограничена 4 миллиадрами абонентов?

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

Да и население Земли уже поболя чем 4 миллиарда.

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