handler.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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", false)
  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. } else if strings.ToLower(enableMode) == "false" {
  49. bl.Enabled = false
  50. } else {
  51. common.SendErrorResponse(w, "Invalid mode given")
  52. }
  53. }
  54. }
  55. func (bl *BlackList) HandleListBannedIPs(w http.ResponseWriter, r *http.Request) {
  56. bannedIpRanges := bl.ListBannedIpRanges()
  57. js, _ := json.Marshal(bannedIpRanges)
  58. common.SendJSONResponse(w, string(js))
  59. }
  60. func (bl *BlackList) CheckIsBannedByRequest(r *http.Request) bool {
  61. if bl.Enabled == false {
  62. //Blacklist not enabled. Always return not banned
  63. return false
  64. }
  65. //Get the IP address from the request header
  66. requestIP, err := network.GetIpFromRequest(r)
  67. if err != nil {
  68. return false
  69. }
  70. return bl.IsBanned(requestIP)
  71. }