#pragma once #include #include "tunnel.h" /** * @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; /** * @brief WireGuard 网络接口配置项 */ 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]; ///< 用户服务端接入网关 } 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; /** * @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 当前模式 客户端/服务端 PROTO_CRYPTO_TYPE proCryptoType; ///< 协议加密类型 TCHAR proKeyBuf[256]; ///< 协议加密秘钥 BOOL enableLog; ///< 是否启用日志 spdlog::level::level_enum logLevel; ///< 日志等级 TCHAR cfgPath[MAX_PATH]; ///< 配置文件路径 WIREGUARD_CFG wireguardCfg; ///< wireguard 配置项 @see WIREGUARD_CFG WGINTERFACE_CFG wgServerCfg; ///< wireguard 服务端网络接口配置 WGINTERFACE_CFG wgClientCfg; ///< wireguard 客户端网络接口配置 USER_CONFIG userCfg; ///< 用户配置项 } 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