util.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //go:build ee
  2. // +build ee
  3. package pro
  4. import (
  5. "encoding/base64"
  6. "github.com/gravitl/netmaker/models"
  7. "github.com/gravitl/netmaker/logic"
  8. )
  9. // base64encode - base64 encode helper function
  10. func base64encode(input []byte) string {
  11. return base64.StdEncoding.EncodeToString(input)
  12. }
  13. // base64decode - base64 decode helper function
  14. func base64decode(input string) []byte {
  15. bytes, err := base64.StdEncoding.DecodeString(input)
  16. if err != nil {
  17. return nil
  18. }
  19. return bytes
  20. }
  21. func getCurrentServerUsage() (limits Usage) {
  22. limits.SetDefaults()
  23. hosts, hErr := logic.GetAllHostsWithStatus(models.OnlineSt)
  24. if hErr == nil {
  25. limits.Hosts = len(hosts)
  26. }
  27. clients, cErr := logic.GetAllExtClientsWithStatus(models.OnlineSt)
  28. if cErr == nil {
  29. limits.Clients = len(clients)
  30. }
  31. users, err := logic.GetUsers()
  32. if err == nil {
  33. limits.Users = len(users)
  34. }
  35. networks, err := logic.GetNetworks()
  36. if err == nil {
  37. limits.Networks = len(networks)
  38. }
  39. // TODO this part bellow can be optimized to get nodes just once
  40. ingresses, err := logic.GetAllIngresses()
  41. if err == nil {
  42. limits.Ingresses = len(ingresses)
  43. }
  44. egresses, err := logic.GetAllEgresses()
  45. if err == nil {
  46. limits.Egresses = len(egresses)
  47. }
  48. relays, err := logic.GetRelays()
  49. if err == nil {
  50. limits.Relays = len(relays)
  51. }
  52. gateways, err := logic.GetInternetGateways()
  53. if err == nil {
  54. limits.InternetGateways = len(gateways)
  55. }
  56. failovers, err := logic.GetAllFailOvers()
  57. if err == nil {
  58. limits.FailOvers = len(failovers)
  59. }
  60. return
  61. }