1. 更新工程编译、运行依赖

This commit is contained in:
黄昕 2023-08-23 10:16:21 +08:00
parent 699beabd78
commit 0c865d11c0
11 changed files with 121 additions and 118 deletions

View File

@ -1,9 +1,14 @@
cmake_minimum_required(VERSION 3.22) CMAKE_MINIMUM_REQUIRED(VERSION 3.22)
project(scc) PROJECT(scc)
set(CMAKE_CXX_STANDARD 23) SET(CMAKE_CXX_STANDARD 17)
add_definitions(-D_UNICODE) 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(NetTunnelSvr)
ADD_SUBDIRECTORY(NetTunnelServerApp) ADD_SUBDIRECTORY(NetTunnelServerApp)
ADD_SUBDIRECTORY(NetTunnelSDK)

View File

@ -1,9 +1,9 @@
cmake_minimum_required(VERSION 3.22) CMAKE_MINIMUM_REQUIRED(VERSION 3.22)
project(NetTunnelSDK) 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}) 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) 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(protocol CPP_SRC)
AUX_SOURCE_DIRECTORY(user 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}) ADD_LIBRARY(NetTunnelSDK SHARED dllmain.cpp ${CPP_SRC} ${CPP_HEADS})
target_link_libraries(NetTunnelSDK PRIVATE spdlog::spdlog) TARGET_LINK_LIBRARIES(NetTunnelSDK PRIVATE spdlog::spdlog)
target_link_libraries(NetTunnelSDK PRIVATE magic_enum::magic_enum) TARGET_LINK_LIBRARIES(NetTunnelSDK PRIVATE magic_enum::magic_enum)
target_link_libraries(NetTunnelSDK PRIVATE OpenSSL::SSL OpenSSL::Crypto) TARGET_LINK_LIBRARIES(NetTunnelSDK PRIVATE OpenSSL::SSL OpenSSL::Crypto)
target_link_libraries(NetTunnelSDK PRIVATE rapidjson) TARGET_LINK_LIBRARIES(NetTunnelSDK PRIVATE rapidjson)
FILE(GLOB SDK_DLLS ${CMAKE_CURRENT_BINARY_DIR}/*.dll)
ADD_CUSTOM_COMMAND(TARGET NetTunnelSDK ADD_CUSTOM_COMMAND(TARGET NetTunnelSDK
PRE_BUILD PRE_BUILD
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "!!!!!! Notice: Clearup SDK includes." COMMENT "!!!!!! Notice: Clearup SDK includes."
COMMAND ${CMAKE_COMMAND} -E make_directory "${PROJECT_SOURCE_DIR}/sdk" COMMAND ${CMAKE_COMMAND} -E make_directory "${PROJECT_SOURCE_DIR}/sdk"
COMMAND ${CMAKE_COMMAND} -E make_directory "${WORKSPACE_BINARY_DIR}"
COMMAND ../scripts/cleansdk.bat) COMMAND ../scripts/cleansdk.bat)
ADD_CUSTOM_COMMAND(TARGET NetTunnelSDK 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/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/common.h" "${PROJECT_SOURCE_DIR}/sdk"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/include/usrerr.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) 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}
)

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
#include "AIGCJson.hpp" #include "AIGCJson.hpp"
#define USER_REAL_PLATFORM (0) #define USER_REAL_PLATFORM (1)
class ProtocolBase { class ProtocolBase {
public: public:

View File

@ -1,6 +1,6 @@
#pragma once #pragma once
#define USED_PORTMAP_TUNNEL (1) #define USED_PORTMAP_TUNNEL (0)
/** /**
* @brief WireGuard key * @brief WireGuard key
*/ */

View File

@ -8,3 +8,5 @@
// Windows 头文件 // Windows 头文件
#include <windows.h> #include <windows.h>
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE

View File

@ -10,16 +10,16 @@
#include <winsock2.h> #include <winsock2.h>
#include <ws2tcpip.h> #include <ws2tcpip.h>
#include <spdlog/fmt/bin_to_hex.h> #include <spdlog/fmt/bin_to_hex.h>
#include <array>
#define SCG_UDP_HEAD_SIZE (11) #define SCG_UDP_HEAD_SIZE (11)
#endif #endif
void StopUDPProxyServer() { void StopUDPProxyServer() {
#if !USED_PORTMAP_TUNNEL #if !USED_PORTMAP_TUNNEL
const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy; const auto pProxy = &GetGlobalCfgInfo()->scgProxy;
pProxy->exitNow = true; pProxy->exitNow = true;
if (pProxy->hProxyTunnelThread) { if (pProxy->hProxyTunnelThread) {
if (WaitForSingleObject(pProxy->hProxyTunnelThread, 10 * 1000) == WAIT_TIMEOUT) { if (WaitForSingleObject(pProxy->hProxyTunnelThread, 10 * 1000) == WAIT_TIMEOUT) {
@ -41,8 +41,8 @@ void StopUDPProxyServer() {
#if !USED_PORTMAP_TUNNEL #if !USED_PORTMAP_TUNNEL
static DWORD UDPProxvRemoteThread(LPVOID lpParameter) { static DWORD UDPProxvRemoteThread(LPVOID lpParameter) {
const auto pPeerSock = static_cast<sockaddr_in *>(lpParameter); const auto pPeerSock = static_cast<sockaddr_in *>(lpParameter);
const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy; const auto pProxy = &GetGlobalCfgInfo()->scgProxy;
while (pPeerSock && !pProxy->exitNow) { while (pPeerSock && !pProxy->exitNow) {
sockaddr_in remoteWgAddr {}; sockaddr_in remoteWgAddr {};
@ -53,42 +53,24 @@ static DWORD UDPProxvRemoteThread(LPVOID lpParameter) {
int iRecvBytes; int iRecvBytes;
// 代理服务 In // 代理服务 In
iRecvBytes = recvfrom(pProxy->scgGwSock, iRecvBytes = recvfrom(pProxy->scgGwSock, recvBuf, 1500, 0, reinterpret_cast<SOCKADDR *>(&remoteWgAddr),
recvBuf,
1500,
0,
reinterpret_cast<SOCKADDR *>(&remoteWgAddr),
&addrSize); &addrSize);
memset(ipAddr, 0, MAX_IP_LEN); memset(ipAddr, 0, MAX_IP_LEN);
InetNtop(AF_INET, &remoteWgAddr.sin_addr.s_addr, ipAddr, 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}"), SPDLOG_TRACE(TEXT(">>> Scoket In {1} Recv {0} bytes from {2}:{3}"), iRecvBytes, pProxy->scgGwSock, ipAddr,
iRecvBytes,
pProxy->scgGwSock,
ipAddr,
ntohs(remoteWgAddr.sin_port)); ntohs(remoteWgAddr.sin_port));
if (iRecvBytes != SOCKET_ERROR) { if (iRecvBytes != SOCKET_ERROR) {
int sendBytes = sendto(pProxy->udpProxySock, int sendBytes = sendto(pProxy->udpProxySock, recvBuf, iRecvBytes, 0,
recvBuf, reinterpret_cast<SOCKADDR *>(pPeerSock), sizeof(SOCKADDR));
iRecvBytes,
0,
reinterpret_cast<SOCKADDR *>(pPeerSock),
sizeof(SOCKADDR));
memset(ipAddr, 0, MAX_IP_LEN); memset(ipAddr, 0, MAX_IP_LEN);
InetNtop(AF_INET, &pPeerSock->sin_addr.s_addr, ipAddr, 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}"), SPDLOG_TRACE(TEXT("<<< Scoket In Send {0} bytes to {2}:{3}"), sendBytes, pProxy->udpProxySock, ipAddr,
sendBytes,
pProxy->udpProxySock,
ipAddr,
ntohs(pPeerSock->sin_port)); ntohs(pPeerSock->sin_port));
} else { } else {
SPDLOG_ERROR(TEXT(">>> Scoket In {1} Recv {0} bytes from {2}:{3} error: {4}"), SPDLOG_ERROR(TEXT(">>> Scoket In {1} Recv {0} bytes from {2}:{3} error: {4}"), iRecvBytes,
iRecvBytes, pProxy->scgGwSock, ipAddr, ntohs(remoteWgAddr.sin_port), WSAGetLastError());
pProxy->scgGwSock,
ipAddr,
ntohs(remoteWgAddr.sin_port),
WSAGetLastError());
} }
Sleep(100); Sleep(100);
@ -101,8 +83,8 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
sockaddr_in localWgAddr {}; sockaddr_in localWgAddr {};
sockaddr_in scgAddr {}; sockaddr_in scgAddr {};
unsigned char recvBuf[1500 + SCG_UDP_HEAD_SIZE]; unsigned char recvBuf[1500 + SCG_UDP_HEAD_SIZE];
std::array<UINT8, 1511> arr; std::array<UINT8, 1511> arr {};
const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy; const auto pProxy = &GetGlobalCfgInfo()->scgProxy;
const auto svrId = static_cast<UINT8>(GetGlobalCfgInfo()->userCfg.cliConfig.scgTunnelAppId); const auto svrId = static_cast<UINT8>(GetGlobalCfgInfo()->userCfg.cliConfig.scgTunnelAppId);
char *pRecBuf = reinterpret_cast<char *>(&recvBuf[SCG_UDP_HEAD_SIZE]); char *pRecBuf = reinterpret_cast<char *>(&recvBuf[SCG_UDP_HEAD_SIZE]);
@ -130,24 +112,16 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
int iRecvBytes; int iRecvBytes;
// 代理服务 Out // 代理服务 Out
iRecvBytes = recvfrom(pProxy->udpProxySock, iRecvBytes = recvfrom(pProxy->udpProxySock, pRecBuf, 1500, 0, reinterpret_cast<SOCKADDR *>(&localWgAddr),
pRecBuf,
1500,
0,
reinterpret_cast<SOCKADDR *>(&localWgAddr),
&addrSize); &addrSize);
InetNtop(AF_INET, &localWgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN); InetNtop(AF_INET, &localWgAddr.sin_addr.s_addr, ipAddr, MAX_IP_LEN);
SPDLOG_TRACE(TEXT(">>> Scoket Out {1} Recv {0} bytes from {2}:{3}"), SPDLOG_TRACE(TEXT(">>> Scoket Out {1} Recv {0} bytes from {2}:{3}"), iRecvBytes, pProxy->udpProxySock, ipAddr,
iRecvBytes,
pProxy->udpProxySock,
ipAddr,
ntohs(localWgAddr.sin_port)); ntohs(localWgAddr.sin_port));
if (iRecvBytes >= (1450 - SCG_UDP_HEAD_SIZE)) { 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"), SPDLOG_WARN(TEXT("!Maybe MTU overflow: Current package {0} bytes, UDP MTU 1450, SCG Head Used {1} bytes"),
iRecvBytes, iRecvBytes, SCG_UDP_HEAD_SIZE);
SCG_UDP_HEAD_SIZE);
} }
if (iRecvBytes != SOCKET_ERROR) { if (iRecvBytes != SOCKET_ERROR) {
@ -161,11 +135,11 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
isRemoteInit = true; isRemoteInit = true;
// 创建远端接收线程 // 创建远端接收线程
handle = CreateThread(nullptr, // Thread attributes handle = CreateThread(nullptr, // Thread attributes
0, // Stack size (0 = use default) 0, // Stack size (0 = use default)
UDPProxvRemoteThread, // Thread start address UDPProxvRemoteThread, // Thread start address
&localWgAddr, // Parameter to pass to the thread &localWgAddr, // Parameter to pass to the thread
0, // Creation flags 0, // Creation flags
nullptr); // Thread id nullptr); // Thread id
if (handle == nullptr) { if (handle == nullptr) {
SPDLOG_ERROR("Create Thread failed with error = {0}", GetLastError()); SPDLOG_ERROR("Create Thread failed with error = {0}", GetLastError());
@ -190,23 +164,14 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
const auto start = std::begin(recvBuf); const auto start = std::begin(recvBuf);
std::copy_n(start, iRecvBytes, std::begin(arr)); std::copy_n(start, iRecvBytes, std::begin(arr));
SPDLOG_TRACE(TEXT("UDP Proxy SCG({1}/0x{2:X}) Payload: {0:Xa}"), SPDLOG_TRACE(TEXT("UDP Proxy SCG({1}/0x{2:X}) Payload: {0:Xa}"),
spdlog::to_hex(start, start + iRecvBytes, 16), spdlog::to_hex(start, start + iRecvBytes, 16), svrId, id);
svrId,
id);
} }
sendBytes = sendto(pProxy->scgGwSock, sendBytes = sendto(pProxy->scgGwSock, reinterpret_cast<char *>(recvBuf), iRecvBytes, 0,
reinterpret_cast<char *>(recvBuf), reinterpret_cast<SOCKADDR *>(&scgAddr), sizeof(SOCKADDR));
iRecvBytes,
0,
reinterpret_cast<SOCKADDR *>(&scgAddr),
sizeof(SOCKADDR));
memset(ipAddr, 0, MAX_IP_LEN); memset(ipAddr, 0, MAX_IP_LEN);
InetNtop(AF_INET, &scgAddr.sin_addr.s_addr, ipAddr, 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}"), SPDLOG_TRACE(TEXT("<<< Scoket Out Send {0} bytes to {2}:{3}"), sendBytes, pProxy->scgGwSock, ipAddr,
sendBytes,
pProxy->scgGwSock,
ipAddr,
ntohs(scgAddr.sin_port)); ntohs(scgAddr.sin_port));
} }
@ -217,13 +182,13 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
#endif #endif
int CreateUDPProxyServer() { int CreateUDPProxyServer() {
#if !USED_PORTMAP_TUNNEL #if !USED_PORTMAP_TUNNEL
HANDLE handle; HANDLE handle;
int ret; int ret;
int addrSize = sizeof(sockaddr_in); int addrSize = sizeof(sockaddr_in);
sockaddr_in server {}; sockaddr_in server {};
sockaddr_in bindAddr {}; sockaddr_in bindAddr {};
SOCKET sock; SOCKET sock;
const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy; const auto pProxy = &GetGlobalCfgInfo()->scgProxy;
// 创建本地 SOCKET 代理服务器 // 创建本地 SOCKET 代理服务器
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
@ -279,7 +244,7 @@ int CreateUDPProxyServer() {
return -ERR_CREATE_THREAD; return -ERR_CREATE_THREAD;
} }
pProxy->hProxyTunnelThread = handle; pProxy->hProxyTunnelThread = handle;
#endif #endif
return ERR_SUCCESS; return ERR_SUCCESS;
} }

View File

@ -297,6 +297,7 @@ template<class T1> int PlatformProtolGetMessage(const TCHAR *pUrlPath, T1 *pRsp)
} }
#endif #endif
#if !USER_REAL_PLATFORM
template<class T1, class T2> int PlatformProtolPostMessage(const TCHAR *pUrlPath, T1 *pReq, T2 *pRsp) { template<class T1, class T2> int PlatformProtolPostMessage(const TCHAR *pUrlPath, T1 *pReq, T2 *pRsp) {
int ret; int ret;
httplib::Result res; httplib::Result res;
@ -405,6 +406,7 @@ template<class T1, class T2> int PlatformProtolPostMessage(const TCHAR *pUrlPath
return ERR_SUCCESS; return ERR_SUCCESS;
} }
#endif
template int ProtolPostMessage(const TCHAR *pUrlPath, template int ProtolPostMessage(const TCHAR *pUrlPath,
ProtocolRequest<ReqGetUserCfgParams> *pReq, ProtocolRequest<ReqGetUserCfgParams> *pReq,

View File

@ -1,11 +1,26 @@
cmake_minimum_required(VERSION 3.22) cmake_minimum_required(VERSION 3.22)
project(NetTunnelServerApp) project(NetTunnelServerApp)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 17)
add_definitions(-D_UNICODE) add_definitions(-D_UNICODE)
find_package(spdlog CONFIG REQUIRED) GET_TARGET_PROPERTY(LIBNetTunnelSDK_DEPENDS NetTunnelSDK LINK_LIBRARIES)
add_executable(NetTunnelServerApp NetTunnelServerApp.cpp) GET_TARGET_PROPERTY(LIBNetTunnelSDK_TARGETDIR NetTunnelSDK BINARY_DIR)
target_link_libraries(NetTunnelServerApp PRIVATE spdlog::spdlog)
SET_TARGET_PROPERTIES(NetTunnelServerApp PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\"") #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}
)

View File

@ -3,31 +3,33 @@
#include <tchar.h> #include <tchar.h>
#include <spdlog/spdlog.h> #include <spdlog/spdlog.h>
#include <conio.h> #include <conio.h>
#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 _tmain(int wargc, _TCHAR *wargv[]) {
int ret; int ret;
// PUSER_SERVER_CONFIG pSvrCfg; PUSER_SERVER_CONFIG pSvrCfg;
//
// //https://xajhuang.com:9276 //https://xajhuang.com:9276
// //http://172.21.40.39:32549 //http://172.21.40.39:32549
// if ((ret = TunnelSDKInitEnv(nullptr, "https://112.17.28.201:1443", nullptr, LOG_DEBUG, true)) != ERR_SUCCESS) { //https://112.17.28.201:1443
// wprintf(L"Init SCC SDK Error: %d\n", ret); if ((ret = TunnelSDKInitEnv(nullptr, "http://xajhuang.com:9276", nullptr, LOG_DEBUG, true)) != ERR_SUCCESS) {
// return -1; wprintf(L"Init SCC SDK Error: %d\n", ret);
// } return -1;
// }
// EnableVerifySignature("sc-winvdisdk-efa9v12xwtz5eppr", "lh5r8sw6m9m416nm");
// EnableVerifySignature("sc-winvdisdk-efa9v12xwtz5eppr", "lh5r8sw6m9m416nm");
// if (ERR_SUCCESS != (ret = GetUserServerConfigure("tunnel_svr", "172.21.97.100", &pSvrCfg))) {
// wprintf(L"GetUserServerConfigure Error: %d\n", ret); if (ERR_SUCCESS != (ret = GetUserServerConfigure("tunnel_svr", "172.21.97.100", &pSvrCfg))) {
// return -2; wprintf(L"GetUserServerConfigure Error: %d\n", ret);
// } return -2;
// }
// if (ERR_SUCCESS != (ret = CreateControlService(pSvrCfg))) {
// wprintf(L"CreateControlService Error: %d\n", ret); if (ERR_SUCCESS != (ret = CreateControlService(pSvrCfg))) {
// return -2; wprintf(L"CreateControlService Error: %d\n", ret);
// } return -2;
}
wprintf(L"Press Key 'X' to exit......\n"); wprintf(L"Press Key 'X' to exit......\n");

View File

@ -1,8 +1,17 @@
cmake_minimum_required(VERSION 3.22) cmake_minimum_required(VERSION 3.22)
project(NetTunnelSvr) project(NetTunnelSvr)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 17)
add_definitions(-D_UNICODE) add_definitions(-D_UNICODE)
add_executable(NetTunnelSvr NetTunnelSvr.cpp) add_executable(NetTunnelSvr NetTunnelSvr.cpp)
TARGET_LINK_LIBRARIES(NetTunnelSvr PRIVATE NetTunnelSDK)
SET_TARGET_PROPERTIES(NetTunnelSvr PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\"") 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}
)

View File

@ -4,7 +4,7 @@
"builtin-baseline" : "662dbb50e63af15baa2909b7eac5b1b87e86a0aa", "builtin-baseline" : "662dbb50e63af15baa2909b7eac5b1b87e86a0aa",
"dependencies" : [ { "dependencies" : [ {
"name" : "spdlog", "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" "$comment" : " find_package(spdlog CONFIG REQUIRED)\n\n target_link_libraries(main PRIVATE spdlog::spdlog)\n"
}, { }, {
"name" : "openssl", "name" : "openssl",