mc_add.go 2.3 KB

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