NetTunnelWindows/NetTunnelSDK/include/protocol.h

290 lines
8.8 KiB
C
Raw Normal View History

#pragma once
#include "ProtocolBase.h"
#include "common.h"
2023-08-15 03:01:31 +00:00
#if !USER_REAL_PLATFORM
class PlatformReqServerCfgParms {
public:
std::string vmIp;
AIGC_JSON_HELPER(vmIp)
};
class PlatformReqClientCfgParms {
public:
std::string userName;
std::string token;
AIGC_JSON_HELPER(userName)
};
class PlatformRspUserSvrCfgParams {
public:
PlatformRspUserSvrCfgParams() {
this->svrHost = TEXT("");
this->svrPort = 0;
this->svrPriKey = TEXT("");
}
int svrPort;
std::string svrPriKey;
std::string svrHost;
AIGC_JSON_HELPER(svrPort, svrPriKey, svrHost)
};
class VitrualMathineInfo {
public:
VitrualMathineInfo() {
this->vmId = 0;
this->scgPort = 0;
this->vmName = TEXT("");
this->scgIp = TEXT("");
this->vmNetwork = TEXT("");
this->svrPubKey = TEXT("");
#if USED_PORTMAP_TUNNEL
this->portMapIp = TEXT("");
this->portMapPort = 0;
#endif
2023-08-15 03:01:31 +00:00
}
int vmId;
std::string vmName;
std::string svrPubKey;
std::string vmNetwork;
std::string scgIp;
int scgPort;
#if USED_PORTMAP_TUNNEL
std::string portMapIp;
int portMapPort;
AIGC_JSON_HELPER(vmId, vmName, svrPubKey, vmNetwork, scgIp, scgPort, portMapIp, portMapPort)
#else
2023-08-15 03:01:31 +00:00
AIGC_JSON_HELPER(vmId, vmName, svrPubKey, vmNetwork, scgIp, scgPort)
#endif
2023-08-15 03:01:31 +00:00
};
class PlatformRspUserClientCfgParams {
public:
PlatformRspUserClientCfgParams() {
this->scgTunnelAppId = WG_TUNNEL_SCG_ID;
this->scgCtrlAppId = WG_CTRL_SCG_ID;
this->cliHost = TEXT("");
}
int scgCtrlAppId;
int scgTunnelAppId;
std::string cliPriKey;
std::string cliPubKey;
std::string cliHost;
std::list<VitrualMathineInfo> vmInfoList;
AIGC_JSON_HELPER(cliPriKey, cliPubKey, vmInfoList, cliHost)
2023-08-15 03:01:31 +00:00
};
class PlatformRspServerCfgParams {
public:
std::string code;
std::string message;
PlatformRspUserSvrCfgParams data;
AIGC_JSON_HELPER(code, data)
};
class PlatformRspClientCfgParams {
public:
std::string code;
std::string message;
PlatformRspUserClientCfgParams data;
AIGC_JSON_HELPER(code, data)
};
#endif
class ReqClientCfgParams {
public:
std::string identifier;
AIGC_JSON_HELPER(identifier)
};
class ReqHeartParams {
public:
std::string message;
AIGC_JSON_HELPER(message)
AIGC_JSON_HELPER_DEFAULT(message = TEXT("PING"))
};
class RspHeartParams : public ResponseStatus {
public:
std::string message;
AIGC_JSON_HELPER(message)
AIGC_JSON_HELPER_BASE((ResponseStatus *)this)
AIGC_JSON_HELPER_DEFAULT(message = TEXT("PONG"))
};
class ReqGetUserCfgParams {
public:
std::string user;
std::string token;
AIGC_JSON_HELPER(user, token)
};
class RspUserSevrCfgParams {
public:
RspUserSevrCfgParams() {
this->svrAddress = TEXT("");
this->svrListenPort = 0;
this->svrPrivateKey = TEXT("");
}
int svrListenPort;
std::string svrPrivateKey;
std::string svrAddress;
AIGC_JSON_HELPER(svrListenPort, svrPrivateKey, svrAddress)
};
class ReqStartTunnelParams {
public:
bool isStart;
AIGC_JSON_HELPER(isStart)
};
class ReqUserSetCliCfgParams {
public:
std::string cliPublicKey;
std::string cliNetwork;
std::string cliTunnelAddr;
AIGC_JSON_HELPER(cliPublicKey, cliNetwork, cliTunnelAddr)
};
class RspUserSetCliCfgParams : public ResponseStatus {
public:
std::string svrNetwork;
AIGC_JSON_HELPER(svrNetwork)
AIGC_JSON_HELPER_BASE((ResponseStatus *)this)
};
class VitrualMathineCfg {
public:
VitrualMathineCfg() {
this->vmId = 0;
this->vmName = TEXT("");
this->scgGateway = TEXT("");
this->vmNetwork = TEXT("");
this->svrPublicKey = TEXT("");
#if USED_PORTMAP_TUNNEL
this->portMapIp = TEXT("");
this->portMapPort = 0;
#endif
}
int vmId;
std::string vmName;
std::string svrPublicKey;
std::string vmNetwork;
std::string scgGateway;
#if USED_PORTMAP_TUNNEL
std::string portMapIp;
int portMapPort;
AIGC_JSON_HELPER(vmId, vmName, svrPublicKey, vmNetwork, scgGateway, portMapIp, portMapPort)
#else
AIGC_JSON_HELPER(vmId, vmName, svrPublicKey, vmNetwork, scgGateway)
#endif
};
class RspUsrCliConfigParams {
public:
int scgCtrlAppId;
int scgTunnelAppId;
std::string cliPrivateKey;
std::string cliPublicKey;
std::string cliAddress;
std::list<VitrualMathineCfg> vmConfig;
AIGC_JSON_HELPER(scgCtrlAppId, scgTunnelAppId, cliPrivateKey, cliPublicKey, cliAddress, vmConfig)
};
2023-08-15 03:01:31 +00:00
#if USER_REAL_PLATFORM
#define GET_CLIENTCFG_PATH TEXT("/tunnel/getuserconfig")
#define GET_SERVERCFG_PATH TEXT("/tunnel/getserverconfig")
#else
#define GET_CLIENTCFG_PATH TEXT("/sc/open-portal/openapi/scc/cliTunnelCfg")
#define GET_SERVERCFG_PATH TEXT("/sc/open-portal/openapi/scc/svrTunnelCfg")
#endif
#define SET_CLIENTCFG_PATH TEXT("/tunnel/setconfig")
#define SET_CLIENTSTART_TUNNEL TEXT("/tunnel/start")
#define SET_CLIENTHEART_PATH TEXT("/tunnel/heart")
int InitControlServer(const TCHAR *pUserSvrUrl);
/**
* @brief RESTful POST
* @param[in] pUrlPath URL
* @param[in] pReq
* @param[in] pRsp
* @param[in] platformServer 访访
* @return 0: 0 @see USER_ERRNO
* - -ERR_INPUT_PARAMS
* - -ERR_SYSTEM_UNINITIALIZE URL未初始化
* - -ERR_JSON_CREATE JSON
* - -ERR_HTTP_POST_DATA POST
* - -ERR_HTTP_SERVER_RSP 200
* - -ERR_READ_FILE
* - -ERR_JSON_DECODE JSON
* - ERR_SUCCESS
*/
template<class T1, class T2>
int ProtolPostMessage(const TCHAR *pUrlPath,
ProtocolRequest<T1> *pReq,
ProtocolResponse<T2> *pRsp,
bool platformServer);
extern template int ProtolPostMessage(const TCHAR *pUrlPath,
ProtocolRequest<ReqGetUserCfgParams> *pReq,
ProtocolResponse<RspUserSevrCfgParams> *pRsp,
bool platformServer);
extern template int ProtolPostMessage(const TCHAR *pUrlPath,
ProtocolRequest<ReqGetUserCfgParams> *pReq,
ProtocolResponse<RspUsrCliConfigParams> *pRsp,
bool platformServer);
extern template int ProtolPostMessage(const TCHAR *pUrlPath,
ProtocolRequest<ReqUserSetCliCfgParams> *pReq,
ProtocolResponse<RspUserSetCliCfgParams> *pRsp,
bool platformServer);
extern template int ProtolPostMessage(const TCHAR *pUrlPath,
ProtocolRequest<ReqStartTunnelParams> *pReq,
ProtocolResponse<ResponseStatus> *pRsp,
bool platformServer);
extern template int ProtolPostMessage(const TCHAR *pUrlPath,
ProtocolRequest<ReqHeartParams> *pReq,
ProtocolResponse<RspHeartParams> *pRsp,
2023-08-15 03:01:31 +00:00
bool platformServer);
#if !USER_REAL_PLATFORM
template<class T1, class T2> int PlatformProtolPostMessage(const TCHAR *pUrlPath, T1 *pReq, T2 *pRsp);
extern template int PlatformProtolPostMessage(const TCHAR *pUrlPath,
PlatformReqServerCfgParms *pReq,
PlatformRspServerCfgParams *pRsp);
extern template int PlatformProtolPostMessage(const TCHAR *pUrlPath,
PlatformReqClientCfgParms *pReq,
PlatformRspClientCfgParams *pRsp);
#if 0
template<class T1> int PlatformProtolGetMessage(const TCHAR *pUrlPath, T1 *pRsp);
extern template int PlatformProtolGetMessage(const TCHAR *pUrlPath,
PlatformRspUserClientCfgParams *pRsp);
#endif
#endif