update cmd

This commit is contained in:
ginuerzh
2021-11-22 23:57:07 +08:00
parent fa8375f763
commit ece51cb0b8
18 changed files with 135 additions and 80 deletions

View File

@ -16,16 +16,16 @@ type metadata struct {
func (h *httpHandler) parseMetadata(md md.Metadata) error {
const (
proxyAgentKey = "proxyAgent"
authsKey = "auths"
proxyAgent = "proxyAgent"
users = "users"
probeResistKey = "probeResist"
knockKey = "knock"
knock = "knock"
retryCount = "retry"
)
h.md.proxyAgent = md.GetString(proxyAgentKey)
h.md.proxyAgent = md.GetString(proxyAgent)
if v, _ := md.Get(authsKey).([]interface{}); len(v) > 0 {
if v, _ := md.Get(users).([]interface{}); len(v) > 0 {
authenticator := auth.NewLocalAuthenticator(nil)
for _, auth := range v {
if s, _ := auth.(string); s != "" {
@ -45,7 +45,7 @@ func (h *httpHandler) parseMetadata(md md.Metadata) error {
h.md.probeResist = &probeResist{
Type: ss[0],
Value: ss[1],
Knock: md.GetString(knockKey),
Knock: md.GetString(knock),
}
}
}

View File

@ -89,8 +89,8 @@ func (h *relayHandler) Handle(ctx context.Context, conn net.Conn) {
feature := f.(*relay.UserAuthFeature)
user, pass = feature.Username, feature.Password
}
if f.Type() == relay.FeatureTargetAddr {
feature := f.(*relay.TargetAddrFeature)
if f.Type() == relay.FeatureAddr {
feature := f.(*relay.AddrFeature)
target = net.JoinHostPort(feature.Host, strconv.Itoa(int(feature.Port)))
}
}

View File

@ -16,12 +16,12 @@ type metadata struct {
func (h *relayHandler) parseMetadata(md md.Metadata) (err error) {
const (
authsKey = "auths"
users = "users"
readTimeout = "readTimeout"
retryCount = "retry"
)
if v, _ := md.Get(authsKey).([]interface{}); len(v) > 0 {
if v, _ := md.Get(users).([]interface{}); len(v) > 0 {
authenticator := auth.NewLocalAuthenticator(nil)
for _, auth := range v {
if s, _ := auth.(string); s != "" {

View File

@ -15,12 +15,12 @@ type metadata struct {
func (h *socks4Handler) parseMetadata(md md.Metadata) (err error) {
const (
authsKey = "auths"
users = "users"
readTimeout = "readTimeout"
retryCount = "retry"
)
if v, _ := md.Get(authsKey).([]interface{}); len(v) > 0 {
if v, _ := md.Get(users).([]interface{}); len(v) > 0 {
authenticator := auth.NewLocalAuthenticator(nil)
for _, auth := range v {
if v, _ := auth.(string); v != "" {

View File

@ -28,7 +28,7 @@ func (h *socks5Handler) parseMetadata(md md.Metadata) error {
certFile = "certFile"
keyFile = "keyFile"
caFile = "caFile"
authsKey = "auths"
users = "users"
readTimeout = "readTimeout"
timeout = "timeout"
retryCount = "retry"
@ -49,7 +49,7 @@ func (h *socks5Handler) parseMetadata(md md.Metadata) error {
h.logger.Warn("parse tls config: ", err)
}
if v, _ := md.Get(authsKey).([]interface{}); len(v) > 0 {
if v, _ := md.Get(users).([]interface{}); len(v) > 0 {
authenticator := auth.NewLocalAuthenticator(nil)
for _, auth := range v {
if s, _ := auth.(string); s != "" {

View File

@ -1,6 +1,7 @@
package ss
import (
"strings"
"time"
"github.com/go-gost/gost/pkg/common/util/ss"
@ -16,18 +17,27 @@ type metadata struct {
func (h *ssHandler) parseMetadata(md md.Metadata) (err error) {
const (
method = "method"
password = "password"
users = "users"
key = "key"
readTimeout = "readTimeout"
retryCount = "retry"
)
h.md.cipher, err = ss.ShadowCipher(
md.GetString(method),
md.GetString(password),
md.GetString(key),
)
var method, password string
if v, _ := md.Get(users).([]interface{}); len(v) > 0 {
h.logger.Info(v)
for _, auth := range v {
if s, _ := auth.(string); s != "" {
ss := strings.SplitN(s, ":", 2)
if len(ss) == 1 {
method = ss[0]
} else {
method, password = ss[0], ss[1]
}
}
}
}
h.md.cipher, err = ss.ShadowCipher(method, password, md.GetString(key))
if err != nil {
return
}

View File

@ -1,6 +1,7 @@
package ss
import (
"strings"
"time"
"github.com/go-gost/gost/pkg/common/util/ss"
@ -17,19 +18,27 @@ type metadata struct {
func (h *ssuHandler) parseMetadata(md md.Metadata) (err error) {
const (
method = "method"
password = "password"
users = "users"
key = "key"
readTimeout = "readTimeout"
retryCount = "retry"
bufferSize = "bufferSize"
)
h.md.cipher, err = ss.ShadowCipher(
md.GetString(method),
md.GetString(password),
md.GetString(key),
)
var method, password string
if v, _ := md.Get(users).([]interface{}); len(v) > 0 {
for _, auth := range v {
if s, _ := auth.(string); s != "" {
ss := strings.SplitN(s, ":", 2)
if len(ss) == 1 {
method = ss[0]
} else {
method, password = ss[0], ss[1]
}
}
}
}
h.md.cipher, err = ss.ShadowCipher(method, password, md.GetString(key))
if err != nil {
return
}