mirror of
https://github.com/SagerNet/sing-box.git
synced 2026-04-11 17:47:20 +10:00
30 lines
592 B
Go
30 lines
592 B
Go
package ccm
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/sagernet/sing-box/option"
|
|
)
|
|
|
|
type UserManager struct {
|
|
accessMutex sync.RWMutex
|
|
tokenMap map[string]string
|
|
}
|
|
|
|
func (m *UserManager) UpdateUsers(users []option.CCMUser) {
|
|
m.accessMutex.Lock()
|
|
defer m.accessMutex.Unlock()
|
|
tokenMap := make(map[string]string, len(users))
|
|
for _, user := range users {
|
|
tokenMap[user.Token] = user.Name
|
|
}
|
|
m.tokenMap = tokenMap
|
|
}
|
|
|
|
func (m *UserManager) Authenticate(token string) (string, bool) {
|
|
m.accessMutex.RLock()
|
|
username, found := m.tokenMap[token]
|
|
m.accessMutex.RUnlock()
|
|
return username, found
|
|
}
|