glider/proxy/ssr/ssr.go

49 lines
883 B
Go
Raw Normal View History

package ssr
2018-05-17 00:04:09 +08:00
import (
"net/url"
"github.com/nadoo/glider/common/log"
2018-05-17 00:04:09 +08:00
)
// SSR .
type SSR struct {
addr string
2018-05-17 00:04:09 +08:00
EncryptMethod string
EncryptPassword string
Obfs string
ObfsParam string
ObfsData interface{}
Protocol string
ProtocolParam string
ProtocolData interface{}
}
2018-07-04 16:55:45 +08:00
// NewSSR returns a shadowsocksr proxy, ssr://method:pass@host:port/query
func NewSSR(s string) (*SSR, error) {
u, err := url.Parse(s)
if err != nil {
log.F("parse err: %s", err)
return nil, err
}
addr := u.Host
2018-07-06 11:30:42 +08:00
method := u.User.Username()
pass, _ := u.User.Password()
p := &SSR{
2018-05-17 00:04:09 +08:00
addr: addr,
EncryptMethod: method,
EncryptPassword: pass,
}
2018-07-04 16:55:45 +08:00
query := u.Query()
p.Protocol = query.Get("protocol")
p.ProtocolParam = query.Get("protocol_param")
p.Obfs = query.Get("obfs")
p.ObfsParam = query.Get("obfs_param")
2018-05-17 00:04:09 +08:00
return p, nil
}