diff options
| author | Anton <anton@picapica> | 2017-12-01 21:55:53 +0400 |
|---|---|---|
| committer | Anton <anton@picapica> | 2017-12-01 21:55:53 +0400 |
| commit | ac041927bc0c82e33acaa9e15fd46ecca0b77172 (patch) | |
| tree | 742f1bf43917e79dae43c78684a2a3d055214e76 /doc | |
| parent | 32e742ed040c5a70edb4cbfb947581f1e192d5a6 (diff) | |
| parent | 9c0a5bf2bbd94539427ece7eb1cb8ea82c6c3dec (diff) | |
| download | pica-pica-ac041927bc0c82e33acaa9e15fd46ecca0b77172.tar.gz pica-pica-ac041927bc0c82e33acaa9e15fd46ecca0b77172.zip | |
Merge branch 'direct_c2c_connections'
Diffstat (limited to 'doc')
| -rwxr-xr-x | doc/TASKS.txt | 16 | ||||
| -rwxr-xr-x | doc/bugtraq.txt | 21 | ||||
| -rwxr-xr-x | doc/concepts.txt | 1 | ||||
| -rwxr-xr-x | doc/glossary.txt | 1 | ||||
| -rwxr-xr-x | doc/proto.txt | 38 |
5 files changed, 39 insertions, 38 deletions
diff --git a/doc/TASKS.txt b/doc/TASKS.txt index 89908c9..f92ca7e 100755 --- a/doc/TASKS.txt +++ b/doc/TASKS.txt @@ -37,9 +37,9 @@ - Балансировка нагрузки между узлами (Узлы обмениваются количеством подключенных юзеров, потом самые нагруженные узлы посылают клиентам команду "сменить узел" с отсортированным списком N наименее нагруженных узлов) -- автоматическая регистрация аккаунтов ++ автоматическая регистрация аккаунтов -- сайт, багтрекер, VCS, форум, почтовая рассылка ++ сайт, багтрекер, VCS, форум, почтовая рассылка + сохранение открытых ключей контактов и их сопоставление при каждом сеансе @@ -49,9 +49,9 @@ + autotools -- хранение недоставленных сообщений на стороне клиента, в базе sqlite, пока абонент не появится в сети ++ хранение недоставленных сообщений на стороне клиента, в базе sqlite, пока абонент не появится в сети -- история сообщений, с опциональным шифрованием ++ история сообщений, с опциональным шифрованием + проверка сертификата клиента узлом (узел должен иметь копию корневого сертификата) @@ -61,18 +61,18 @@ - текст лицензий (OpenSSL, iniparser, pica pica, Qt) в окошке about и файлах LICENSE -- собрать и протестировать под Windows (32 и 64 бита) ++ собрать и протестировать под Windows (32 и 64 бита) - аудио-видео звонки (ffmpeg) -- передача файлов ++ передача файлов - возможность прямого P2P соединения между клиентами, клиент может выбирать предпочитаемый вариант (запретить P2P / использовать по возможности) -- периодическая смена CA ключей и уничтожение старого приватного ключа, публикация списков выданных сертификатов для каждого ключа (???) +(уже не нужно) периодическая смена CA ключей и уничтожение старого приватного ключа, публикация списков выданных сертификатов для каждого ключа (???) + конфигурация узла (конфиг файл, опции командной строки, дефолтные значения) -- пакеты для разных дистрибутивов (ebuild, deb, rpm) ++- пакеты для разных дистрибутивов (ebuild +, deb +, mac os x dmg -, windows +, freebsd -) diff --git a/doc/bugtraq.txt b/doc/bugtraq.txt deleted file mode 100755 index bf312f7..0000000 --- a/doc/bugtraq.txt +++ /dev/null @@ -1,21 +0,0 @@ -1. [V] Падение test_client при вызове SSL_free: - -puts("CACA_close_channel_chkp3");//debug - -if (chn->ssl) -SSL_free(chn->ssl);<<<< - -после -verify result:10 // просроченный корневой сертификат -//////////// -причина - повторный вызов SSL_free -(сначала в функции establish_data_connection, затем в CACA_close_channel) - -Баг исправлен путем помещения вызова CACA_close_channel в establish_data_connection в случае ошибки при создании канала. Также добавлена новая callback функция channel_failed, вызываемая в случае ошибки при создании канала - -========================================================== -2. Авторизация клиента узлом без сертификата - -Клиент возможно может установить TLS соединение с узлом используя ADH схему. Узел -может выпасть с ошибкой, если не удается получить сертификат клиента. Надо явно задавать -набор разрешенных схем шифрования в клиенте и сервере diff --git a/doc/concepts.txt b/doc/concepts.txt deleted file mode 100755 index 2383e28..0000000 --- a/doc/concepts.txt +++ /dev/null @@ -1 +0,0 @@ -[Ïîèñê ñîáåñåäíèêà.Íåêîòîðûå ñîîáðàæåíèÿ ïî îáëåã÷åíèþ ïîèñêà] diff --git a/doc/glossary.txt b/doc/glossary.txt deleted file mode 100755 index 8d1c8b6..0000000 --- a/doc/glossary.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/proto.txt b/doc/proto.txt index 0f05d6a..49cb4a0 100755 --- a/doc/proto.txt +++ b/doc/proto.txt @@ -47,7 +47,7 @@ UH - user hash - SHA224 хэш от сертификата пользоватеÐ 0x08 0x08 (UH вызывающего пользователя) +++[запрос списка узлов] - клиент -0x09 0x09 (2 случайных байта) +0x09 0x09 (2 псевдослучайных байта) +++[список узлов] - сервер 0x0A 0x0A -- см формат 0xA4 @@ -63,22 +63,46 @@ UH - user hash - SHA224 хэш от сертификата пользоватеÐ Протокол обмена сообщениями (между клиентами через сервер(ы) ) |КЛИЕНТ-КЛИЕНТ| ++++[начало c2c соединения] - клиент клиенту +0xCC 0xCC Ver_major Ver_minor - версия протокола клиента +варианты ответа - 0x01,0x02 + ++++[список прямых адресов клиента] +0x0B 0x0B -- см формат A4 +0xA0, 0xA1, 0xA1 - аналогично сообщениям n2n +Если клиент настроен для приёма входящих прямых соединений между клиентами (минуя ноду), он может послать список своих адресов. +Первыми в списке должны идти адреса локальной сети (если они есть) из подсетей 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, +чтобы клиенты, находящиеся в одной локальной сети могли соединиться напрямую. Далее следуют публичные адреса интернета. +Если клиент находится за NAT и пробрасывает открытый порт на свой локальный адрес, в адресе должен быть указан внешний порт. + Получив анонс, другой клиент может создать соединение с этим адресом и закрыть соединение через ноду + ++++[попытки прямого соединения провалились] +0x0C 0x0C (2 псевдослучайных байта) +отправляется инициатором, если он получил от вызываемого клиента список прямых адресов и все попытки подключения к полученным адресам оказались неуспешны. +После получения этого сообщения вызываемый клиент начинает попытки подключения к прямым адресам инициатора, если от инициатора был получен список прямых +адресов и прямые подключения разрешены настройками вызываемого + ++++[переключение на прямое соединение] +0x0D 0x0D (2 псевдослучайных байта) +отправляется после успешного TLS хэндшейка на прямом соединении каждой из сторон по соединению через ноду, после отправки этого сообщения все следующие сообщения +отправляются по прямому соединению, получатель сообщения соответственно ожидает следующие сообщения уже по прямому соединению. + +++[сообщение - текст в кодировке UTF8] 0x30 0x30 (длина сообщения в байтах- 2 байта в формате little-endian) сообщение в кодировке UTF8 +++[отчет о доставке предыдущего сообщения] -0x40 0x40 (2 случайных байта) +0x40 0x40 (2 псевдослучайных байта) +++ [запрос на отправку файла] 0x50 0x50 (длина сообщения - 2 байта, 9..263) (размер файла - 8 байт) имя файла в UTF-8, 1 - 255 байт +++ [подтверждение принятия файла] -0x51 0x51 (2 случайных байта) +0x51 0x51 (2 псевдослучайных байта) после получения этого сообщения отправитель начинает отправку файла +++ [отказ от приёма файла] -0x52 0x52 (2 случайных байта) +0x52 0x52 (2 псевдослучайных байта) +++ [фрагмент файла] 0x53 0x53 (длина фрагмента - 2 байта, 0 - 65532) фрагмент файла @@ -91,10 +115,10 @@ UH - user hash - SHA224 хэш от сертификата пользоватеÐ Пинг +++[пинг-запрос] - может быть отправлен любой стороной, как по управляющему соединению, так и по межклиентскому -0x68 0x68 (2 случайных байта) +0x68 0x68 (2 псевдослучайных байта) +++[пинг-ответ] -0x69 0x69 (2 случайных байта) +0x69 0x69 (2 псевдослучайных байта) @@ -128,7 +152,7 @@ UH - user hash - SHA224 хэш от сертификата пользоватеÐ Размер всего пакета не превышает 64кб +++[запрос списка узлов] @@@ -0x90 0x90 (2 случайных байта) +0x90 0x90 (2 псевдослучайных байта) +++[поиск клиента] - отправляется всем узлам. Узел-получатель отвечает на это сообщение, только если искомый UH найден среди локальных клиентов либо в кэше |
