mirror of
https://github.com/ehang-io/nps.git
synced 2025-08-31 17:56:56 +00:00
new feature multi user auth with socks5
This commit is contained in:
@@ -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.Client.Cnf.MultiUser && len(s.task.Client.Cnf.MultiUserMap) > 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.Client.Cnf.MultiUser {
|
||||
// enable multi user auth
|
||||
U = string(user)
|
||||
var ok bool
|
||||
P, ok = s.task.Client.Cnf.MultiUserMap[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
|
||||
}
|
||||
|
Reference in New Issue
Block a user