NetTunnelWindows/NetTunnelSDK/include/globalcfg.h

116 lines
4.5 KiB
C
Raw Normal View History

#pragma once
#include <spdlog/spdlog.h>
#include "common.h"
#include <winsock2.h>
#if 0
/**
* @brief WireGuard
*/
typedef struct {
TCHAR wireguardPath[MAX_PATH]; ///< wireguard.exe 路径
BOOL wireguardExists; ///< wireguard.exe 是否存在
TCHAR wgPath[MAX_PATH]; ///< wg.exe 路径
BOOL wgExists; ///< wg.exe 是否存在
} WIREGUARD_CFG, *PWIREGUARD_CFG;
#endif
/**
* @brief WireGuard
*/
2023-06-21 10:04:16 +00:00
typedef struct {
TCHAR wgName[260]; ///< 网卡名称, Windows标识为 UUID
TCHAR wgIpaddr[MAX_IP_LEN]; ///< 网卡 IP 地址
TCHAR wgNetmask[MAX_IP_LEN]; ///< 网卡子网掩码
TCHAR wgCfgPath[MAX_PATH]; ///< 配置文件路径
} WGINTERFACE_CFG, *PWGINTERFACE_CFG;
/**
*
* @brief
*/
typedef struct {
int vmId; ///< 用户虚拟机 ID
TCHAR vmName[MAX_PATH]; ///< 用户虚拟机名称
TCHAR svrPublicKey[64]; ///< 用户服务端公钥
TCHAR vmNetwork[MAX_IP_LEN]; ///< 用户虚拟机网络地址
TCHAR scgGateWay[MAX_PATH]; ///< 用户服务端接入网关
TCHAR scgTunnelGw[MAX_PATH]; ///< 用户隧道接入网关
} VM_CFG, *PVM_CFG;
/**
*
* @brief
*/
typedef struct {
int scgCtrlAppId; ///< 用户接入网关控制 ID
int scgTunnelAppId; ///< 用户接入网关隧道 ID
TCHAR cliPrivateKey[64]; ///< 用户客户端私钥
TCHAR cliPublicKey[64]; ///< 用户客户端公钥
TCHAR cliAddress[MAX_IP_LEN]; ///< 用户客户端隧道IP地址
PVM_CFG pVMConfig; ///< 用户虚拟机配置列表
int tolVM; ///< 用户虚拟机配置最大数
} USER_CLIENT_CONFIG, *PUSER_CLIENT_CONFIG;
typedef struct {
int svrListenPort; ///< 用户服务端监听端口
TCHAR svrPrivateKey[64]; ///< 用户服务端公钥
TCHAR svrAddress[MAX_IP_LEN]; ///< 用户服务端隧道 IP 地址
} USER_SERVER_CONFIG, *PUSER_SERVER_CONFIG;
/**
* @brief
*/
typedef struct {
TCHAR userName[MAX_PATH]; ///< 用户名
TCHAR userToken[MAX_PATH]; ///< 用户访问令牌
USER_CLIENT_CONFIG cliConfig; ///< 用户客户端配置
USER_SERVER_CONFIG svrConfig; ///< 用户服务端配置
} USER_CONFIG, *PUSER_CONFIG;
typedef struct {
TCHAR targetIp[MAX_IP_LEN];
UINT16 targetPort;
UINT16 proxyPort;
UINT16 scgGwPort;
TCHAR scgIpAddr[MAX_IP_LEN];
SOCKET udpProxySock;
SOCKET scgGwSock;
HANDLE hProxyTunnelThread;
HANDLE hProxySCGThread;
bool exitNow;
} SCG_PROXY_INFO, *PSCG_PROXY_INFO;
/**
* @brief SDK
*/
typedef struct {
TCHAR platformServerUrl[MAX_PATH]; ///< 管理平台IP地址
TCHAR configDirectory[MAX_PATH]; ///< 配置存放目录
TCHAR systemDirectory[MAX_PATH]; ///< 操作系统目录
TCHAR workDirectory[MAX_PATH]; ///< SDK 当前工作目录
bool isWorkServer; ///< SDK 当前模式 客户端/服务端
//int scgProxyPort; ///< SCG 代理端口, >0 启动 SCG代理<=0 关闭SCG代理
PROTO_CRYPTO_TYPE proCryptoType; ///< 协议加密类型
TCHAR proKeyBuf[256]; ///< 协议加密秘钥
BOOL enableLog; ///< 是否启用日志
spdlog::level::level_enum logLevel; ///< 日志等级
TCHAR cfgPath[MAX_PATH]; ///< 配置文件路径
WGINTERFACE_CFG wgServerCfg; ///< wireguard 服务端网络接口配置
WGINTERFACE_CFG wgClientCfg; ///< wireguard 客户端网络接口配置
USER_CONFIG userCfg; ///< 用户配置项
SCG_PROXY_INFO scgProxy; ///< SCG UDP 代理信息
int curConnVmId; ///< 当前连接的VM
} SDK_CONFIG, *PSDK_CONFIG;
#ifdef __cplusplus // If used by C++ code,
extern "C" {
// we need to export the C interface
#endif
PSDK_CONFIG GetGlobalCfgInfo();
#ifdef __cplusplus
}
#endif