OCT 1. 修改SCG长度为2字节
This commit is contained in:
parent
c2b96cc333
commit
b7f98fcdd6
|
@ -14,7 +14,7 @@
|
|||
#include <spdlog/fmt/bin_to_hex.h>
|
||||
#include <array>
|
||||
|
||||
#define SCG_UDP_HEAD_SIZE (11)
|
||||
#define SCG_UDP_HEAD_SIZE (13)
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -49,7 +49,7 @@ static DWORD UDPProxvRemoteThread(LPVOID lpParameter) {
|
|||
while (pPeerSock && !pProxy->exitNow) {
|
||||
sockaddr_in remoteWgAddr {};
|
||||
#if DEBUG_PROXY_PACKAGE
|
||||
TCHAR ipAddr[MAX_IP_LEN];
|
||||
TCHAR ipAddr[MAX_IP_LEN];
|
||||
#endif
|
||||
int addrSize = sizeof(SOCKADDR);
|
||||
char recvBuf[1500];
|
||||
|
@ -79,7 +79,7 @@ static DWORD UDPProxvRemoteThread(LPVOID lpParameter) {
|
|||
0,
|
||||
reinterpret_cast<SOCKADDR *>(pPeerSock),
|
||||
sizeof(SOCKADDR));
|
||||
|
||||
|
||||
#if DEBUG_PROXY_PACKAGE
|
||||
memset(ipAddr, 0, MAX_IP_LEN);
|
||||
InetNtop(AF_INET, &pPeerSock->sin_addr.s_addr, ipAddr, MAX_IP_LEN);
|
||||
|
@ -105,16 +105,16 @@ static DWORD UDPProxvRemoteThread(LPVOID lpParameter) {
|
|||
}
|
||||
|
||||
static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
|
||||
bool isRemoteInit = false;
|
||||
sockaddr_in localWgAddr {};
|
||||
sockaddr_in scgAddr {};
|
||||
unsigned char recvBuf[1500 + SCG_UDP_HEAD_SIZE];
|
||||
bool isRemoteInit = false;
|
||||
sockaddr_in localWgAddr {};
|
||||
sockaddr_in scgAddr {};
|
||||
unsigned char recvBuf[1500 + SCG_UDP_HEAD_SIZE];
|
||||
#if DEBUG_PROXY_PACKAGE
|
||||
std::array<UINT8, 1511> arr;
|
||||
#endif
|
||||
const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy;
|
||||
const auto svrId = static_cast<UINT8>(GetGlobalCfgInfo()->userCfg.cliConfig.scgTunnelAppId);
|
||||
char *pRecBuf = reinterpret_cast<char *>(&recvBuf[SCG_UDP_HEAD_SIZE]);
|
||||
const PSCG_PROXY_INFO pProxy = &GetGlobalCfgInfo()->scgProxy;
|
||||
const auto svrId = static_cast<UINT8>(GetGlobalCfgInfo()->userCfg.cliConfig.scgTunnelAppId);
|
||||
char *pRecBuf = reinterpret_cast<char *>(&recvBuf[SCG_UDP_HEAD_SIZE]);
|
||||
|
||||
scgAddr.sin_family = AF_INET;
|
||||
scgAddr.sin_port = htons(pProxy->scgGwPort);
|
||||
|
@ -122,24 +122,26 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
|
|||
|
||||
// 构建 SCG UDP 包头
|
||||
recvBuf[0] = 0x01; // VERSION
|
||||
recvBuf[1] = 0x09; // Length
|
||||
recvBuf[2] = 0xF0; // ++++++ INFO[0] TYPE
|
||||
recvBuf[3] = 0x04; // INFO[0] LENGTH
|
||||
recvBuf[4] = 0; // INFO[0] VMID[0]
|
||||
recvBuf[5] = 0; // INFO[0] VMID[1]
|
||||
recvBuf[6] = 0; // INFO[0] VMID[2]
|
||||
recvBuf[7] = 0; // INFO[0] VMID[3]
|
||||
recvBuf[8] = 0xF1; // INFO[1] TYPE
|
||||
recvBuf[9] = 0x01; // INFO[1] LENGTH
|
||||
recvBuf[10] = svrId; // ------ INFO[1] SCG Service ID
|
||||
recvBuf[1] = 0x0A; // Length 0
|
||||
recvBuf[2] = 0x09; // Length 1
|
||||
recvBuf[3] = 0xF0; // ++++++ INFO[0] TYPE
|
||||
recvBuf[4] = 0x04; // INFO[0] LENGTH
|
||||
recvBuf[5] = 0; // INFO[0] VMID[0]
|
||||
recvBuf[6] = 0; // INFO[0] VMID[1]
|
||||
recvBuf[7] = 0; // INFO[0] VMID[2]
|
||||
recvBuf[8] = 0; // INFO[0] VMID[3]
|
||||
recvBuf[9] = 0xF1; // INFO[1] TYPE
|
||||
recvBuf[10] = 0x00; // INFO[1] LENGTH 0
|
||||
recvBuf[11] = 0x01; // INFO[1] LENGTH 1
|
||||
recvBuf[12] = svrId; // ------ INFO[1] SCG Service ID
|
||||
|
||||
pProxy->exitNow = false;
|
||||
while (!pProxy->exitNow) {
|
||||
#if DEBUG_PROXY_PACKAGE
|
||||
TCHAR ipAddr[MAX_IP_LEN];
|
||||
#endif
|
||||
int addrSize = sizeof(SOCKADDR);
|
||||
int iRecvBytes;
|
||||
int addrSize = sizeof(SOCKADDR);
|
||||
int iRecvBytes;
|
||||
|
||||
// 代理服务 Out
|
||||
iRecvBytes = recvfrom(pProxy->udpProxySock,
|
||||
|
@ -194,13 +196,13 @@ static DWORD UDPProxyRecvThread(LPVOID lpParameter) {
|
|||
pProxy->hProxySCGThread = handle;
|
||||
}
|
||||
|
||||
recvBuf[4] = vmid[0]; // INFO[0] VMID[0]
|
||||
recvBuf[5] = vmid[1]; // INFO[0] VMID[1]
|
||||
recvBuf[6] = vmid[2]; // INFO[0] VMID[2]
|
||||
recvBuf[7] = vmid[3]; // INFO[0] VMID[3]
|
||||
recvBuf[5] = vmid[0]; // INFO[0] VMID[0]
|
||||
recvBuf[6] = vmid[1]; // INFO[0] VMID[1]
|
||||
recvBuf[7] = vmid[2]; // INFO[0] VMID[2]
|
||||
recvBuf[8] = vmid[3]; // INFO[0] VMID[3]
|
||||
|
||||
// 增加SCG包头数据长度
|
||||
iRecvBytes += 11;
|
||||
iRecvBytes += SCG_UDP_HEAD_SIZE;
|
||||
#if DEBUG_PROXY_PACKAGE
|
||||
if (GetGlobalCfgInfo()->logLevel == spdlog::level::trace) {
|
||||
const auto start = std::begin(recvBuf);
|
||||
|
|
|
@ -47,7 +47,8 @@ int InitControlServer(const TCHAR *pUserSvrUrl) {
|
|||
const unsigned int id = htonl(GetGlobalCfgInfo()->curConnVmId);
|
||||
const auto svrId = static_cast<UINT8>(GetGlobalCfgInfo()->userCfg.cliConfig.scgCtrlAppId);
|
||||
unsigned char scgProxy[] = {0x01, // VERSION
|
||||
0x09, // Length
|
||||
0x00, // Length 0
|
||||
0x0A, // Length 1
|
||||
0xF0, // ++++++ INFO[0] TYPE
|
||||
0x04, // INFO[0] LENGTH
|
||||
0, // INFO[0] VMID[0]
|
||||
|
@ -55,15 +56,15 @@ int InitControlServer(const TCHAR *pUserSvrUrl) {
|
|||
0, // INFO[0] VMID[2]
|
||||
0, // INFO[0] VMID[3]
|
||||
0xF1, // INFO[1] TYPE
|
||||
0x01, // INFO[1] LENGTH
|
||||
0x00, // INFO[1] LENGTH 0
|
||||
0x01, // INFO[1] LENGTH 1
|
||||
svrId}; // ------ INFO[1] SCG Service ID
|
||||
|
||||
p = scgProxy;
|
||||
memcpy(vmid, &id, 4);
|
||||
scgProxy[4] = vmid[0];
|
||||
scgProxy[5] = vmid[1];
|
||||
scgProxy[6] = vmid[2];
|
||||
scgProxy[7] = vmid[3];
|
||||
scgProxy[5] = vmid[0];
|
||||
scgProxy[6] = vmid[1];
|
||||
scgProxy[7] = vmid[2];
|
||||
scgProxy[8] = vmid[3];
|
||||
|
||||
if (GetGlobalCfgInfo()->logLevel == spdlog::level::trace) {
|
||||
std::array<unsigned char, sizeof(scgProxy)> arr;
|
||||
|
|
Loading…
Reference in New Issue