NetTunnelWindows/NetTunnelSDK/user.h

168 lines
6.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <Windows.h>
#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 连接远程控制服务配置隧道参数
* @param[in] vmId 需要连接的虚拟机ID编号
* @param[in] pCliNetwork 需要共享的本地网络地址
* @return 成功, 小于0 失败 @see USER_ERRNO
* - -ERR_INPUT_PARAMS 输入参数错误
* - -ERR_SYSTEM_UNINITIALIZE 服务端参数未初始化
* - -ERR_MALLOC_MEMORY 分配内存失败
* - -ERR_OPEN_FILE 打开文件失败
* - -ERR_MEMORY_STR 字符串处理失败
* - -ERR_UN_SUPPORT 不支持的格式转换
* - -ERR_JSON_CREATE 创建 JSON 字符串失败
* - -ERR_HTTP_POST_DATA 调用 POST 方法失败
* - -ERR_HTTP_SERVER_RSP 服务端返回失败非200
* - -ERR_READ_FILE 服务端返回空数据
* - -ERR_JSON_DECODE 解析 JSON 数据失败
* - ERR_SUCCESS 成功
*/
USERMANAGER_API int __cdecl RemoteCtrlSvrCfgUserTunnel(int vmId, const TCHAR *pCliNetwork);
/**
* @brief 设置本地 WireGuard 隧道配置
* @param[in] pCliPrivateKey 隧道私钥
* @param[in] pSvrPublicKey 隧道服务端公钥
* @param[in] pSvrNetwork 可访问隧道服务的云电脑网络
* @param[in] pCliNetwork 客户端共享网络地址
* @param[in] pSvrTunnelAddr 服务端隧道网络
* @param[in] pSvrEndPoint 隧道服务端接入地址
* @return 成功, 小于0 失败 @see USER_ERRNO
* - -ERR_INPUT_PARAMS 输入参数错误
* - -ERR_SYSTEM_UNINITIALIZE 服务端参数未初始化
* - -ERR_MALLOC_MEMORY 分配内存失败
* - -ERR_OPEN_FILE 打开文件失败
* - -ERR_MEMORY_STR 字符串处理失败
* - -ERR_UN_SUPPORT 不支持的格式转换
* - -ERR_MALLOC_MEMORY 分配内存失败
* - ERR_SUCCESS 成功
*/
USERMANAGER_API int __cdecl SetTunnelConfigure(const TCHAR *pCliPrivateKey,
const TCHAR *pSvrPublicKey,
const TCHAR *pSvrNetwork,
const TCHAR *pCliNetwork,
const TCHAR *pSvrTunnelAddr,
const TCHAR *pSvrEndPoint);
/**
* @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 启动/停止 本地 WireGuard 隧道服务
* @param[in] isStart 启动/停止服务 TRUE 启动服务, FALSE 停止服务
* @param[in] setPrivateMode 是否设置网卡工作模式为 专用网络模式(Private)
* @return 0: 成功, 小于0 失败 @see USER_ERRNO
* - -ERR_INPUT_PARAMS 输入参数错误
* - -ERR_NET_CATEGORY_MODE 网卡工作模式错误
* - -ERR_UN_SUPPORT 不支持的网络共享类型
* - ERR_SUCCESS 成功
*/
USERMANAGER_API int __cdecl LocalWireGuardControl(bool isStart, bool setPrivateMode);
/**
* @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