TyphoonMultiSocks.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682
  1. #ifndef __TYPHOON_SOCKS_H__
  2. #define __TYPHOON_SOCKS_H__
  3. #ifdef __cplusplus
  4. extern "C"
  5. {
  6. #endif
  7. #include "stdint.h"
  8. #ifdef _WIN32
  9. #ifdef TYPHOON_SOCKS_DLL_IMPLEMENT
  10. #define TYPHOON_SOCKS_EXTERN __declspec(dllexport)
  11. #else
  12. #ifdef _STATIC_LIB_
  13. #define TYPHOON_SOCKS_EXTERN
  14. #else
  15. #define TYPHOON_SOCKS_EXTERN __declspec(dllimport)
  16. #endif
  17. #endif
  18. #define TYPHOON_STDCALL __stdcall
  19. #else
  20. #define TYPHOON_SOCKS_EXTERN /* nothing */
  21. #define TYPHOON_STDCALL
  22. #endif
  23. typedef void * HTyphoonHandle;
  24. enum TyphoonMultiProxyServiceType
  25. {
  26. SOCKS5_SERVICE = 0,
  27. HTTP_SERVICE,
  28. };
  29. /*
  30. * 连接回调
  31. * status 为0:连接成功
  32. * status 非0:连接失败,失败后客户端会继续尝试重连
  33. */
  34. typedef void (TYPHOON_STDCALL *TyphoonMultiProxy_OnConnected)(HTyphoonHandle pyHandle, int status);
  35. /*
  36. * 连接断开回调
  37. */
  38. typedef void (TYPHOON_STDCALL *TyphoonMultiProxy_OnDisconnected)(HTyphoonHandle pyHandle);
  39. /*
  40. * 授权改变回调
  41. */
  42. typedef void (TYPHOON_STDCALL *TyphoonMultiProxy_OnAuthChange)(HTyphoonHandle pyHandle);
  43. /*
  44. * sdn连接路径改变回调
  45. */
  46. typedef void (TYPHOON_STDCALL *TyphoonMultiProxy_OnSDNRouteChange)(HTyphoonHandle pyHandle, int type);
  47. /*
  48. * 服务空闲回调回调
  49. */
  50. typedef void (TYPHOON_STDCALL *TyphoonMultiProxy_OnServiceIdleTimeout)(HTyphoonHandle pyHandle, TyphoonMultiProxyServiceType serviceType);
  51. /*
  52. * TyphoonProxy local与Server连接状态通知回调
  53. * 应用如果关心连接状态信息, 需注册对应回调函数;
  54. */
  55. typedef struct TyphoonMultiProxyConnectionStatusCb
  56. {
  57. TyphoonMultiProxy_OnConnected pfnOnConnected;
  58. TyphoonMultiProxy_OnDisconnected pfnOnDisConnected;
  59. TyphoonMultiProxy_OnAuthChange pfnOnAuthChange;
  60. TyphoonMultiProxy_OnSDNRouteChange pfnOnSDNRouteChange;
  61. TyphoonMultiProxy_OnServiceIdleTimeout pfnOnServiceIdleTimeout;
  62. }stTyphoonMultiProxyConnectionStatusCb;
  63. typedef struct ConnectExParam_s{
  64. char *socks5Ip;
  65. int socks5Port;
  66. char *serverIp;
  67. int serverPort;
  68. unsigned int mss;
  69. int bCompress;
  70. unsigned int timeOut;
  71. uint8_t transferMode;
  72. bool bUseSdn;
  73. }ConnectExParam_t;
  74. /*
  75. * 设置Typhoon 回调
  76. */
  77. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_SetConnectionStatusCb(stTyphoonMultiProxyConnectionStatusCb Cb);
  78. /*
  79. * 获取Typhoon 回调
  80. */
  81. TYPHOON_SOCKS_EXTERN stTyphoonMultiProxyConnectionStatusCb TyphoonMultiProxy_GetConnectionStatusCb();
  82. /*
  83. * 初始化Typhoon
  84. * 参数:
  85. * maxSpeed:最大速度,单位KB,只能在权限范围内设置,设为0,使用最大权限速度
  86. * minSpeed:最小速度,单位KB,设为0,默认128KB
  87. * pLogPath:日志路径
  88. * pLicensePath:license文件产生路径
  89. * 返回值:
  90. * 0成功,非0失败
  91. */
  92. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_InitClient(unsigned int maxSpeed, unsigned int minSpeed, const char *pLogPath, const char *pLicensePath, void *rootsData = nullptr, int rootsDataLen = 0);
  93. /*
  94. * 初始化Typhoon
  95. * 参数:
  96. * maxSpeed:最大速度,单位KB,只能在权限范围内设置,设为0,使用最大权限速度
  97. * minSpeed:最小速度,单位KB,设为0,默认128KB
  98. * pLogPath:日志路径
  99. * pLicensePath:license文件产生路径
  100. * 返回值:
  101. * 0成功,非0失败
  102. */
  103. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_InitClientEx(unsigned int maxSpeed, unsigned int minSpeed, const char *pLogPath, const char *pLicensePath, uint8_t transferMode);
  104. /*
  105. * 新建一条连接
  106. * 参数:
  107. * socks5Ip:socket5 监听ip
  108. * socks5Port:socket5 监听端口,设置为0由系统随机分配端口
  109. * serverIp:Typhoon server ip
  110. * serverPort:Typhoon server 端口
  111. * mss:最大报文长度,范围 600-1442
  112. * 该值的实际大小由 server与client协商决定,谁小用谁
  113. *
  114. * bCompress:是否开启压缩,1开启,0关闭;
  115. * 是否开启压缩实际效果由 server与client协商决定,只有都打开压缩才会有效
  116. *
  117. * timeOut:连接超时时间,单位 ms,设置为0不使用超时
  118. * 返回值:
  119. * 返回连接的句柄,该句柄需要由调用者自行维护,其他与连接相关的api都需要此句柄
  120. */
  121. TYPHOON_SOCKS_EXTERN HTyphoonHandle TyphoonMultiProxy_CreateNewConnect(const char *socks5Ip, int socks5Port,
  122. const char *serverIp, int serverPort, unsigned int mss, int bCompress, unsigned int timeOut);
  123. TYPHOON_SOCKS_EXTERN HTyphoonHandle TyphoonMultiProxy_CreateNewConnectEx(ConnectExParam_t *connP);
  124. TYPHOON_SOCKS_EXTERN HTyphoonHandle TyphoonMultiProxy_CreateNewTyphoonConn(const char *serverIp, int serverPort,
  125. unsigned int mss, int bCompress, unsigned int timeOut, uint8_t transferMode = 0, uint8_t useSdn = 0);
  126. TYPHOON_SOCKS_EXTERN HTyphoonHandle TyphoonMultiProxy_CreateNewTyphoonConnVia(const char *serverIp, int serverPort,
  127. unsigned int mss, int bCompress, unsigned int timeOut, uint8_t transferMode, uint64_t via);
  128. /*
  129. * 关闭连接
  130. * 参数:
  131. * pyHandle:连接句柄
  132. * 返回值:
  133. * 0成功,非0失败
  134. */
  135. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CloseConnect(HTyphoonHandle pyHandle);
  136. /*
  137. * 重置连接
  138. * 参数:
  139. * pyHandle:连接句柄
  140. * 返回值:
  141. * 0成功,非0失败
  142. * 说明:
  143. * 该方法主要用来在mss或者压缩状态改变时候使用
  144. * 设置后所有的 socket5连接都会断开
  145. */
  146. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_RestartConnect(HTyphoonHandle pyHandle);
  147. /*
  148. * 使能压缩
  149. * 参数:
  150. * pyHandle:连接句柄
  151. * 说明:
  152. * 该方法设置后需要重置连接才会生效
  153. */
  154. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_EnableCompress(HTyphoonHandle pyHandle);
  155. /*
  156. * 关闭压缩
  157. * 参数:
  158. * pyHandle:连接句柄
  159. * 说明:
  160. * 该方法设置后需要重置连接才会生效
  161. */
  162. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_DisableCompress(HTyphoonHandle pyHandle);
  163. /*
  164. * 获取连接的压缩状态
  165. * 参数:
  166. * pyHandle:连接句柄
  167. * 返回值:
  168. * 1开启压缩,0未开启
  169. */
  170. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_IsCompressEnabled(HTyphoonHandle pyHandle);
  171. /*
  172. * 获取连接状态
  173. * 参数:
  174. * pyHandle:连接句柄
  175. * 返回值:
  176. * 1已连接,0未连接
  177. */
  178. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetConnectionStatus(HTyphoonHandle pyHandle);
  179. /*
  180. * 获取Socks5端口
  181. * 参数:
  182. * pyHandle:连接句柄
  183. * 返回值:
  184. * 小于等于0失败,大于0为监听的端口
  185. */
  186. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetSocks5Port(HTyphoonHandle pyHandle);
  187. /*
  188. * 获取Http端口
  189. * 参数:
  190. * pyHandle:连接句柄
  191. * 返回值:
  192. * 小于等于0失败,大于0为监听的端口
  193. */
  194. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetHttpPort(HTyphoonHandle pyHandle);
  195. /*
  196. * 设置连接接收速度
  197. * 参数:
  198. * pyHandle:连接句柄
  199. * RecvSpeed:接收速度,单位KB,设为0使用最大权限带宽
  200. * 返回值:
  201. * 0成功,非0失败
  202. */
  203. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetConnRecvSpeed(HTyphoonHandle pyHandle, unsigned int RecvSpeed);
  204. /*
  205. * 设置最大发送速度
  206. * 参数:
  207. * pyHandle:连接句柄
  208. * Speed:发送速度,单位KB,设为0使用最大权限带宽
  209. * 返回值:
  210. * 0成功,非0失败
  211. */
  212. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetMaxSendSpeed(HTyphoonHandle pyHandle, unsigned int Speed);
  213. /*
  214. * 设置最小发送速度
  215. * 参数:
  216. * pyHandle:连接句柄
  217. * Speed:发送速度,单位KB,设为0默认128KB
  218. * 返回值:
  219. * 0成功,非0失败
  220. */
  221. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetMinSendSpeed(HTyphoonHandle pyHandle, unsigned int Speed);
  222. /*
  223. * 设置最小接收速度
  224. * 参数:
  225. * pyHandle:连接句柄
  226. * Speed:接收速度,单位KB,设为0默认128KB
  227. * 返回值:
  228. * 0成功,非0失败
  229. */
  230. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetMinRecvSpeed(HTyphoonHandle pyHandle, unsigned int Speed);
  231. /*
  232. * 设置连接的超时时间
  233. * 参数:
  234. * pyHandle:连接句柄
  235. * timeout:超时时间,单位 ms
  236. * 返回值:
  237. * 小于0失败,大于等于0为设置的超时时间
  238. */
  239. TYPHOON_SOCKS_EXTERN unsigned int TyphoonMultiProxy_SetTcpIdleTimout(HTyphoonHandle pyHandle, unsigned int timeout);
  240. /*
  241. * 设置服务的超时时间
  242. * 参数:
  243. * pyHandle:连接句柄
  244. * serviceType:服务类型
  245. * timeout:超时时间,单位 ms,必须大于等于 10*1000
  246. * 返回值:
  247. * 小于0失败,等于0成功
  248. */
  249. TYPHOON_SOCKS_EXTERN unsigned int TyphoonMultiProxy_SetServiceIdleTimout(HTyphoonHandle pyHandle, TyphoonMultiProxyServiceType serviceType, unsigned int timeout);
  250. /*
  251. * 获取连接的 rtt
  252. * 参数:
  253. * pyHandle:连接句柄
  254. * 返回值:
  255. * 小于0失败,大于等于0为rtt
  256. */
  257. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetConnectionRTT(HTyphoonHandle pyHandle);
  258. /*
  259. * 获取连接的丢包率
  260. * 参数:
  261. * pyHandle:连接句柄
  262. * 返回值:
  263. * 小于0失败,大于等于0为丢包率
  264. */
  265. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetConnectionDropRate(HTyphoonHandle pyHandle);
  266. /*
  267. * 获取Typhoon client版本
  268. * 参数:
  269. * verbuff:版本缓存,需要大于256字节
  270. * 返回值:
  271. * 0成功,非0失败
  272. */
  273. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetClientVersion(char *verbuff);
  274. /*
  275. * 获取最大权限带宽
  276. * 参数:
  277. * pyHandle:连接句柄
  278. * 返回值:
  279. * 小于0失败,大于0权限带宽,单位Mbps
  280. */
  281. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetMaxAuthSendSpeed(HTyphoonHandle pyHandle);
  282. /*
  283. * 设置 mss
  284. * 参数:
  285. * pyHandle:连接句柄
  286. * mss:范围600-1442
  287. * 返回值:
  288. * 0成功,非0失败
  289. * 说明:
  290. * 该方法设置后需要重置连接才会生效
  291. */
  292. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetMss(HTyphoonHandle pyHandle, unsigned int mss);
  293. /*
  294. * 获取 mss
  295. * 参数:
  296. * pyHandle:连接句柄
  297. * 返回值:
  298. * 小于等于0失败,大于0为mss
  299. */
  300. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetMss(HTyphoonHandle pyHandle);
  301. /*
  302. * 设置用户的私有数据,用来保存用户数据指针
  303. * 参数:
  304. * 无
  305. * 返回值:
  306. * 0成功,非0失败
  307. */
  308. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetUserData(uint64_t Data);
  309. /*
  310. * 获取用户的私有数据
  311. * 参数:
  312. * 无
  313. * 返回值:
  314. * 返回用户指针
  315. */
  316. TYPHOON_SOCKS_EXTERN uint64_t TyphoonMultiProxy_GetUserData();
  317. /*
  318. * 获取连接的出口ip地址
  319. * 参数:
  320. * pyHandle:连接句柄
  321. * addr:保存地址结构体指针
  322. * 返回值:
  323. * 无
  324. */
  325. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_GetWanAddr(HTyphoonHandle pyHandle, struct sockaddr *addr);
  326. /*
  327. * 获取对端ip地址
  328. * 参数:
  329. * pyHandle:连接句柄
  330. * addr:保存地址结构体指针
  331. * 返回值:
  332. * 无
  333. */
  334. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_GetRemoteAddr(HTyphoonHandle pyHandle, struct sockaddr *addr);
  335. /*
  336. * 获取对端 rtt
  337. * 参数:
  338. * pyHandle:连接句柄
  339. * 返回值:
  340. * 小于等于0失败,大于0为rtt
  341. */
  342. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetQueryPeerRTT(HTyphoonHandle pyHandle);
  343. /*
  344. * 获取对端丢包率
  345. * 参数:
  346. * pyHandle:连接句柄
  347. * 返回值:
  348. * 小于等于0失败,大于0为丢包率,单位万分之一
  349. */
  350. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetQueryPeerDropRate(HTyphoonHandle pyHandle);
  351. /*
  352. * 获取最大发送速度
  353. * 参数:
  354. * pyHandle:连接句柄
  355. * 返回值:
  356. * 小于等于0失败,大于0为最大发送速度,单位B
  357. */
  358. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetMaxSendSpeed(HTyphoonHandle pyHandle);
  359. /*
  360. * 获取最小发送速度
  361. * 参数:
  362. * pyHandle:连接句柄
  363. * 返回值:
  364. * 小于等于0失败,大于0为最小发送速度,单位B
  365. */
  366. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetMinSendSpeed(HTyphoonHandle pyHandle);
  367. /*
  368. * 获取对端 mss
  369. * 参数:
  370. * pyHandle:连接句柄
  371. * 返回值:
  372. * 小于等于0失败,大于0为 mss
  373. */
  374. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetQueryMss(HTyphoonHandle pyHandle);
  375. /*
  376. * 获取当前发送的实时速度
  377. * 参数:
  378. * pyHandle:连接句柄
  379. * 返回值:
  380. * 小于等于0失败,大于0为实时发送速度
  381. */
  382. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetCurSendSpeed(HTyphoonHandle pyHandle);
  383. /*
  384. * 设置HSM模式
  385. * 参数:
  386. * mode:1开始HSM,0关闭HSM
  387. * 返回值:
  388. * 0成功,非0失败
  389. * 说明:
  390. * 该方法需要在TyphoonMultiProxy_InitClient之后,CreateNewConnect之前设置
  391. */
  392. TYPHOON_SOCKS_EXTERN unsigned int TyphoonMultiProxy_SetHighSpeedMode(unsigned int mode);
  393. /*
  394. * 设置连接的私有数据,用来保存用户数据指针
  395. * 参数:
  396. * pyHandle:连接句柄
  397. * Data:数据指针
  398. * 返回值:
  399. * 0成功,非0失败
  400. */
  401. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetConnectUserData(HTyphoonHandle pyHandle, uint64_t Data);
  402. /*
  403. * 获取连接的私有数据
  404. * 参数:
  405. * pyHandle:连接句柄
  406. * 返回值:
  407. * 返回用户指针
  408. */
  409. TYPHOON_SOCKS_EXTERN uint64_t TyphoonMultiProxy_GetConnectUserData(HTyphoonHandle pyHandle);
  410. /*
  411. * 设置socks5 代理的配置
  412. * 参数:
  413. * server:socks5域名或ip
  414. * port:端口
  415. * username:用户名
  416. * password:密码
  417. * 返回值:
  418. * 0成功,非0失败
  419. */
  420. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetSocks5ProxyConfig(char *server, uint16_t port, char *username, char *password);
  421. /*
  422. * 使能GSO
  423. * 参数:无
  424. * 返回值:
  425. * 0成功,非0失败
  426. */
  427. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_EnableGSO();
  428. /*
  429. * 关闭GSO
  430. * 参数:无
  431. * 返回值:
  432. * 0成功,非0失败
  433. */
  434. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_DisableGSO();
  435. /*
  436. * 创建 http 服务
  437. * 参数:
  438. * pyHandle:连接句柄
  439. * httpIp:ip地址
  440. * httpPort: 端口
  441. * timeOut:超时时间
  442. * 返回值:
  443. * 0成功,非0失败
  444. */
  445. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CreateHttpService(HTyphoonHandle pyHandle, const char *httpIp, int httpPort, uint32_t timeOut, uint16_t ifUseFirewall = 0, uint16_t fecPercent = 0);
  446. /*
  447. * 创建端口前转服务
  448. * 参数:
  449. * pyHandle:连接句柄
  450. * localIp:本地地址
  451. * localPort: 本地端口
  452. * remoteIp:远端地址
  453. * remotePort: 远端端口
  454. * timeOut:超时时间
  455. * 返回值:
  456. * 0成功,非0失败
  457. */
  458. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CreateLocalPortForwardService(HTyphoonHandle pyHandle, const char *localIp, int localPort, const char *remoteIp, int remotePort, uint32_t timeOut);
  459. /*
  460. * 设置传输模式
  461. * 参数:
  462. * pyHandle:连接句柄
  463. * TransferMode:设置连接的传输模式,0代表文件传输模式, 1代表实时传输模式
  464. * 返回值:
  465. * 设置的模式数值
  466. * 说明:
  467. * 该方法设置后需要重置连接才会生效
  468. */
  469. TYPHOON_SOCKS_EXTERN uint8_t TyphoonMultiProxy_SetTransferMode(HTyphoonHandle pyHandle, uint8_t TransferMode);
  470. /*
  471. * 创建远端socks5 代理
  472. * 参数:
  473. * pyHandle:连接句柄
  474. * pServerIp:远端监听的ip地址
  475. * serverPort:远端监听的端口
  476. * 返回值:
  477. * 小于等于0失败
  478. * 大于0成功
  479. */
  480. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CreateRemoteSocketService(HTyphoonHandle pyHandle, const char *pServerIp, uint16_t serverPort);
  481. /*
  482. * 创建远端http 代理
  483. * 参数:
  484. * pyHandle:连接句柄
  485. * pServerIp:远端监听的ip地址
  486. * serverPort:远端监听的端口
  487. * 返回值:
  488. * 小于等于0失败
  489. * 大于0成功
  490. */
  491. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CreateRemoteHttpService(HTyphoonHandle pyHandle, const char *pServerIp, uint16_t serverPort);
  492. /*
  493. * 创建远端端口前转
  494. * 参数:
  495. * pyHandle:连接句柄
  496. * pLocalIp:本地连接的ip地址
  497. * localPort:本地连接的端口
  498. * pServerIp:远端监听的ip地址
  499. * serverPort:远端监听的端口
  500. * 返回值:
  501. * 小于等于0失败
  502. * 大于0成功
  503. */
  504. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CreateRemotePortForwardService(HTyphoonHandle pyHandle,
  505. const char *pLocalIp, uint16_t localPort, const char *pServerIp, uint16_t serverPort);
  506. /*
  507. * 获取SDN ID
  508. * 参数:
  509. * 无
  510. * 返回值:
  511. * nodeId
  512. */
  513. TYPHOON_SOCKS_EXTERN uint64_t TyphoonMultiProxy_GetSdnNodeId();
  514. /*
  515. * sdnId 转换为 ip 和 端口
  516. * 参数:
  517. * ztsid:sdnId
  518. * ipv4:转换的ip地址
  519. * port:端口
  520. * 返回值:
  521. * 无
  522. */
  523. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_SDNId2IpPort(char * ztsid, char *ipv4, short *port);
  524. /*
  525. * 设置 http 服务的 fec 百分比
  526. * 参数:
  527. * pyHandle:连接句柄
  528. * fecPercent:fec百分比,单位万分之一
  529. * 返回值:
  530. * 不等于0失败
  531. * 等于0成功
  532. */
  533. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetHttpServiceFecPercent(HTyphoonHandle pyHandle, uint16_t fecPercent);
  534. /*
  535. * 设置http服务允许的地址
  536. * 参数:
  537. * pyHandle:连接句柄
  538. * ip:允许的ip地址
  539. * port:允许的端口
  540. * 返回值:
  541. * 非0失败
  542. * 等于0成功
  543. */
  544. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_AddHttpFirewallAllowAddress(HTyphoonHandle pyHandle, char* ip, int port);
  545. /*
  546. * 删除http服务允许的地址
  547. * 参数:
  548. * pyHandle:连接句柄
  549. * ip:允许的ip地址
  550. * port:允许的端口
  551. * 返回值:
  552. * 非0失败
  553. * 等于0成功
  554. */
  555. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_DelHttpFirewallAllowAddress(HTyphoonHandle pyHandle, char* ip, int port);
  556. /*
  557. * 设置多线程发送
  558. * 参数:
  559. * enable:1使能,0关闭
  560. * 返回值:
  561. * 0成功,非0失败
  562. */
  563. TYPHOON_SOCKS_EXTERN unsigned int TyphoonMultiProxy_SetMultiSender(unsigned int enable);
  564. /*
  565. * 退出Typhoon
  566. * 参数:
  567. * 无
  568. * 返回值:
  569. * 0成功,非0失败
  570. */
  571. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_ExitClient();
  572. /*
  573. * 关闭 Http 服务
  574. * 参数:
  575. * pyHandle:连接句柄
  576. * 返回值:
  577. * 0成功,非0失败
  578. */
  579. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CloseHttpService(HTyphoonHandle pyHandle);
  580. /*
  581. * 关闭 Http 服务
  582. * 参数:
  583. * pyHandle:连接句柄
  584. * 返回值:
  585. * 0成功,非0失败
  586. */
  587. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CloseHttpService(HTyphoonHandle pyHandle);
  588. /*
  589. * 检测是否是 p2p 连接
  590. * 参数:
  591. * pyHandle:连接句柄
  592. * 返回值:
  593. * 0 p2p 连接,1 普通连接,-1 连接句柄无效
  594. */
  595. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CheckIsP2p(HTyphoonHandle pyHandle);
  596. /*
  597. * 检测Http端口是否可用,只在移动端可用
  598. * 参数:
  599. * pyHandle:连接句柄
  600. * 返回值:
  601. * 0 不可用,1 可用, -1 句柄无效
  602. */
  603. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CheckHttpPartUsable(HTyphoonHandle pyHandle);
  604. #ifdef __cplusplus
  605. }
  606. #endif
  607. #endif