123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package auth
- import (
- "encoding/base64"
- "encoding/json"
- "os"
- "path/filepath"
- "sync"
- "github.com/gravitl/netmaker/logger"
- "github.com/gravitl/netmaker/turnserver/config"
- "github.com/pion/turn/v2"
- )
- var (
- authMapLock = &sync.RWMutex{}
- HostMap = make(map[string]string)
- authBackUpFile = "auth.json"
- backUpFilePath = filepath.Join("/etc/config", authBackUpFile)
- )
- func init() {
- os.MkdirAll("/etc/config", os.ModePerm)
- loadCredsFromFile()
- }
- func RegisterNewHostWithTurn(hostID, hostPass string) {
- authMapLock.Lock()
- HostMap[hostID] = base64.StdEncoding.EncodeToString(turn.GenerateAuthKey(hostID, config.GetTurnHost(), hostPass))
- dumpCredsToFile()
- authMapLock.Unlock()
- }
- func UnRegisterNewHostWithTurn(hostID string) {
- authMapLock.Lock()
- delete(HostMap, hostID)
- dumpCredsToFile()
- authMapLock.Unlock()
- }
- func dumpCredsToFile() {
- d, err := json.MarshalIndent(HostMap, "", " ")
- if err != nil {
- logger.Log(0, "failed to dump creds to file: ", err.Error())
- return
- }
- err = os.WriteFile(backUpFilePath, d, os.ModePerm)
- if err != nil {
- logger.Log(0, "failed to backup auth data: ", err.Error())
- }
- }
- func loadCredsFromFile() error {
- d, err := os.ReadFile(backUpFilePath)
- if err != nil {
- return err
- }
- return json.Unmarshal(d, &HostMap)
- }
|