From 0c865d11c0c9194b4a11d88573430927be23e020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=98=95?= Date: Wed, 23 Aug 2023 10:16:21 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=9B=B4=E6=96=B0=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E3=80=81=E8=BF=90=E8=A1=8C=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 15 ++-- NetTunnelSDK/CMakeLists.txt | 31 ++++--- NetTunnelSDK/include/ProtocolBase.h | 2 +- NetTunnelSDK/include/common.h | 2 +- NetTunnelSDK/include/pch.h | 2 + NetTunnelSDK/network/ProxyService.cpp | 103 +++++++--------------- NetTunnelSDK/protocol/protocol.cpp | 2 + NetTunnelServerApp/CMakeLists.txt | 25 ++++-- NetTunnelServerApp/NetTunnelServerApp.cpp | 44 ++++----- NetTunnelSvr/CMakeLists.txt | 11 ++- vcpkg.json | 2 +- 11 files changed, 121 insertions(+), 118 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e702b79..79f4e1d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,14 @@ -cmake_minimum_required(VERSION 3.22) -project(scc) +CMAKE_MINIMUM_REQUIRED(VERSION 3.22) +PROJECT(scc) -set(CMAKE_CXX_STANDARD 23) -add_definitions(-D_UNICODE) +SET(CMAKE_CXX_STANDARD 17) +SET(WORKSPACE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}) +FIND_PACKAGE(spdlog CONFIG REQUIRED) +FIND_PACKAGE(magic_enum CONFIG REQUIRED) +FIND_PACKAGE(OpenSSL REQUIRED) +FIND_PACKAGE(RapidJSON CONFIG REQUIRED) + +ADD_SUBDIRECTORY(NetTunnelSDK) ADD_SUBDIRECTORY(NetTunnelSvr) ADD_SUBDIRECTORY(NetTunnelServerApp) -ADD_SUBDIRECTORY(NetTunnelSDK) diff --git a/NetTunnelSDK/CMakeLists.txt b/NetTunnelSDK/CMakeLists.txt index a12937f..6ddfad3 100644 --- a/NetTunnelSDK/CMakeLists.txt +++ b/NetTunnelSDK/CMakeLists.txt @@ -1,9 +1,9 @@ -cmake_minimum_required(VERSION 3.22) -project(NetTunnelSDK) +CMAKE_MINIMUM_REQUIRED(VERSION 3.22) +PROJECT(NetTunnelSDK) -set(CMAKE_CXX_STANDARD 23) +SET(CMAKE_CXX_STANDARD 17) -find_path(CPPCODEC_INCLUDE_DIRS "cppcodec/base32_crockford.hpp") +FIND_PATH(CPPCODEC_INCLUDE_DIRS "cppcodec/base32_crockford.hpp") INCLUDE_DIRECTORIES(include ./include/json ./include/httplib ../depends/WireGuardNT/include ${CPPCODEC_INCLUDE_DIRS}) FILE(GLOB CPP_HEADS ./include/*.h ./include/json/AIGCJson.hpp ./include/httplib/httplib.h ../depends/WireGuardNT/include/*.h ${CPPCODEC_INCLUDE_DIRS}/*.hpp) @@ -15,22 +15,20 @@ AUX_SOURCE_DIRECTORY(network CPP_SRC) AUX_SOURCE_DIRECTORY(protocol CPP_SRC) AUX_SOURCE_DIRECTORY(user CPP_SRC) -find_package(spdlog CONFIG REQUIRED) -find_package(magic_enum CONFIG REQUIRED) -find_package(OpenSSL REQUIRED) -find_package(RapidJSON CONFIG REQUIRED) - ADD_LIBRARY(NetTunnelSDK SHARED dllmain.cpp ${CPP_SRC} ${CPP_HEADS}) -target_link_libraries(NetTunnelSDK PRIVATE spdlog::spdlog) -target_link_libraries(NetTunnelSDK PRIVATE magic_enum::magic_enum) -target_link_libraries(NetTunnelSDK PRIVATE OpenSSL::SSL OpenSSL::Crypto) -target_link_libraries(NetTunnelSDK PRIVATE rapidjson) +TARGET_LINK_LIBRARIES(NetTunnelSDK PRIVATE spdlog::spdlog) +TARGET_LINK_LIBRARIES(NetTunnelSDK PRIVATE magic_enum::magic_enum) +TARGET_LINK_LIBRARIES(NetTunnelSDK PRIVATE OpenSSL::SSL OpenSSL::Crypto) +TARGET_LINK_LIBRARIES(NetTunnelSDK PRIVATE rapidjson) + +FILE(GLOB SDK_DLLS ${CMAKE_CURRENT_BINARY_DIR}/*.dll) ADD_CUSTOM_COMMAND(TARGET NetTunnelSDK PRE_BUILD WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMENT "!!!!!! Notice: Clearup SDK includes." COMMAND ${CMAKE_COMMAND} -E make_directory "${PROJECT_SOURCE_DIR}/sdk" + COMMAND ${CMAKE_COMMAND} -E make_directory "${WORKSPACE_BINARY_DIR}" COMMAND ../scripts/cleansdk.bat) ADD_CUSTOM_COMMAND(TARGET NetTunnelSDK @@ -41,4 +39,9 @@ ADD_CUSTOM_COMMAND(TARGET NetTunnelSDK COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/include/sccsdk.h" "${PROJECT_SOURCE_DIR}/sdk" COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/include/common.h" "${PROJECT_SOURCE_DIR}/sdk" COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/include/usrerr.h" "${PROJECT_SOURCE_DIR}/sdk" - COMMAND ../scripts/gensdk.bat) \ No newline at end of file + COMMAND ../scripts/gensdk.bat + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SDK_DLLS} ${WORKSPACE_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/NetTunnelSDK.dll ${WORKSPACE_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/NetTunnelSDK.lib ${WORKSPACE_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/NetTunnelSDK.pdb ${WORKSPACE_BINARY_DIR} +) \ No newline at end of file diff --git a/NetTunnelSDK/include/ProtocolBase.h b/NetTunnelSDK/include/ProtocolBase.h index c96bece..9e754e3 100644 --- a/NetTunnelSDK/include/ProtocolBase.h +++ b/NetTunnelSDK/include/ProtocolBase.h @@ -1,7 +1,7 @@ #pragma once #include "AIGCJson.hpp" -#define USER_REAL_PLATFORM (0) +#define USER_REAL_PLATFORM (1) class ProtocolBase { public: diff --git a/NetTunnelSDK/include/common.h b/NetTunnelSDK/include/common.h index 387c1dc..89cde32 100644 --- a/NetTunnelSDK/include/common.h +++ b/NetTunnelSDK/include/common.h @@ -1,6 +1,6 @@ #pragma once -#define USED_PORTMAP_TUNNEL (1) +#define USED_PORTMAP_TUNNEL (0) /** * @brief WireGuard key 最大长度 */ diff --git a/NetTunnelSDK/include/pch.h b/NetTunnelSDK/include/pch.h index dbb2e77..18ec051 100644 --- a/NetTunnelSDK/include/pch.h +++ b/NetTunnelSDK/include/pch.h @@ -8,3 +8,5 @@ // Windows 头文件 #include + +#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE diff --git a/NetTunnelSDK/network/ProxyService.cpp b/NetTunnelSDK/network/ProxyService.cpp index c81990d..66490e2 100644 --- a/NetTunnelSDK/network/ProxyService.cpp +++ b/NetTunnelSDK/network/ProxyService.cpp @@ -10,16 +10,16 @@ #include #include #include +#include #define SCG_UDP_HEAD_SIZE (11) #endif - void StopUDPProxyServer() { #if !USED_PORTMAP_TUNNEL - const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy; - pProxy->exitNow = true; + const auto pProxy = &GetGlobalCfgInfo()->scgProxy; + pProxy->exitNow = true; if (pProxy->hProxyTunnelThread) { if (WaitForSingleObject(pProxy->hProxyTunnelThread, 10 * 1000) == WAIT_TIMEOUT) { @@ -41,8 +41,8 @@ void StopUDPProxyServer() { #if !USED_PORTMAP_TUNNEL static DWORD UDPProxvRemoteThread(LPVOID lpParameter) { - const auto pPeerSock = static_cast(lpParameter); - const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy; + const auto pPeerSock = static_cast(lpParameter); + const auto pProxy = &GetGlobalCfgInfo()->scgProxy; while (pPeerSock && !pProxy->exitNow) { sockaddr_in remoteWgAddr {}; @@ -53,42 +53,24 @@ static DWORD UDPProxvRemoteThread(LPVOID lpParameter) { int iRecvBytes; // 代理服务 In - iRecvBytes = recvfrom(pProxy->scgGwSock, - recvBuf, - 1500, - 0, - reinterpret_cast(&remoteWgAddr), + iRecvBytes = recvfrom(pProxy->scgGwSock, recvBuf, 1500, 0, reinterpret_cast(&remoteWgAddr), &addrSize); memset(ipAddr, 0, MAX_IP_LEN); InetNtop(AF_INET, &remoteWgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN); - SPDLOG_TRACE(TEXT(">>> Scoket In {1} Recv {0} bytes from {2}:{3}"), - iRecvBytes, - pProxy->scgGwSock, - ipAddr, + SPDLOG_TRACE(TEXT(">>> Scoket In {1} Recv {0} bytes from {2}:{3}"), iRecvBytes, pProxy->scgGwSock, ipAddr, ntohs(remoteWgAddr.sin_port)); if (iRecvBytes != SOCKET_ERROR) { - int sendBytes = sendto(pProxy->udpProxySock, - recvBuf, - iRecvBytes, - 0, - reinterpret_cast(pPeerSock), - sizeof(SOCKADDR)); + int sendBytes = sendto(pProxy->udpProxySock, recvBuf, iRecvBytes, 0, + reinterpret_cast(pPeerSock), sizeof(SOCKADDR)); memset(ipAddr, 0, MAX_IP_LEN); InetNtop(AF_INET, &pPeerSock->sin_addr.s_addr, ipAddr, MAX_IP_LEN); - SPDLOG_TRACE(TEXT("<<< Scoket In Send {0} bytes to {2}:{3}"), - sendBytes, - pProxy->udpProxySock, - ipAddr, + SPDLOG_TRACE(TEXT("<<< Scoket In Send {0} bytes to {2}:{3}"), sendBytes, pProxy->udpProxySock, ipAddr, ntohs(pPeerSock->sin_port)); } else { - SPDLOG_ERROR(TEXT(">>> Scoket In {1} Recv {0} bytes from {2}:{3} error: {4}"), - iRecvBytes, - pProxy->scgGwSock, - ipAddr, - ntohs(remoteWgAddr.sin_port), - WSAGetLastError()); + SPDLOG_ERROR(TEXT(">>> Scoket In {1} Recv {0} bytes from {2}:{3} error: {4}"), iRecvBytes, + pProxy->scgGwSock, ipAddr, ntohs(remoteWgAddr.sin_port), WSAGetLastError()); } Sleep(100); @@ -101,8 +83,8 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) { sockaddr_in localWgAddr {}; sockaddr_in scgAddr {}; unsigned char recvBuf[1500 + SCG_UDP_HEAD_SIZE]; - std::array arr; - const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy; + std::array arr {}; + const auto pProxy = &GetGlobalCfgInfo()->scgProxy; const auto svrId = static_cast(GetGlobalCfgInfo()->userCfg.cliConfig.scgTunnelAppId); char *pRecBuf = reinterpret_cast(&recvBuf[SCG_UDP_HEAD_SIZE]); @@ -130,24 +112,16 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) { int iRecvBytes; // 代理服务 Out - iRecvBytes = recvfrom(pProxy->udpProxySock, - pRecBuf, - 1500, - 0, - reinterpret_cast(&localWgAddr), + iRecvBytes = recvfrom(pProxy->udpProxySock, pRecBuf, 1500, 0, reinterpret_cast(&localWgAddr), &addrSize); InetNtop(AF_INET, &localWgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN); - SPDLOG_TRACE(TEXT(">>> Scoket Out {1} Recv {0} bytes from {2}:{3}"), - iRecvBytes, - pProxy->udpProxySock, - ipAddr, + SPDLOG_TRACE(TEXT(">>> Scoket Out {1} Recv {0} bytes from {2}:{3}"), iRecvBytes, pProxy->udpProxySock, ipAddr, ntohs(localWgAddr.sin_port)); if (iRecvBytes >= (1450 - SCG_UDP_HEAD_SIZE)) { SPDLOG_WARN(TEXT("!Maybe MTU overflow: Current package {0} bytes, UDP MTU 1450, SCG Head Used {1} bytes"), - iRecvBytes, - SCG_UDP_HEAD_SIZE); + iRecvBytes, SCG_UDP_HEAD_SIZE); } if (iRecvBytes != SOCKET_ERROR) { @@ -161,11 +135,11 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) { isRemoteInit = true; // 创建远端接收线程 handle = CreateThread(nullptr, // Thread attributes - 0, // Stack size (0 = use default) - UDPProxvRemoteThread, // Thread start address - &localWgAddr, // Parameter to pass to the thread - 0, // Creation flags - nullptr); // Thread id + 0, // Stack size (0 = use default) + UDPProxvRemoteThread, // Thread start address + &localWgAddr, // Parameter to pass to the thread + 0, // Creation flags + nullptr); // Thread id if (handle == nullptr) { SPDLOG_ERROR("Create Thread failed with error = {0}", GetLastError()); @@ -190,23 +164,14 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) { const auto start = std::begin(recvBuf); std::copy_n(start, iRecvBytes, std::begin(arr)); SPDLOG_TRACE(TEXT("UDP Proxy SCG({1}/0x{2:X}) Payload: {0:Xa}"), - spdlog::to_hex(start, start + iRecvBytes, 16), - svrId, - id); + spdlog::to_hex(start, start + iRecvBytes, 16), svrId, id); } - sendBytes = sendto(pProxy->scgGwSock, - reinterpret_cast(recvBuf), - iRecvBytes, - 0, - reinterpret_cast(&scgAddr), - sizeof(SOCKADDR)); + sendBytes = sendto(pProxy->scgGwSock, reinterpret_cast(recvBuf), iRecvBytes, 0, + reinterpret_cast(&scgAddr), sizeof(SOCKADDR)); memset(ipAddr, 0, MAX_IP_LEN); InetNtop(AF_INET, &scgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN); - SPDLOG_TRACE(TEXT("<<< Scoket Out Send {0} bytes to {2}:{3}"), - sendBytes, - pProxy->scgGwSock, - ipAddr, + SPDLOG_TRACE(TEXT("<<< Scoket Out Send {0} bytes to {2}:{3}"), sendBytes, pProxy->scgGwSock, ipAddr, ntohs(scgAddr.sin_port)); } @@ -217,13 +182,13 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) { #endif int CreateUDPProxyServer() { #if !USED_PORTMAP_TUNNEL - HANDLE handle; - int ret; - int addrSize = sizeof(sockaddr_in); - sockaddr_in server {}; - sockaddr_in bindAddr {}; - SOCKET sock; - const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy; + HANDLE handle; + int ret; + int addrSize = sizeof(sockaddr_in); + sockaddr_in server {}; + sockaddr_in bindAddr {}; + SOCKET sock; + const auto pProxy = &GetGlobalCfgInfo()->scgProxy; // 创建本地 SOCKET 代理服务器 sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); @@ -279,7 +244,7 @@ int CreateUDPProxyServer() { return -ERR_CREATE_THREAD; } - pProxy->hProxyTunnelThread = handle; + pProxy->hProxyTunnelThread = handle; #endif return ERR_SUCCESS; } \ No newline at end of file diff --git a/NetTunnelSDK/protocol/protocol.cpp b/NetTunnelSDK/protocol/protocol.cpp index 10f6252..b2b1149 100644 --- a/NetTunnelSDK/protocol/protocol.cpp +++ b/NetTunnelSDK/protocol/protocol.cpp @@ -297,6 +297,7 @@ template int PlatformProtolGetMessage(const TCHAR *pUrlPath, T1 *pRsp) } #endif +#if !USER_REAL_PLATFORM template int PlatformProtolPostMessage(const TCHAR *pUrlPath, T1 *pReq, T2 *pRsp) { int ret; httplib::Result res; @@ -405,6 +406,7 @@ template int PlatformProtolPostMessage(const TCHAR *pUrlPath return ERR_SUCCESS; } +#endif template int ProtolPostMessage(const TCHAR *pUrlPath, ProtocolRequest *pReq, diff --git a/NetTunnelServerApp/CMakeLists.txt b/NetTunnelServerApp/CMakeLists.txt index db311f0..37db775 100644 --- a/NetTunnelServerApp/CMakeLists.txt +++ b/NetTunnelServerApp/CMakeLists.txt @@ -1,11 +1,26 @@ cmake_minimum_required(VERSION 3.22) project(NetTunnelServerApp) -set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD 17) add_definitions(-D_UNICODE) -find_package(spdlog CONFIG REQUIRED) -add_executable(NetTunnelServerApp NetTunnelServerApp.cpp) -target_link_libraries(NetTunnelServerApp PRIVATE spdlog::spdlog) +GET_TARGET_PROPERTY(LIBNetTunnelSDK_DEPENDS NetTunnelSDK LINK_LIBRARIES) +GET_TARGET_PROPERTY(LIBNetTunnelSDK_TARGETDIR NetTunnelSDK BINARY_DIR) -SET_TARGET_PROPERTIES(NetTunnelServerApp PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\"") \ No newline at end of file +#MESSAGE(STATUS "2+++++++++++++++++++NetTunnelSDK Depends: ${LIBNetTunnelSDK_DEPENDS}") +#MESSAGE(STATUS "NetTunnelSDK TargetDir: ${LIBNetTunnelSDK_TARGETDIR}") +#FIND_LIBRARY(NETTUNNELSDK_LIBRARY NAMES NetTunnelSDK HINTS ${LIBNetTunnelSDK_TARGETDIR}) + +FIND_PACKAGE(spdlog CONFIG REQUIRED) + +ADD_EXECUTABLE(NetTunnelServerApp NetTunnelServerApp.cpp) +TARGET_LINK_LIBRARIES(NetTunnelServerApp PRIVATE NetTunnelSDK ${LIBNetTunnelSDK_DEPENDS}) + +SET_TARGET_PROPERTIES(NetTunnelServerApp PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\"") + +ADD_CUSTOM_COMMAND(TARGET NetTunnelServerApp + PRE_BUILD + COMMENT "!!!!!! Notice: Automatic install dependes." + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LIBNetTunnelSDK_TARGETDIR}/NetTunnelSDK.dll ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/../depends/WireGuardNT/amd64/wireguard.dll ${CMAKE_CURRENT_BINARY_DIR} +) \ No newline at end of file diff --git a/NetTunnelServerApp/NetTunnelServerApp.cpp b/NetTunnelServerApp/NetTunnelServerApp.cpp index f3fc34a..8ce50d7 100644 --- a/NetTunnelServerApp/NetTunnelServerApp.cpp +++ b/NetTunnelServerApp/NetTunnelServerApp.cpp @@ -3,31 +3,33 @@ #include #include #include +#include "../NetTunnelSDK/include/sccsdk.h" -#pragma comment(linker, "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\"") +//#pragma comment(lib, "NetTunnelSDK.lib") int _tmain(int wargc, _TCHAR *wargv[]) { int ret; -// PUSER_SERVER_CONFIG pSvrCfg; -// -// //https://xajhuang.com:9276 -// //http://172.21.40.39:32549 -// if ((ret = TunnelSDKInitEnv(nullptr, "https://112.17.28.201:1443", nullptr, LOG_DEBUG, true)) != ERR_SUCCESS) { -// wprintf(L"Init SCC SDK Error: %d\n", ret); -// return -1; -// } -// -// EnableVerifySignature("sc-winvdisdk-efa9v12xwtz5eppr", "lh5r8sw6m9m416nm"); -// -// if (ERR_SUCCESS != (ret = GetUserServerConfigure("tunnel_svr", "172.21.97.100", &pSvrCfg))) { -// wprintf(L"GetUserServerConfigure Error: %d\n", ret); -// return -2; -// } -// -// if (ERR_SUCCESS != (ret = CreateControlService(pSvrCfg))) { -// wprintf(L"CreateControlService Error: %d\n", ret); -// return -2; -// } + PUSER_SERVER_CONFIG pSvrCfg; + + //https://xajhuang.com:9276 + //http://172.21.40.39:32549 + //https://112.17.28.201:1443 + if ((ret = TunnelSDKInitEnv(nullptr, "http://xajhuang.com:9276", nullptr, LOG_DEBUG, true)) != ERR_SUCCESS) { + wprintf(L"Init SCC SDK Error: %d\n", ret); + return -1; + } + + EnableVerifySignature("sc-winvdisdk-efa9v12xwtz5eppr", "lh5r8sw6m9m416nm"); + + if (ERR_SUCCESS != (ret = GetUserServerConfigure("tunnel_svr", "172.21.97.100", &pSvrCfg))) { + wprintf(L"GetUserServerConfigure Error: %d\n", ret); + return -2; + } + + if (ERR_SUCCESS != (ret = CreateControlService(pSvrCfg))) { + wprintf(L"CreateControlService Error: %d\n", ret); + return -2; + } wprintf(L"Press Key 'X' to exit......\n"); diff --git a/NetTunnelSvr/CMakeLists.txt b/NetTunnelSvr/CMakeLists.txt index 0699b50..472fff9 100644 --- a/NetTunnelSvr/CMakeLists.txt +++ b/NetTunnelSvr/CMakeLists.txt @@ -1,8 +1,17 @@ cmake_minimum_required(VERSION 3.22) project(NetTunnelSvr) -set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD 17) add_definitions(-D_UNICODE) + add_executable(NetTunnelSvr NetTunnelSvr.cpp) +TARGET_LINK_LIBRARIES(NetTunnelSvr PRIVATE NetTunnelSDK) + SET_TARGET_PROPERTIES(NetTunnelSvr PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\"") + +ADD_CUSTOM_COMMAND(TARGET NetTunnelSvr + PRE_BUILD + COMMENT "!!!!!! Notice: Automatic install dependes." + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/../depends/tunnel/amd64/tunnel.dll ${CMAKE_CURRENT_BINARY_DIR} +) diff --git a/vcpkg.json b/vcpkg.json index 6a22514..369389f 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -4,7 +4,7 @@ "builtin-baseline" : "662dbb50e63af15baa2909b7eac5b1b87e86a0aa", "dependencies" : [ { "name" : "spdlog", - "version>=" : "1.11.0#1", + "version>=" : "1.12.0", "$comment" : " find_package(spdlog CONFIG REQUIRED)\n\n target_link_libraries(main PRIVATE spdlog::spdlog)\n" }, { "name" : "openssl",