168 lines
6.6 KiB
C
168 lines
6.6 KiB
C
|
#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
|