Kaynağa Gözat

try to fix ssr base64

zu1k 5 yıl önce
ebeveyn
işleme
49e1105763

+ 1 - 1
pkg/provider/ssrsub.go

@@ -17,5 +17,5 @@ func (sub SSRSub) Provide() string {
 	for _, p := range *sub.Proxies {
 		resultBuilder.WriteString(p.Link() + "\n")
 	}
-	return tool.Base64EncodeString(resultBuilder.String())
+	return tool.Base64EncodeString(resultBuilder.String(), false)
 }

+ 1 - 1
pkg/provider/vmesssub.go

@@ -17,5 +17,5 @@ func (sub VmessSub) Provide() string {
 	for _, p := range *sub.Proxies {
 		resultBuilder.WriteString(p.Link() + "\n")
 	}
-	return tool.Base64EncodeString(resultBuilder.String())
+	return tool.Base64EncodeString(resultBuilder.String(), false)
 }

+ 1 - 1
pkg/proxy/shadowsocks.go

@@ -68,7 +68,7 @@ func (ss Shadowsocks) Clone() Proxy {
 // https://shadowsocks.org/en/config/quick-guide.html
 func (ss Shadowsocks) Link() (link string) {
 	payload := fmt.Sprintf("%s:%s@%s:%d", ss.Cipher, ss.Password, ss.Server, ss.Port)
-	payload = tool.Base64EncodeString(payload)
+	payload = tool.Base64EncodeString(payload, false)
 	return fmt.Sprintf("ss://%s#%s", payload, ss.Name)
 }
 

+ 6 - 6
pkg/proxy/shadowsocksr.go

@@ -65,13 +65,13 @@ func (ssr ShadowsocksR) Clone() Proxy {
 // https://github.com/HMBSbige/ShadowsocksR-Windows/wiki/SSR-QRcode-scheme
 func (ssr ShadowsocksR) Link() (link string) {
 	payload := fmt.Sprintf("%s:%d:%s:%s:%s:%s",
-		ssr.Server, ssr.Port, ssr.Protocol, ssr.Cipher, ssr.Obfs, tool.Base64EncodeString(ssr.Password))
+		ssr.Server, ssr.Port, ssr.Protocol, ssr.Cipher, ssr.Obfs, tool.Base64EncodeString(ssr.Password, true))
 	query := url.Values{}
-	query.Add("obfsparam", tool.Base64EncodeString(ssr.ObfsParam))
-	query.Add("protoparam", tool.Base64EncodeString(ssr.ProtocolParam))
-	query.Add("remarks", tool.Base64EncodeString(ssr.Name))
-	query.Add("group", tool.Base64EncodeString("proxy.tgbot.co"))
-	payload = tool.Base64EncodeString(fmt.Sprintf("%s/?%s", payload, query.Encode()))
+	query.Add("obfsparam", tool.Base64EncodeString(ssr.ObfsParam, true))
+	query.Add("protoparam", tool.Base64EncodeString(ssr.ProtocolParam, true))
+	query.Add("remarks", tool.Base64EncodeString(ssr.Name, true))
+	query.Add("group", tool.Base64EncodeString("proxy.tgbot.co", true))
+	payload = tool.Base64EncodeString(fmt.Sprintf("%s/?%s", payload, query.Encode()), true)
 	return fmt.Sprintf("ssr://%s", payload)
 }
 

+ 4 - 1
pkg/tool/base64.go

@@ -27,7 +27,10 @@ func Base64DecodeString(src string) (dst string, err error) {
 	return
 }
 
-func Base64EncodeString(origin string) (result string) {
+func Base64EncodeString(origin string, urlsafe bool) (result string) {
+	if urlsafe {
+		return base64.URLEncoding.EncodeToString([]byte(origin))
+	}
 	return base64.StdEncoding.EncodeToString([]byte(origin))
 }