new feature multi user auth with socks5

pull/208/head
zhangwei 2019-09-12 22:54:53 +08:00
parent a05995fba5
commit 11d185ad59
4 changed files with 26 additions and 26 deletions

View File

@ -488,7 +488,7 @@ loop:
tl.Password = t.Password tl.Password = t.Password
tl.LocalPath = t.LocalPath tl.LocalPath = t.LocalPath
tl.StripPre = t.StripPre tl.StripPre = t.StripPre
tl.MultiUser = t.MultiUser tl.MultiAccount = t.MultiAccount
if !client.HasTunnel(tl) { if !client.HasTunnel(tl) {
if err := file.GetDb().NewTask(tl); err != nil { if err := file.GetDb().NewTask(tl); err != nil {
logs.Notice("Add task error ", err.Error()) logs.Notice("Add task error ", err.Error())

View File

@ -239,15 +239,15 @@ func dealTunnel(s string) *file.Tunnel {
t.LocalPath = item[1] t.LocalPath = item[1]
case "strip_pre": case "strip_pre":
t.StripPre = item[1] t.StripPre = item[1]
case "multi_user": case "multi_account":
t.MultiUser = new(file.MultiUser) t.MultiAccount = &file.MultiAccount{}
if b, err := common.ReadAllFromFile(item[1]); err != nil { if b, err := common.ReadAllFromFile(item[1]); err != nil {
panic(err) panic(err)
} else { } else {
if content, err := common.ParseStr(string(b)); err != nil { if content, err := common.ParseStr(string(b)); err != nil {
panic(err) panic(err)
} else { } else {
t.MultiUser.UserMap = dealMultiUser(content) t.MultiAccount.AccountMap = dealMultiUser(content)
} }
} }
} }

View File

@ -140,7 +140,7 @@ type Tunnel struct {
LocalPath string LocalPath string
StripPre string StripPre string
Target *Target Target *Target
MultiUser *MultiUser MultiAccount *MultiAccount
Health Health
sync.RWMutex sync.RWMutex
} }
@ -185,8 +185,8 @@ type Target struct {
sync.RWMutex sync.RWMutex
} }
type MultiUser struct { type MultiAccount struct {
UserMap map[string]string // multi user and pwd AccountMap map[string]string // multi account and pwd
} }
func (s *Target) GetRandomTarget() (string, error) { func (s *Target) GetRandomTarget() (string, error) {

View File

@ -199,7 +199,7 @@ func (s *Sock5ModeServer) handleConn(c net.Conn) {
c.Close() c.Close()
return return
} }
if (s.task.Client.Cnf.U != "" && s.task.Client.Cnf.P != "") || (s.task.MultiUser != nil && len(s.task.MultiUser.UserMap) > 0) { if (s.task.Client.Cnf.U != "" && s.task.Client.Cnf.P != "") || (s.task.MultiAccount != nil && len(s.task.MultiAccount.AccountMap) > 0) {
buf[1] = UserPassAuth buf[1] = UserPassAuth
c.Write(buf) c.Write(buf)
if err := s.Auth(c); err != nil { if err := s.Auth(c); err != nil {
@ -238,11 +238,11 @@ func (s *Sock5ModeServer) Auth(c net.Conn) error {
} }
var U, P string var U, P string
if s.task.MultiUser != nil { if s.task.MultiAccount != nil {
// enable multi user auth // enable multi user auth
U = string(user) U = string(user)
var ok bool var ok bool
P, ok = s.task.MultiUser.UserMap[U] P, ok = s.task.MultiAccount.AccountMap[U]
if !ok { if !ok {
return errors.New("验证不通过") return errors.New("验证不通过")
} }