Добавлено: - conn_mgr_connect_from_invite() — подключение к новому узлу по invite-данным (INIT → INVITE_INFO_REQ/RESP → проверка членства в группе → сохранение в БД) - topo_group_connect.c — авто-подключение при старте CHAT-группы: Phase 1: одновременный connect всех connected=1 пиров, таймаут, отмена незавершённых Phase 2: последовательный перебор публичных адресов до первого успеха - Счётчик active_conn_count с проверкой nodeinfo-путей (UP/DOWN) - restart() при phase=DONE и count==0 БД: - connected INTEGER NOT NULL DEFAULT 0 в peers_<ch> + ALTER TABLE для существующих - topo_node_sqlite_set_connected / get_connected_peers / get_public_peers Chatgui: - Включён topo_group (убран utun_instance_set_topo_group_enabled(0)) - Создание TOPO_GROUP_TYPE_CHAT при channel_ready и при старте - Invite connect через conn_mgr_connect_from_invite - Удалён chat_conn_mgr (из сборки) + весь старый auto-connect код
152 lines
4.4 KiB
CMake
152 lines
4.4 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
|
|
set(LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../lib)
|
|
set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
|
|
set(TRANSPORT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../transport)
|
|
|
|
# ============================================================================
|
|
# libuasync — low-level runtime library
|
|
# ============================================================================
|
|
|
|
set(UASYNC_SOURCES
|
|
${LIB_DIR}/ll_queue.c
|
|
${LIB_DIR}/u_async.c
|
|
${LIB_DIR}/debug_config.c
|
|
${LIB_DIR}/timeout_heap.c
|
|
${LIB_DIR}/memory_pool.c
|
|
${LIB_DIR}/sha256.c
|
|
${LIB_DIR}/socket_compat.c
|
|
${LIB_DIR}/platform_compat.c
|
|
${LIB_DIR}/getmyip.c
|
|
${LIB_DIR}/swm_min.c
|
|
${LIB_DIR}/mem.c
|
|
${LIB_DIR}/radix.c
|
|
${LIB_DIR}/serialize.c
|
|
${LIB_DIR}/json_flat.c
|
|
${LIB_DIR}/tcp_io.c
|
|
${LIB_DIR}/sqlite3.c
|
|
${LIB_DIR}/liblmdb/mdb.c
|
|
${LIB_DIR}/liblmdb/midl.c
|
|
)
|
|
|
|
add_library(uasync STATIC ${UASYNC_SOURCES})
|
|
|
|
target_include_directories(uasync PUBLIC
|
|
${LIB_DIR}
|
|
${SRC_DIR}
|
|
${LIB_DIR}/liblmdb
|
|
)
|
|
|
|
target_compile_definitions(uasync PRIVATE
|
|
_ISOC99_SOURCE
|
|
DEBUG_OUTPUT_STDERR
|
|
)
|
|
|
|
set_target_properties(uasync PROPERTIES
|
|
C_STANDARD 99
|
|
C_STANDARD_REQUIRED ON
|
|
)
|
|
|
|
# ============================================================================
|
|
# libutun — VPN core library (all src/ except utun.c)
|
|
# ============================================================================
|
|
|
|
# Common sources (all platforms)
|
|
set(UTUN_COMMON_SOURCES
|
|
${SRC_DIR}/utun_instance.c
|
|
${SRC_DIR}/config_parser.c
|
|
${SRC_DIR}/config_updater.c
|
|
${SRC_DIR}/routing_layer/route_lib.c
|
|
${SRC_DIR}/routing_layer/route6_lib.c
|
|
${SRC_DIR}/routing_layer/topo_group.c
|
|
${SRC_DIR}/routing_layer/route_ping.c
|
|
${SRC_DIR}/routing_layer/nat_detection.c
|
|
${SRC_DIR}/routing_layer/topo_node.c
|
|
${SRC_DIR}/routing_layer/topo_node_sqlite.c
|
|
${SRC_DIR}/routing_layer/route_connectivity.c
|
|
${SRC_DIR}/db_sync.c
|
|
${SRC_DIR}/routing_layer/conn_mgr.c
|
|
${SRC_DIR}/routing_layer/topo_recovery.c
|
|
${SRC_DIR}/routing_layer/topo_group_connect.c
|
|
${SRC_DIR}/routing_layer/routing.c
|
|
${SRC_DIR}/tun_if.c
|
|
${SRC_DIR}/tun_route.c
|
|
${SRC_DIR}/transport_layer/etcp.c
|
|
${SRC_DIR}/transport_layer/etcp_connections.c
|
|
${SRC_DIR}/transport_layer/etcp_bbr.c
|
|
${SRC_DIR}/transport_layer/etcp_loadbalancer.c
|
|
${SRC_DIR}/transport_layer/etcp_debug.c
|
|
${SRC_DIR}/transport_layer/etcp_dump.c
|
|
${SRC_DIR}/transport_layer/secure_channel.c
|
|
${SRC_DIR}/transport_layer/crc32.c
|
|
${SRC_DIR}/transport_layer/stcp_link.c
|
|
${SRC_DIR}/transport_layer/stcp.c
|
|
${SRC_DIR}/transport_layer/stcp_server.c
|
|
${SRC_DIR}/transport_layer/stcp_client.c
|
|
${SRC_DIR}/transport_layer/pkt_normalizer.c
|
|
${SRC_DIR}/transport_layer/packet_dump.c
|
|
${SRC_DIR}/transport_layer/etcp_api.c
|
|
${SRC_DIR}/transport_layer/etcp_connect.c
|
|
${SRC_DIR}/control_server.c
|
|
${SRC_DIR}/firewall.c
|
|
${SRC_DIR}/eim_nat.c
|
|
${SRC_DIR}/nat_transport.c
|
|
${SRC_DIR}/transport_layer/dummynet.c
|
|
${SRC_DIR}/ntp_time.c
|
|
${SRC_DIR}/ntp_node_time.c
|
|
${SRC_DIR}/routing_layer/etcp_router.c
|
|
${SRC_DIR}/proxy/tcp_proxy_client.c
|
|
${SRC_DIR}/proxy/tcp_proxy_server.c
|
|
${SRC_DIR}/proxy/udp_proxy.c
|
|
${SRC_DIR}/proxy/socks_proxy.c
|
|
${SRC_DIR}/proxy/icmp_proxy.c
|
|
${SRC_DIR}/lwip_tcp/lwip_pbuf.c
|
|
${SRC_DIR}/lwip_tcp/lwip_tcp.c
|
|
${SRC_DIR}/lwip_tcp/lwip_tcp_in.c
|
|
${SRC_DIR}/lwip_tcp/lwip_tcp_out.c
|
|
)
|
|
|
|
# Platform-specific TUN implementation
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
set(UTUN_TUN_SOURCES ${SRC_DIR}/tun_linux.c)
|
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
|
set(UTUN_TUN_SOURCES ${SRC_DIR}/tun_freebsd.c)
|
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
|
set(UTUN_TUN_SOURCES ${SRC_DIR}/tun_windows.c)
|
|
else()
|
|
set(UTUN_TUN_SOURCES ${SRC_DIR}/tun_linux.c)
|
|
endif()
|
|
|
|
add_library(utun STATIC ${UTUN_COMMON_SOURCES} ${UTUN_TUN_SOURCES})
|
|
|
|
target_include_directories(utun PUBLIC
|
|
${SRC_DIR}
|
|
${SRC_DIR}/transport_layer
|
|
${SRC_DIR}/routing_layer
|
|
${LIB_DIR}
|
|
${TRANSPORT_DIR}
|
|
${SRC_DIR}/uip
|
|
${CMAKE_SOURCE_DIR}/db
|
|
)
|
|
|
|
target_compile_definitions(utun PRIVATE
|
|
USE_OPENSSL
|
|
USE_SQLITE
|
|
)
|
|
|
|
set_target_properties(utun PROPERTIES
|
|
C_STANDARD 99
|
|
C_STANDARD_REQUIRED ON
|
|
)
|
|
|
|
target_link_libraries(utun PUBLIC
|
|
uasync
|
|
OpenSSL::Crypto
|
|
${CMAKE_THREAD_LIBS_INIT}
|
|
)
|
|
|
|
# Platform-specific link flags
|
|
if(WIN32)
|
|
target_link_libraries(utun PUBLIC ws2_32 iphlpapi advapi32 bcrypt dbghelp)
|
|
endif()
|