summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorAnton <anton@picapica>2017-12-01 21:55:53 +0400
committerAnton <anton@picapica>2017-12-01 21:55:53 +0400
commitac041927bc0c82e33acaa9e15fd46ecca0b77172 (patch)
tree742f1bf43917e79dae43c78684a2a3d055214e76 /doc
parent32e742ed040c5a70edb4cbfb947581f1e192d5a6 (diff)
parent9c0a5bf2bbd94539427ece7eb1cb8ea82c6c3dec (diff)
downloadpica-pica-ac041927bc0c82e33acaa9e15fd46ecca0b77172.tar.gz
pica-pica-ac041927bc0c82e33acaa9e15fd46ecca0b77172.zip
Merge branch 'direct_c2c_connections'
Diffstat (limited to 'doc')
-rwxr-xr-xdoc/TASKS.txt16
-rwxr-xr-xdoc/bugtraq.txt21
-rwxr-xr-xdoc/concepts.txt1
-rwxr-xr-xdoc/glossary.txt1
-rwxr-xr-xdoc/proto.txt38
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 найден среди локальных клиентов либо в кэше