现在上级格式: YTpi#2.2.2.2:33080@1
说明:
YTpi 是经过base64编码的认证信息,比如是http(s)/socks原始认证信息a:b,用户是a密码是b,base64编码之后是:YTpi
如果是ss,那么a就是加密方法,b是密码,比如:aes-192-cfb:your_pass,base64编码之后是:YWVzLTE5Mi1jZmI6eW91cl9wYXNz
# 是间隔符号,如果有认证信息,必须有#,没有认证信息可以省略#.
2.2.2.2:33080 是上级地址
@1 是设置权重,可以参考手册权重部分.
39 lines
896 B
Go
39 lines
896 B
Go
package utils
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/base64"
|
|
"encoding/hex"
|
|
)
|
|
|
|
type CryptTool struct{}
|
|
|
|
var CryptTools = NewCryptTool()
|
|
|
|
func NewCryptTool() *CryptTool {
|
|
return &CryptTool{}
|
|
}
|
|
|
|
func (encrypt *CryptTool) Base64Encode(str string) string {
|
|
return string([]byte(base64.StdEncoding.EncodeToString([]byte(str))))
|
|
}
|
|
|
|
func (encrypt *CryptTool) Base64EncodeBytes(bytes []byte) []byte {
|
|
return []byte(base64.StdEncoding.EncodeToString(bytes))
|
|
}
|
|
|
|
func (encrypt *CryptTool) Base64Decode(str string) (string, error) {
|
|
by, err := base64.StdEncoding.DecodeString(str)
|
|
return string(by), err
|
|
}
|
|
|
|
func (encrypt *CryptTool) Base64DecodeBytes(str string) ([]byte, error) {
|
|
return base64.StdEncoding.DecodeString(str)
|
|
}
|
|
|
|
func (encrypt *CryptTool) MD5(str string) string {
|
|
hash := md5.New()
|
|
hash.Write([]byte(str))
|
|
return hex.EncodeToString(hash.Sum(nil))
|
|
}
|