banPlayer.go 2.9 KB

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