add link export support for ssr
This commit is contained in:
@@ -19,6 +19,20 @@ func TestSSLink(t *testing.T) {
|
||||
fmt.Println(ss)
|
||||
}
|
||||
|
||||
func TestSSRLink(t *testing.T) {
|
||||
ssr, err := ParseSSRLink("ssr://MTcyLjEwNC4xNjEuNTQ6ODA5OTpvcmlnaW46YWVzLTI1Ni1jZmI6cGxhaW46WlVsWE1FUnVhelk1TkRVMFpUWnVVM2QxYzNCMk9VUnRVekl3TVhSUk1FUT0vP29iZnNwYXJhbT0mcHJvdG9wYXJhbT0mcmVtYXJrcz01Ny03NWFLWjVZV2FNakl6TGpFejVwYXc1WXFnNVoyaCZncm91cD01cGF3NVlxZzVaMmg=")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
fmt.Println(ssr)
|
||||
fmt.Println(ssr.Link())
|
||||
ssr, err = ParseSSRLink(ssr.Link())
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
fmt.Println(ssr)
|
||||
}
|
||||
|
||||
func TestTrojanLink(t *testing.T) {
|
||||
trojan, err := ParseTrojanLink("trojan://65474277@sqcu.hostmsu.ru:55551?allowinsecure=0&peer=mza.hkfq.xyz&mux=1&ws=0&wspath=&wshost=&ss=0&ssmethod=aes-128-gcm&sspasswd=&group=#%E9%A6%99%E6%B8%AFCN2-MZA%E8%8A%82%E7%82%B9-%E5%AE%BF%E8%BF%81%E8%81%94%E9%80%9A%E4%B8%AD%E8%BD%AC")
|
||||
if err != nil {
|
||||
|
||||
@@ -3,6 +3,7 @@ package proxy
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"net"
|
||||
"net/url"
|
||||
@@ -61,6 +62,18 @@ func (ssr ShadowsocksR) Clone() Proxy {
|
||||
return &ssr
|
||||
}
|
||||
|
||||
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))
|
||||
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()))
|
||||
return fmt.Sprintf("ssr://%s", payload)
|
||||
}
|
||||
|
||||
func ParseSSRLink(link string) (*ShadowsocksR, error) {
|
||||
if !strings.HasPrefix(link, "ssr") {
|
||||
return nil, ErrorNotSSRLink
|
||||
|
||||
Reference in New Issue
Block a user