whitelist.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package config
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io/ioutil"
  6. "os"
  7. "strings"
  8. )
  9. func initWhitelist(serverFolder string) Whitelist {
  10. jsonFile, err := os.Open(serverFolder + "whitelist.json")
  11. if err != nil {
  12. fmt.Println(err)
  13. }
  14. byte, _ := ioutil.ReadAll(jsonFile)
  15. var dataArray Whitelist
  16. json.Unmarshal(byte, &dataArray)
  17. return dataArray
  18. }
  19. //ReadAllWhitelists is exported function
  20. func (mch *Handler) ReadAllWhitelists() Whitelist {
  21. return mch.whitelists
  22. }
  23. //WriteWhitelist is exported function
  24. func (mch *Handler) WriteWhitelist(UUID string, Name string) bool {
  25. mch.ReadAllWhitelists()
  26. newItem := Whitelist{}
  27. newItem = append(newItem, struct {
  28. UUID string `json:"uuid"`
  29. Name string `json:"name"`
  30. }{UUID, Name})
  31. mch.whitelists = append(mch.whitelists, newItem...)
  32. mch.SaveAllWhitelists()
  33. return true
  34. }
  35. //ReadWhitelist is exported function
  36. func (mch *Handler) ReadWhitelist(search string, field string) Whitelist {
  37. var list Whitelist
  38. for _, item := range mch.whitelists {
  39. fieldValue := ""
  40. switch strings.ToLower(field) {
  41. case "uuid":
  42. fieldValue = item.UUID
  43. case "name":
  44. fieldValue = item.Name
  45. default:
  46. fieldValue = ""
  47. }
  48. if fieldValue == search {
  49. list = append(list, item)
  50. }
  51. }
  52. return list
  53. }
  54. //RemoveWhitelist is exported function
  55. func (mch *Handler) RemoveWhitelist(search string, field string) bool {
  56. mch.ReadAllWhitelists()
  57. for i, item := range mch.whitelists {
  58. fieldValue := ""
  59. switch strings.ToLower(field) {
  60. case "uuid":
  61. fieldValue = item.UUID
  62. case "name":
  63. fieldValue = item.Name
  64. default:
  65. fieldValue = ""
  66. }
  67. if fieldValue == search {
  68. if len(mch.whitelists)-1 != i {
  69. mch.whitelists = append(mch.whitelists[:i], mch.whitelists[i+1:]...)
  70. } else {
  71. // if it is the last item, just remove it
  72. mch.whitelists = mch.whitelists[:i]
  73. }
  74. }
  75. }
  76. mch.SaveAllWhitelists()
  77. return true
  78. }
  79. //SaveAllWhitelists is exported function
  80. func (mch *Handler) SaveAllWhitelists() bool {
  81. JSON, _ := json.Marshal(mch.whitelists)
  82. err := ioutil.WriteFile(mch.serverFolder+"/whitelist.json", JSON, 0777)
  83. if err != nil {
  84. fmt.Println(err)
  85. }
  86. return true
  87. }
  88. //CheckDuplicateWhitelists is exported function
  89. func (mch *Handler) CheckDuplicateWhitelists(uuid string, name string) bool {
  90. for _, item := range mch.whitelists {
  91. if item.UUID == uuid {
  92. return true
  93. }
  94. if item.Name == name {
  95. return true
  96. }
  97. }
  98. return false
  99. }