Files
SunnyNet/src/public/constobj.go
2026-08-21 21:15:45 +08:00

208 lines
8.3 KiB
Go
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.
// Package public /*
/*
Package public
------------------------------------------------------------------------------------------------
程序所用到的所有公共常量
------------------------------------------------------------------------------------------------
*/
package public
import (
"fmt"
"math/rand"
"time"
"github.com/qtgolang/SunnyNet/src/http"
"github.com/qtgolang/SunnyNet/src/websocket"
)
const SunnyVersion = "2026-08-21"
const Information = `
------------------------------------------------------
欢迎使用 SunnyNet 网络中间件 - V` + SunnyVersion + `
本项目为开源项目
仅用于技术交流学习和研究的目的
请遵守法律法规,请勿用作任何非法用途
否则造成一切后果自负
若您下载并使用即视为您知晓并同意
------------------------------------------------------
Sunny开源项目网站https://esunny.vip
SunnyNet QQ交流群(一群)751406884
SunnyNet QQ交流群(二群)545120699
SunnyNet QQ交流群(三群)170902713
SunnyNet QQ交流群(四群)1070797457
QQ频道https://pd.qq.com/g/SunnyNetV5
------------------------------------------------------
`
func init() {
fmt.Println(Information)
}
// TCP请求相关
const (
SunnyNetMsgTypeTCPConnectOK = 0 //TCP连接成功
SunnyNetMsgTypeTCPClientSend = 1 //客户端发送数据
SunnyNetMsgTypeTCPClientReceive = 2 //客户端收到数据
SunnyNetMsgTypeTCPClose = 3 //连接关闭或连接失败
SunnyNetMsgTypeTCPAboutToConnect = 4 //TCP即将开始连接
)
// UDP请求相关
const (
SunnyNetUDPTypeClosed = 1 //关闭
SunnyNetUDPTypeSend = 2 //客户端发送数据
SunnyNetUDPTypeReceive = 3 //客户端收到数据
)
// WebSocket相关
const (
WebsocketConnectionOK = 1 //Websocket连接成功
WebsocketUserSend = 2 //Websocket发送数据
WebsocketServerSend = 3 //Websocket收到数据
WebsocketDisconnect = 4 //Websocket断开
)
// http/s 相关
const (
HttpSendRequest = 1 //http发送请求
HttpResponseOK = 2 //http接收完成
HttpRequestFail = 3 //http请求失败
)
const (
HttpRequestPrefix = "http" + "://"
HttpsRequestPrefix = "https://"
HttpMethodGET = "GET"
HttpMethodPOST = "POST"
HttpMethodPUT = "PUT"
HttpMethodPATCH = "PATCH"
HttpMethodTRACE = "TRACE"
HttpMethodDELETE = "DELETE"
HttpMethodHEAD = "HEAD"
HttpMethodOPTIONS = "OPTIONS"
HttpMethodCONNECT = "CONNECT"
HTTP2 = "PRI"
TunnelConnectionEstablished = "HTTP/1.1 200 Connection Established\r\n\r\n" // 通道连接建立
HttpResponseStatus100 = "HTTP/1.1 100 Continue\r\n\r\n" //HTTP POST 请求 未发送Body时,回执此消息让客户端继续发送Body
HttpDefaultPort = "80" //HTTP请求的默认端口
HttpsDefaultPort = "443" //HTTPS请求的默认端口
TagTcpAgreement = "TCP"
TagTcpSSLAgreement = "TLS-TCP"
TagMustTCP = "TCP-Must"
CertificateRequestManagerRulesSend = 1 //指定证书使用规则,发送使用
CertificateRequestManagerRulesSendAndReceive = 2 //指定证书使用规则,发送及解析使用
CertificateRequestManagerRulesReceive = 3 //指定证书使用规则,解析使用
SunnyNetRawRequestBody = http.SunnyNetRawRequestBody
SunnyNetRawRequestBodyLength = http.SunnyNetRawRequestBodyLength
SunnyNetRawBodySaveFilePath = http.SunnyNetRawBodySaveFilePath
Connect_Raw_Address = "_connect_address_" //连接原始地址
HTTPClientTags = "SunnyNetHTTPClient"
OutRouterIPKey = "_OutRouterIPKey_"
SunnyNetServerIpTags = websocket.SunnyNetServerIpTags
)
// 用户浏览器访问 以下地址 可以下载证书(要访问以下地址用户必须设置代理)
const (
CertDownloadHost1 = "sunny.io" //用户浏览器访问 http://sunny.io 可以下载证书(用户必须设置代理)
CertDownloadHost2 = "1.2.3.4" //用户浏览器访问 http://1.2.3.4 可以下载证书(用户必须设置代理)
/* 除了以上地址外还有软件运行时的IP地址
访问 软件运行时的IP地址 + 软件运行时的端口
例如: 127.0.0.1:8888
这种方式下载证书用户不用设置代理
*/
)
// 其他配置常量
const (
Space = " " //单个空格
NULL = "" //空字符串
Nulls = "NULL"
CRLF = "\r\n" //回车+换行
WaitingTime = 3 * time.Second //请求底层TCP连接维持多少时间
)
var NULLPtr = uintptr(0) //空字符串指针
// s5 相关常量
const (
Socks5Version = uint8(5)
Socks5AuthNone = uint8(0x00)
// Socks5AuthGSSAPI = uint8(0x01)
Socks5Auth = uint8(0x02)
// Socks5AuthUnAcceptable = uint8(0xFF)
Socks5CmdConnect = uint8(0x01)
Socks5CmdBind = uint8(0x02)
Socks5CmdUDP = uint8(0x03)
Socks5typeIpv4 = uint8(0x01)
Socks5typeDomainName = uint8(0x03)
Socks5typeIpv6 = uint8(0x04)
)
func init() {
rand.Seed(time.Now().UnixNano())
}
// Sunny中间件自带默认证书
const (
RootCa = `-----BEGIN CERTIFICATE-----
MIIDwjCCAqqgAwIBAgIRAQAAAAAAAAAAAAAAAAAAAAAwDQYJKoZIhvcNAQELBQAw
ajELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0JlaUppbmcxEDAOBgNVBAcTB0JlaUpp
bmcxETAPBgNVBAoTCFN1bm55TmV0MREwDwYDVQQLEwhTdW5ueU5ldDERMA8GA1UE
AxMIU3VubnlOZXQwIBcNMjIxMTA0MDcwNTM0WhgPMjEyMjEwMTEwNzA1MzRaMGox
CzAJBgNVBAYTAkNOMRAwDgYDVQQIEwdCZWlKaW5nMRAwDgYDVQQHEwdCZWlKaW5n
MREwDwYDVQQKEwhTdW5ueU5ldDERMA8GA1UECxMIU3VubnlOZXQxETAPBgNVBAMT
CFN1bm55TmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzU+hPfoE
y+4+VZVUhfb0wKF7YSr79GyxNCo8/l8i1gI3pbaxv4PF/W5xWdE3LHND6b8FVmot
pXqJcalx2FP48JdAKsmlzEZcl3MngHsKH7OPSvz8p76xvlHaFutVQjQFr8R3dX3B
m8yNy6sNcP+3IrxOEUYsMWc5/lVHTyTYkruMAvCZIYzcc5Y2YXzExENbfPxwzNQh
H/XsZlc4FGaZq6DV/0oMOXSSFOXcuJo2ULW/bOQho2jZ2zG1mf+Te3i8Psoanrrf
sMXiOjB6ZH4tKv+O9NjJJi5o64Ulh35lt4qTHwGQD6pMs3yJn/l+N7kv85amLJzi
fBSbJ1eYhjUpPQIDAQABo2EwXzAOBgNVHQ8BAf8EBAMCAoQwHQYDVR0lBBYwFAYI
KwYBBQUHAwIGCCsGAQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKC5
TwkvGBAx7xu1CyvX5chP7zOdMA0GCSqGSIb3DQEBCwUAA4IBAQDDAl162QjUsv7H
1+pn7MT/RDcqXNqBAUEc9FF6ozkRnLxdWBMLWxI8KHKm8JoBQB+TLiokSkenfMtA
7eRX7xzCBghuLi2XjMDUlaoVVKp+HNNoPSyn+UE/lUlKoCJCFgyt5p+bp9MP+YDm
pOnNjZTktyvwRj+Bgm1USzVY3IXlV+/H9la3vRi/G5n+yl3ZQMjwh6erbqwUzd6X
8j/L3BdoOkrOHzpodiAmp7Mf105Nh77EoUsh13TJy1CJLrIJzMDO1ryhzuVyxbJA
evcsWTxTr9qR/P09XImwOFmFKNimKC8IGwP/xVxqdH9WapsX6VZV5NbRG8vnqaM5
V6TbUzep
-----END CERTIFICATE-----
`
RootKey = `-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAzU+hPfoEy+4+VZVUhfb0wKF7YSr79GyxNCo8/l8i1gI3pbax
v4PF/W5xWdE3LHND6b8FVmotpXqJcalx2FP48JdAKsmlzEZcl3MngHsKH7OPSvz8
p76xvlHaFutVQjQFr8R3dX3Bm8yNy6sNcP+3IrxOEUYsMWc5/lVHTyTYkruMAvCZ
IYzcc5Y2YXzExENbfPxwzNQhH/XsZlc4FGaZq6DV/0oMOXSSFOXcuJo2ULW/bOQh
o2jZ2zG1mf+Te3i8PsoanrrfsMXiOjB6ZH4tKv+O9NjJJi5o64Ulh35lt4qTHwGQ
D6pMs3yJn/l+N7kv85amLJzifBSbJ1eYhjUpPQIDAQABAoIBAQC8e18Wq6GdqhE1
torLFYVqFpVTBggaQ3KG5kPqbmJnv89gZZFWtV2dJLgQ8b3KI+N0Anae94kCQrVN
UHaAV87Q6Lnyzf5Uwz+blg7sp4gKxGhHOmukf69jfndN1SwHRAT4cNAOX63PHwIJ
uPX1B/0TeXXd6+MEU7Ts5VM6uCPOx5N4OlpL+A/QoPV+Uspm5C3YcZOXjTTPAtUY
JgH2nCMbCRsVIBteJQXANlSsaJP7ZgRswYKVcolNeM/zsjoNjfQUiuJbhaM6rKIa
xxV4j0TxorZpp3ablUF6HCeWoG3wRalNxVFSLd7YTXwuRcKyp3NE9KpGc4dxDEqm
4F7TmIVNAoGBAOUxLZdfMFsUmCklUikifezYkyS1eF9wjvcFJaH07KaDRPgB6VRC
hcWM+Mn6flZKtUNG5DaykxZXsh+OO8HSK85DkMterpz83cAaTvG0QxvChUNHkWqB
5dwXSDSVqgP2tDm7CqyjC9vZY3sdCeE+dzvBlL6bGTsEFPggD7emJ2z3AoGBAOVT
XmZ1yq4a1lozr2GMehYdcj7KKD18mXOlVicyl++PvJG6Hmci3RlG2sKk3PSLlRCZ
1CDhkmrNRlVwzov8uSxZOHAO+bOSqc64oRMMcyAB3uVDNicqUL2cVWiVGvcOmTc0
SgRqSU/HASMxDtT9D5nX+y0t3SL1SYRe5iBIaNJrAoGBAN5UqYx5G7iPLthjSuN6
gTu8EGmA3MeAsj8wsAP/S35wQvxvJkDF020DRujwZZQiHtqnr4TcEFGROsrfuFpa
HoKWCqUuMSc7KYZMPx67pooMVighChCO+ENcFoBkWyxDKywBpOY5uKxJovZwAgCO
Dy5ZqIiKfpxAZnMY7wZRWVebAoGAQEbCwdMoMO6CwBuWf7ABFCvCtsiwyLMgy6I+
6JOstE/EWdAh72R9NjV+4WmWKNDqwhFrvJ+dC2Rn31DUA7adLEoBoJ8B7Awinjdv
pkgqCIGduQLCre2VXd/wrHSGb1LfLPLyABTOYZb0walhb99SPRulYj9lqQO5TGnQ
9KF3B+sCgYACexhvn8ZzN637bfjaE7qge/uJcPE3CDFXxk4iYcYj6Vyv/aEBL1fJ
DPxp+LrRqH4+9/GI5pKHZf3/MU1A2ea93QIo7SCRCL7+nCHZ6er4I+XFmpugd6wq
+6JLOUgK6K0YSrzNgheVM3HWxMqT9qgrOV0CX530ia1uWSQzamhCIg==
-----END RSA PRIVATE KEY-----
`
)