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