handler.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package blacklist
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "strings"
  6. "imuslab.com/arozos/mod/common"
  7. "imuslab.com/arozos/mod/network"
  8. )
  9. /*
  10. Handler for blacklist module
  11. */
  12. func (bl *BlackList) HandleAddBannedIP(w http.ResponseWriter, r *http.Request) {
  13. ipRange, err := common.Mv(r, "iprange", true)
  14. if err != nil {
  15. common.SendErrorResponse(w, "Invalid ip range given")
  16. return
  17. }
  18. err = bl.Ban(ipRange)
  19. if err != nil {
  20. common.SendErrorResponse(w, err.Error())
  21. return
  22. }
  23. common.SendOK(w)
  24. }
  25. func (bl *BlackList) HandleRemoveBannedIP(w http.ResponseWriter, r *http.Request) {
  26. ipRange, err := common.Mv(r, "iprange", true)
  27. if err != nil {
  28. common.SendErrorResponse(w, "Invalid ip range given")
  29. return
  30. }
  31. err = bl.UnBan(ipRange)
  32. if err != nil {
  33. common.SendErrorResponse(w, err.Error())
  34. return
  35. }
  36. common.SendOK(w)
  37. }
  38. func (bl *BlackList) HandleSetBlacklistEnable(w http.ResponseWriter, r *http.Request) {
  39. enableMode, _ := common.Mv(r, "enable", true)
  40. if enableMode == "" {
  41. //Get the current blacklist status
  42. js, _ := json.Marshal(bl.Enabled)
  43. common.SendJSONResponse(w, string(js))
  44. return
  45. } else {
  46. if strings.ToLower(enableMode) == "true" {
  47. bl.Enabled = true
  48. bl.database.Write("ipblacklist", "enable", true)
  49. common.SendOK(w)
  50. } else if strings.ToLower(enableMode) == "false" {
  51. bl.Enabled = false
  52. bl.database.Write("ipblacklist", "enable", false)
  53. common.SendOK(w)
  54. } else {
  55. common.SendErrorResponse(w, "Invalid mode given")
  56. }
  57. }
  58. }
  59. func (bl *BlackList) HandleListBannedIPs(w http.ResponseWriter, r *http.Request) {
  60. bannedIpRanges := bl.ListBannedIpRanges()
  61. js, _ := json.Marshal(bannedIpRanges)
  62. common.SendJSONResponse(w, string(js))
  63. }
  64. func (bl *BlackList) CheckIsBannedByRequest(r *http.Request) bool {
  65. if bl.Enabled == false {
  66. //Blacklist not enabled. Always return not banned
  67. return false
  68. }
  69. //Get the IP address from the request header
  70. requestIP, err := network.GetIpFromRequest(r)
  71. if err != nil {
  72. return false
  73. }
  74. return bl.IsBanned(requestIP)
  75. }