mirror of
https://github.com/qtgolang/SunnyNet.git
synced 2026-08-30 22:11:29 -07:00
17 KiB
17 KiB
Sunny网络中间件 SDK API 参考
目录
SunnyNet核心类
创建和管理SunnyNet实例
CreateSunnyNet() int- 创建Sunny中间件对象ReleaseSunnyNet(SunnyContext int) bool- 释放SunnyNetSunnyNetStart(SunnyContext int) bool- 启动Sunny中间件SunnyNetClose(SunnyContext int) bool- 关闭停止指定Sunny中间件SunnyNetSetPort(SunnyContext, Port int) bool- 设置指定端口SunnyNetError(SunnyContext int) uintptr- 获取中间件启动时的错误信息
证书管理
SunnyNetSetCert(SunnyContext, CertificateManagerId int) bool- 设置自定义证书SunnyNetInstallCert(SunnyContext int) uintptr- 安装证书到Windows系统内ExportCert(SunnyContext int) uintptr- 导出已设置的证书
回调设置
SunnyNetSetCallback(SunnyContext, httpCallback, tcpCallback, wsCallback, udpCallback int) bool- 设置中间件回调地址
代理设置
SetGlobalProxy(SunnyContext int, ProxyAddress *C.char, outTime int) bool- 设置全局上游代理CompileProxyRegexp(SunnyContext int, Regexp *C.char) bool- 设置中间件上游代理使用规则
TCP/UDP控制
SunnyNetMustTcp(SunnyContext int, open bool)- 设置中间件是否开启强制走TCPSetMustTcpRegexp(SunnyContext int, Regexp *C.char, RulesAllow bool) bool- 设置强制走TCP规则DisableTCP(SunnyContext int, Disable bool) bool- 禁用TCPDisableUDP(SunnyContext int, Disable bool) bool- 禁用UDP
Socks5代理验证
SunnyNetSocket5AddUser(SunnyContext int, User, Pass *C.char) bool- 添加S5代理需要验证的用户名SunnyNetVerifyUser(SunnyContext int, open bool) bool- 开启身份验证模式SunnyNetSocket5DelUser(SunnyContext int, User *C.char) bool- 删除S5需要验证的用户名SunnyNetGetSocket5User(Theology int) uintptr- 获取授权的S5账号
进程代理
OpenDrive(SunnyContext int, devMode int) bool- 开始进程代理/打开驱动UnDrive(SunnyContext int)- 卸载驱动ProcessAddName(SunnyContext int, Name *C.char)- 进程代理添加进程名ProcessDelName(SunnyContext int, Name *C.char)- 进程代理删除进程名ProcessAddPid(SunnyContext, pid int)- 进程代理添加PIDProcessDelPid(SunnyContext, pid int)- 进程代理删除PIDProcessCancelAll(SunnyContext int)- 进程代理取消全部已设置的进程名ProcessALLName(SunnyContext int, open, StopNetwork bool)- 进程代理设置是否全部进程通过
网络设置
SetOutRouterIP(SunnyContext int, value *C.char) bool- 设置数据出口IPSetIeProxy(SunnyContext int) bool- 设置IE代理CancelIEProxy(SunnyContext int) bool- 取消设置的IE代理SetDnsServer(ServerName *C.char)- 设置Dns解析服务器
脚本支持
SetScriptCode(SunnyContext int, code uintptr, length int) uintptr- 加载用户的脚本代码SetScriptCall(SunnyContext int, LOG, SAVE uintptr)- 设置脚本代码的回调函数SetScriptPage(SunnyContext int, Page *C.char) uintptr- 设置脚本编辑器页面
HTTP/HTTPS处理
请求信息获取与修改
GetRequestProto(MessageId int) uintptr- 获取HTTPS请求的协议版本SetRequestUrl(MessageId int, URI *C.char) bool- 修改HTTP/S当前请求的URLGetRequestHeader(MessageId int, name *C.char) uintptr- 获取HTTP/S当前请求数据中的指定协议头SetRequestHeader(MessageId int, name, val *C.char)- 设置HTTP/S请求体中的协议头DelRequestHeader(MessageId int, name *C.char)- 删除HTTP/S请求数据中指定的协议头GetRequestAllHeader(MessageId int) uintptr- 获取HTTP/S当前请求数据全部协议头SetRequestALLHeader(MessageId int, val *C.char)- 设置HTTP/S请求体中的全部协议头GetRequestCookie(MessageId int, name *C.char) uintptr- 获取HTTP/S当前请求数据中指定的CookieGetRequestALLCookie(MessageId int) uintptr- 获取HTTP/S当前请求全部CookieSetRequestCookie(MessageId int, name, val *C.char)- 修改、设置HTTP/S当前请求数据中指定CookieSetRequestAllCookie(MessageId int, val *C.char)- 修改、设置HTTP/S当前请求数据中的全部CookieGetRequestBodyLen(MessageId int) int- 获取HTTP/S当前请求POST提交数据长度GetRequestBody(MessageId int) uintptr- 获取HTTP/S当前POST提交数据SetRequestData(MessageId int, data uintptr, dataLen int) bool- 设置、修改HTTP/S当前请求POST提交数据IsRequestRawBody(MessageId int) bool- 此请求是否为原始bodyRawRequestDataToFile(MessageId int, saveFileName uintptr, len int) bool- 获取HTTP/S当前POST提交数据原始Data
响应信息获取与修改
GetResponseProto(MessageId int) uintptr- 获取HTTPS响应的协议版本GetResponseHeader(MessageId int, name *C.char) uintptr- 获取HTTP/S当前返回数据中指定的协议头SetResponseHeader(MessageId int, name *C.char, val *C.char)- 修改、设置HTTP/S当前返回数据中的指定协议头DelResponseHeader(MessageId int, name *C.char)- 删除HTTP/S返回数据中指定的协议头GetResponseAllHeader(MessageId int) uintptr- 获取HTTP/S当前返回全部协议头SetResponseAllHeader(MessageId int, value *C.char)- 修改、设置HTTP/S当前返回数据中的全部协议头GetResponseBodyLen(MessageId int) int- 获取HTTP/S当前返回数据长度GetResponseBody(MessageId int) uintptr- 获取HTTP/S当前返回数据SetResponseData(MessageId int, data uintptr, dataLen int) bool- 设置、修改HTTP/S当前请求返回数据GetResponseStatusCode(MessageId int) int- 获取HTTP/S返回的状态码GetResponseStatus(MessageId int) uintptr- 获取HTTP/S返回的状态文本SetResponseStatus(MessageId, code int)- 修改HTTP/S返回的状态码
HTTP客户端
CreateHTTPClient() int- 创建HTTP客户端RemoveHTTPClient(Context int)- 释放HTTP客户端HTTPOpen(Context int, Method, URL *C.char)- HTTP客户端OpenHTTPSetHeader(Context int, name, value *C.char)- HTTP客户端设置协议头HTTPSetProxyIP(Context int, ProxyUrl *C.char) bool- HTTP客户端设置代理IPHTTPSetServerIP(Context int, ServerIP *C.char)- HTTP客户端设置真实连接IP地址HTTPSetTimeouts(Context int, t1 int)- HTTP客户端设置超时HTTPSendBin(Context int, body uintptr, bodyLength int)- HTTP客户端发送BodyHTTPGetHeads(Context int) uintptr- HTTP客户端返回响应全部HeadsHTTPGetHeader(Context int, name *C.char) uintptr- HTTP客户端返回响应HTTPGetHeaderHTTPGetRequestHeader(Context int) uintptr- HTTP客户端添加的全部协议头HTTPGetBodyLen(Context int) int- HTTP客户端返回响应长度HTTPGetBody(Context int) uintptr- HTTP客户端返回响应内容HTTPGetCode(Context int) int- HTTP客户端返回响应状态码HTTPSetCertManager(Context, CertManagerContext int) bool- HTTP客户端设置证书管理器HTTPSetRedirect(Context int, Redirect bool) bool- HTTP客户端设置重定向HTTPSetRandomTLS(Context int, RandomTLS bool) bool- HTTP客户端设置随机使用TLS指纹HTTPSetH2Config(Context int, config *C.char) bool- HTTP客户端设置HTTP2指纹
WebSocket处理
GetWebsocketBodyLen(MessageId int) int- 获取WebSocket消息长度GetWebsocketBody(MessageId int) uintptr- 获取WebSocket消息SetWebsocketBody(MessageId int, data uintptr, dataLen int) bool- 修改WebSocket消息SendWebsocketBody(Theology, MessageType int, data uintptr, dataLen int) bool- 主动向Websocket服务器发送消息SendWebsocketClientBody(Theology, MessageType int, data uintptr, dataLen int) bool- 主动向Websocket客户端发送消息CloseWebsocket(Theology int) bool- 主动关闭Websocket
TCP处理
SetTcpBody(MessageId, MsgType int, data uintptr, dataLen int) bool- 修改TCP消息数据SetTcpAgent(MessageId int, ProxyUrl *C.char, outTime int) bool- 给当前TCP连接设置代理TcpCloseClient(theology int) bool- 根据唯一ID关闭指定的TCP连接SetTcpConnectionIP(MessageId int, address *C.char) bool- 给指定的TCP连接修改目标连接地址TcpSendMsg(theology int, data uintptr, dataLen int) int- 指定的TCP连接模拟客户端向服务器端主动发送数据TcpSendMsgClient(theology int, data uintptr, dataLen int) int- 指定的TCP连接模拟服务器端向客户端主动发送数据
UDP处理
GetUdpData(MessageId int) uintptr- 获取UDP数据SetUdpData(MessageId int, val uintptr, valLen int) bool- 设置修改UDP数据UdpSendToClient(theology int, data uintptr, dataLen int) bool- 指定的UDP连接模拟服务器端向客户端主动发送数据UdpSendToServer(theology int, data uintptr, dataLen int) bool- 指定的UDP连接模拟客户端向服务器端主动发送数据
证书管理器
CreateCertificate() int- 创建证书管理器对象RemoveCertificate(Context int)- 释放证书管理器对象LoadX509Certificate(Context int, Host, CA, KEY *C.char) bool- 载入X509证书LoadX509KeyPair(Context int, CaPath, KeyPath *C.char) bool- 载入X509证书2LoadP12Certificate(Context int, Name, Password *C.char) bool- 载入p12证书SetInsecureSkipVerify(Context int, b bool) bool- 设置跳过主机验证SetServerName(Context int, name *C.char) bool- 设置ServerNameGetServerName(Context int) uintptr- 取ServerNameAddCertPoolPath(Context int, cer *C.char) bool- 设置信任的证书从文件AddCertPoolText(Context int, cer *C.char) bool- 设置信任的证书从文本SetCipherSuites(Context int, val *C.char) bool- 设置CipherSuitesAddClientAuth(Context, val int) bool- 设置ClientAuthCreateCA(Context int, Country, Organization, OrganizationalUnit, Province, CommonName, Locality *C.char, bits, NotAfter int) bool- 创建证书ExportCA(Context int) uintptr- 导出证书ExportKEY(Context int) uintptr- 导出私钥ExportPub(Context int) uintptr- 导出公钥ExportP12(Context int, path, pass *C.char) bool- 导出为P12GetCommonName(Context int) uintptr- 获取证书CommonName字段
其他工具函数
GetSunnyVersion() uintptr- 获取SunnyNet版本Free(ptr uintptr)- 释放指针SetHTTPRequestMaxUpdateLength(SunnyContext int, i int64) bool- 设置HTTP请求提交数据的最大长度RandomRequestCipherSuites(MessageId int) bool- 随机设置请求CipherSuitesSetRequestHTTP2Config(MessageId int, h2Config *C.char) bool- 设置HTTP 2.0请求指纹配置GetRequestClientIp(MessageId int) uintptr- 获取当前HTTP/S请求由哪个IP发起GetResponseServerAddress(MessageId int) uintptr- 获取HTTP/S相应的服务器地址SetRequestOutTime(MessageId int, times int)- 请求设置超时-毫秒GetMessageNote(MessageId int) uintptr- 获取请求中的注释BytesToInt(data uintptr, dataLen int) int- 将Go int的Bytes转为int
数据压缩/解压缩
GzipUnCompress(data uintptr, dataLen int) uintptr- Gzip解压缩GzipCompress(data uintptr, dataLen int) uintptr- Gzip压缩BrUnCompress(data uintptr, dataLen int) uintptr- br解压缩BrCompress(data uintptr, dataLen int) uintptr- br压缩BrotliCompress(data uintptr, dataLen int) uintptr- br压缩(别名)ZSTDDecompress(data uintptr, dataLen int) uintptr- ZSTD解压缩ZSTDCompress(data uintptr, dataLen int) uintptr- ZSTD压缩ZlibUnCompress(data uintptr, dataLen int) uintptr- Zlib解压缩ZlibCompress(data uintptr, dataLen int) uintptr- Zlib压缩DeflateUnCompress(data uintptr, dataLen int) uintptr- Deflate解压缩DeflateCompress(data uintptr, dataLen int) uintptr- Deflate压缩
图片处理
WebpToJpegBytes(data uintptr, dataLen int, SaveQuality int) uintptr- Webp图片转JEG图片字节数组WebpToPngBytes(data uintptr, dataLen int) uintptr- Webp图片转Png图片字节数组WebpToJpeg(webpPath, savePath *C.char, SaveQuality int) bool- Webp图片转JEG图片根据文件名WebpToPng(webpPath, savePath *C.char) bool- Webp图片转Png图片根据文件名
Protobuf处理
JsonToPB(bin uintptr, binLen int) uintptr- JSON格式的protobuf数据转为protobuf二进制数据PbToJson(bin uintptr, binLen int) uintptr- protobuf数据转为JSON格式
队列操作
CreateQueue(name *C.char)- 创建队列QueueIsEmpty(name *C.char) bool- 队列是否为空QueueRelease(name *C.char)- 清空销毁队列QueueLength(name *C.char) int- 取队列长度QueuePush(name *C.char, val uintptr, valLen int)- 加入队列QueuePull(name *C.char) uintptr- 队列弹出
TCP客户端
CreateSocketClient() int- 创建TCP客户端RemoveSocketClient(Context int)- 释放TCP客户端SocketClientDial(Context int, addr *C.char, call int, isTls, synchronous bool, ProxyUrl *C.char, CertificateConText int, OutTime int, OutRouterIP *C.char) bool- TCP客户端连接SocketClientReceive(Context, OutTimes int) uintptr- TCP客户端同步模式下接收数据SocketClientWrite(Context, OutTimes int, val uintptr, valLen int) int- TCP客户端发送数据SocketClientClose(Context int)- TCP客户端断开连接SocketClientSetBufferSize(Context, BufferSize int) bool- TCP客户端置缓冲区大小SocketClientGetErr(Context int) uintptr- TCP客户端取错误
WebSocket客户端
CreateWebsocket() int- 创建WebSocket客户端对象RemoveWebsocket(Context int)- 释放WebSocket客户端对象WebsocketDial(Context int, URL, Heads *C.char, call int, synchronous bool, ProxyUrl *C.char, CertificateConText, outTime int, OutRouterIP *C.char) bool- Websocket客户端连接WebsocketReceive(Context, OutTimes int) uintptr- Websocket客户端同步模式下接收数据WebsocketReadWrite(Context int, val uintptr, valLen int, messageType int) bool- Websocket客户端发送数据WebsocketClose(Context int)- Websocket客户端断开WebsocketHeartbeat(Context, HeartbeatTime, call int)- Websocket客户端心跳设置WebsocketGetErr(Context int) uintptr- Websocket客户端获取错误
Redis客户端
CreateRedis() int- 创建Redis对象RemoveRedis(Context int)- 释放Redis对象RedisDial(Context int, host, pass *C.char, db, PoolSize, MinIdleCons, DialTimeout, ReadTimeout, WriteTimeout, PoolTimeout, IdleCheckFrequency, IdleTimeout int, error uintptr) bool- Redis连接RedisSetBytes(Context int, key *C.char, val uintptr, valLen int, expr int) bool- Redis设置Bytes值RedisSet(Context int, key, val *C.char, expr int) bool- Redis设置值RedisSetNx(Context int, key, val *C.char, expr int) bool- Redis设置NXRedisExists(Context int, key *C.char) bool- Redis检查指定key是否存在RedisGetBytes(Context int, key *C.char) uintptr- Redis取Bytes值RedisGetStr(Context int, key *C.char) uintptr- Redis取文本值RedisDo(Context int, args *C.char, error uintptr) uintptr- Redis自定义执行和查询命令RedisGetInt(Context int, key *C.char) int64- Redis取整数值RedisGetKeys(Context int, key *C.char) uintptr- Redis取指定条件键名RedisDelete(Context int, key *C.char) bool- Redis删除RedisFlushDB(Context int)- Redis清空当前数据库RedisFlushAll(Context int)- Redis清空redis服务器RedisClose(Context int)- Redis关闭RedisSubscribe(Context int, scribe *C.char, call int, nc bool) bool- Redis订阅消息
Go Map操作
CreateKeys() int- GoMap创建RemoveKeys(KeysHandle int)- GoMap删除GoMapKeysDelete(KeysHandle int, name *C.char)- GoMap删除KeysRead(KeysHandle int, name *C.char) uintptr- GoMap读取字符串/字节数组KeysWrite(KeysHandle int, name *C.char, val uintptr, length int)- GoMap写字节数组KeysWriteFloat(KeysHandle int, name *C.char, val float64)- GoMap写浮点数KeysReadFloat(KeysHandle int, name *C.char) float64- GoMap读浮点数KeysWriteLong(KeysHandle int, name *C.char, val int64)- GoMap写长整数KeysReadLong(KeysHandle int, name *C.char) int64- GoMap读长整数KeysWriteInt(KeysHandle int, name *C.char, val int)- GoMap写整数KeysReadInt(KeysHandle int, name *C.char) int- GoMap读整数KeysEmpty(KeysHandle int)- GoMap清空KeysGetCount(KeysHandle int) int- GoMap取数量KeysGetJson(KeysHandle int) uintptr- GoMap转为JSON字符串KeysWriteStr(KeysHandle int, name *C.char, val uintptr, len int)- GoMap写字符串