1. 更新工程编译、运行依赖
This commit is contained in:
parent
699beabd78
commit
0c865d11c0
|
@ -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)
|
|
||||||
|
|
|
@ -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}
|
||||||
|
)
|
|
@ -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:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define USED_PORTMAP_TUNNEL (1)
|
#define USED_PORTMAP_TUNNEL (0)
|
||||||
/**
|
/**
|
||||||
* @brief WireGuard key 最大长度
|
* @brief WireGuard key 最大长度
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -8,3 +8,5 @@
|
||||||
|
|
||||||
// Windows 头文件
|
// Windows 头文件
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
|
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
|
@ -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,
|
||||||
|
|
|
@ -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}
|
||||||
|
)
|
|
@ -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");
|
||||||
|
|
||||||
|
|
|
@ -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}
|
||||||
|
)
|
||||||
|
|
|
@ -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",
|
||||||
|
|
Loading…
Reference in New Issue