mc_add.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package main
  2. import (
  3. "net/http"
  4. "regexp"
  5. "strconv"
  6. "time"
  7. )
  8. //TODO: implement duplicate entry check.
  9. func AddBanIP(w http.ResponseWriter, r *http.Request) {
  10. IP, _ := mv(r, "ip", false)
  11. Created := currentTime()
  12. Source := "ArOZ Minecraft Terminal"
  13. Expires := "forever"
  14. Reason, _ := mv(r, "reason", false)
  15. if !Config.CheckDuplicateBannedIPs(IP) {
  16. Config.WriteBannedIP(IP, Created, Source, Expires, Reason)
  17. sendTextResponse(w, "OK")
  18. } else {
  19. sendTextResponse(w, "Duplicate Record")
  20. }
  21. }
  22. func AddBanPlayer(w http.ResponseWriter, r *http.Request) {
  23. UUID, _ := mv(r, "uuid", false)
  24. Name, _ := mv(r, "name", false)
  25. Created := currentTime()
  26. Source := "ArOZ Minecraft Terminal"
  27. Expires := "forever"
  28. Reason, _ := mv(r, "reason", false)
  29. if IsValidUUID(UUID) {
  30. if !Config.CheckDuplicateBannedPlayers(UUID, Name) {
  31. Config.WriteBannedPlayer(UUID, Name, Created, Source, Expires, Reason)
  32. sendTextResponse(w, "OK")
  33. } else {
  34. sendTextResponse(w, "Duplicate Record")
  35. }
  36. } else {
  37. sendTextResponse(w, "Incorrect UUID.")
  38. }
  39. }
  40. func AddOps(w http.ResponseWriter, r *http.Request) {
  41. UUID, _ := mv(r, "uuid", false)
  42. Name, _ := mv(r, "name", false)
  43. Level, _ := mv(r, "level", false)
  44. LevelI, _ := strconv.Atoi(Level)
  45. BypassesPlayerLimit, _ := mv(r, "bypass", false)
  46. BypassesPlayerLimitB, _ := strconv.ParseBool(BypassesPlayerLimit)
  47. if IsValidUUID(UUID) {
  48. if !Config.CheckDuplicateOps(UUID, Name) {
  49. Config.WriteOps(UUID, Name, LevelI, BypassesPlayerLimitB)
  50. sendTextResponse(w, "OK")
  51. } else {
  52. sendTextResponse(w, "Duplicate Record")
  53. }
  54. } else {
  55. sendTextResponse(w, "Incorrect UUID.")
  56. }
  57. }
  58. func AddWhitelist(w http.ResponseWriter, r *http.Request) {
  59. UUID, _ := mv(r, "uuid", false)
  60. Name, _ := mv(r, "name", false)
  61. if IsValidUUID(UUID) {
  62. if !Config.CheckDuplicateWhitelists(UUID, Name) {
  63. Config.WriteWhitelist(UUID, Name)
  64. sendTextResponse(w, "OK")
  65. } else {
  66. sendTextResponse(w, "Duplicate Record")
  67. }
  68. } else {
  69. sendTextResponse(w, "Incorrect UUID.")
  70. }
  71. }
  72. func currentTime() string {
  73. t := time.Now()
  74. return t.Format("2006-01-02 15:04:05 -0700")
  75. }
  76. //vaild UUID
  77. //https://stackoverflow.com/questions/25051675/how-to-validate-uuid-v4-in-go
  78. func IsValidUUID(uuid string) bool {
  79. r := regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[8|9|aA|bB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$")
  80. return r.MatchString(uuid)
  81. }