auth.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package auth
  2. import (
  3. "encoding/json"
  4. "os"
  5. "path/filepath"
  6. "sync"
  7. "github.com/gravitl/netmaker/logger"
  8. "github.com/gravitl/netmaker/turnserver/config"
  9. "github.com/pion/turn/v2"
  10. )
  11. var (
  12. authMapLock = &sync.RWMutex{}
  13. HostMap = make(map[string]string)
  14. authBackUpFile = "auth.json"
  15. )
  16. func init() {
  17. os.MkdirAll("/etc/config", os.ModePerm)
  18. }
  19. func RegisterNewHostWithTurn(hostID, hostPass string) {
  20. authMapLock.Lock()
  21. HostMap[hostID] = string(turn.GenerateAuthKey(hostID, config.GetTurnHost(), hostPass))
  22. dumpCredsToFile()
  23. authMapLock.Unlock()
  24. }
  25. func UnRegisterNewHostWithTurn(hostID string) {
  26. authMapLock.Lock()
  27. delete(HostMap, hostID)
  28. dumpCredsToFile()
  29. authMapLock.Unlock()
  30. }
  31. func dumpCredsToFile() {
  32. d, err := json.MarshalIndent(HostMap, "", " ")
  33. if err != nil {
  34. logger.Log(0, "failed to dump creds to file: ", err.Error())
  35. return
  36. }
  37. err = os.WriteFile(filepath.Join("/etc/config", authBackUpFile), d, os.ModePerm)
  38. if err != nil {
  39. logger.Log(0, "failed to backup auth data: ", err.Error())
  40. }
  41. }