#pragma once #include #ifdef NETTUNNELSDK_EXPORTS #define USERMANAGER_API __declspec(dllexport) #else #define USERMANAGER_API __declspec(dllimport) #endif #define HEART_PERIOD_MS (3000) typedef void (*PTUNNEL_HEART_ROUTINE)(const TCHAR *pMessage, unsigned int timeStampOfSeconds); typedef PTUNNEL_HEART_ROUTINE LPTUNNEL_HEART_ROUTINE; /** * * @brief 本地计算机网卡信息 */ typedef struct { int isCurrent; ///< 网卡 MAC 地址 TCHAR CfgPath[260]; ///< 配置文件路径 } USER_CFGFILE, *PUSER_CFGFILE; #ifdef __cplusplus // If used by C++ code, extern "C" { // we need to export the C interface #endif /** * @brief 连接到服务端控制服务 * @param pUserSvrUrl 服务端控制服务 URL 地址 */ USERMANAGER_API void __cdecl ConnectServerControlService(const TCHAR *pUserSvrUrl); /** * @brief 云电脑服务端创建控制服务 * @param pSvr 服务端配置信息 * @return 0: 成功, 小于0 失败 @see USER_ERRNO * - -ERR_INPUT_PARAMS 输入参数错误 * - -ERR_CREATE_THREAD 创建线程失败 * - -ERR_SOCKET_BIND_PORT 绑定端口失败 * - -ERR_ITEM_EXISTS 服务线程状态异常 * - ERR_SUCCESS 成功 */ USERMANAGER_API int __cdecl CreateControlService(PUSER_SERVER_CONFIG pSvr); /** * @brief 停止云电脑服务端服务 * @return 0: 成功, 小于0 失败 @see USER_ERRNO * - -ERROR_TIMEOUT 等待超时 * - ERR_SUCCESS 成功 */ USERMANAGER_API int __cdecl StopControlService(); /** * @brief 设置远程云电脑中的 WireGuard 隧道客户端相关配置 * @param[in] pCliPublicKey 客户端公钥 * @param[in] pCliNetwork 客户端共享网络 * @param[in] pCliTunnelAddr 客户端隧道 IP 地址 * @return 0: 成功, 小于0 失败 @see USER_ERRNO * - -ERR_INPUT_PARAMS 输入参数错误 * - -ERR_SYSTEM_UNINITIALIZE 未初始化远程服务 URL 地址 * - -ERR_CREATE_FILE 创建用户配置目录失败 * - -ERR_HTTP_POST_DATA POST 数据到服务端失败 * - -ERR_HTTP_SERVER_RSP HTTP 服务器返回错误 * - -ERR_READ_FILE 服务端未返回正确的消息 * - -ERR_JSON_DECODE JSON 字符串解码失败 * - ERR_SUCCESS 成功 */ USERMANAGER_API int __cdecl SetClientConfige(const TCHAR *pCliPublicKey, const TCHAR *pCliNetwork, const TCHAR *pCliTunnelAddr); /** * @brief 启动/停止 隧道控制服务心跳 * @param isStart 启动/停止服务 TRUE 启动服务, FALSE 停止服务 * @param lpHeartCbAddress 心跳服务回调函数 @see PTUNNEL_HEART_ROUTINE * @return 0: 成功, 小于0 失败 @see USER_ERRNO * - -ERR_INPUT_PARAMS 输入参数错误 * - -ERR_CREATE_TIMER 创建定时器失败 * - -ERR_DELETE_TIMER 删除定时器失败 * - ERR_SUCCESS 成功 */ USERMANAGER_API int __cdecl RemoteHeartControl(bool isStart, LPTUNNEL_HEART_ROUTINE lpHeartCbAddress); /** * @brief 启动/停止远程云电脑中的 WireGuard 隧道服务 * @param[in] isStart 启动/停止服务 TRUE 启动服务, FALSE 停止服务 * @return 0: 成功, 小于0 失败 @see USER_ERRNO * - -ERR_INPUT_PARAMS 输入参数错误 * - -ERR_SYSTEM_UNINITIALIZE 未初始化远程服务 URL 地址 * - -ERR_CREATE_FILE 创建用户配置目录失败 * - -ERR_HTTP_POST_DATA POST 数据到服务端失败 * - -ERR_HTTP_SERVER_RSP HTTP 服务器返回错误 * - -ERR_READ_FILE 服务端未返回正确的消息 * - -ERR_JSON_DECODE JSON 字符串解码失败 * - ERR_SUCCESS 成功 */ USERMANAGER_API int __cdecl RemoteWireGuardControl(bool isStart); /** * @brief 获取用户服务端配置信息 * @param[in] pUserName 用户名 * @param[in] pToken 用户访问令牌 * @param[out] pSvrCfg 服务端用户配置信息 * @return 0: 成功, 小于0 失败 @see USER_ERRNO * - -ERR_INPUT_PARAMS 输入参数错误 * - -ERR_MEMORY_STR 字符串处理 * - -ERR_CREATE_FILE 创建用户配置目录失败 * - ERR_SUCCESS 成功 */ USERMANAGER_API int __cdecl GetUserServerConfigure(const TCHAR *pUserName, const TCHAR *pToken, PUSER_SERVER_CONFIG *pSvrCfg); /** * @brief 获取用户客户端配置信息 * @param[in] pUserName 用户名 * @param[in] pToken 用户访问令牌 * @param[out] pCliCfg 客户端用户配置信息 * @return 0: 成功, 小于0 失败 @see USER_ERRNO * - -ERR_INPUT_PARAMS 输入参数错误 * - -ERR_MEMORY_STR 字符串处理 * - -ERR_CREATE_FILE 创建用户配置目录失败 * - ERR_SUCCESS 成功 */ USERMANAGER_API int __cdecl GetUserClientConfigure(const TCHAR *pUserName, const TCHAR *pToken, PUSER_CLIENT_CONFIG *pCliCfg); USERMANAGER_API int __cdecl GetUserConfigFiles(const TCHAR *pUserName, PUSER_CFGFILE* pCfgFile, int *pItems); #ifdef __cplusplus } #endif