- u_async.c: process immediate_queue BEFORE epoll_wait in uasync_poll - stcp_link.c: defensive NULL etcp_conn/etcp_link in stcp_link_close - utun_instance.c: move stcp_server_list_destroy_all to Phase J (before ETCP), add deferred drain in both Phase J and L - stcp.h/c: STCP_HS_ENC_CLIENT 6→38, STCP_HS_ENC_SERVER 7→39, exchange ed25519_pubkey in both handshake directions - etcp_connections.c: copy peer_ed25519 from STCP to ETCP_CONN in etcp_link_enter_ready_tcp; guard link->etcp in tcp_link_close_cb - chat_sync.c: fix lk->conn NULL dereference for TCP links - test_stcp.c: update stcp_server_create/stcp_client_connect callsites - tools/chat_tcp_test: change transport udp→tcp
41 lines
1.5 KiB
Plaintext
41 lines
1.5 KiB
Plaintext
Структура БД:
|
|
|
|
1. table nodes - список всех известных узлов (или пользователей)
|
|
node_id
|
|
node_pubkey
|
|
last_seen
|
|
|
|
1A. ip_addr
|
|
node_id
|
|
ip_addr
|
|
port
|
|
|
|
|
|
2. table groups - список всех известных групп
|
|
group_id
|
|
group_pubkey - privkey известен суперадминам группы. соответственно админские настройки могут менять владельцы privkey.
|
|
|
|
|
|
3. table group_members - список пользователей групп
|
|
node_id
|
|
group_id
|
|
parent_node_id
|
|
parent_node_sign - приглашая узел, parent node должен сделать подпись для нового мембера. таким образом все мемберы выстраиваются в дерево (кто кого пригласил)
|
|
|
|
|
|
4. table group_actions - настройки групп и действия админов. могут менять все кому известен админский ключ.
|
|
group_id
|
|
action_name - например забанить node_id и всех вниз по дереву
|
|
action_value
|
|
node_id - опциональное поле
|
|
node_sign - подпись ключом ноды
|
|
sign - подпись ключом админа группы (всех полей выше включая node_id/sign)
|
|
|
|
5. table messages - собственно сообщения
|
|
group_id
|
|
node_id
|
|
node_sign
|
|
content_type
|
|
content
|
|
timestamp
|