12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package blacklist
- import (
- "encoding/json"
- "net/http"
- "strings"
- "imuslab.com/arozos/mod/common"
- "imuslab.com/arozos/mod/network"
- )
- /*
- Handler for blacklist module
- */
- func (bl *BlackList) HandleAddBannedIP(w http.ResponseWriter, r *http.Request) {
- ipRange, err := common.Mv(r, "iprange", true)
- if err != nil {
- common.SendErrorResponse(w, "Invalid ip range given")
- return
- }
- err = bl.Ban(ipRange)
- if err != nil {
- common.SendErrorResponse(w, err.Error())
- return
- }
- common.SendOK(w)
- }
- func (bl *BlackList) HandleRemoveBannedIP(w http.ResponseWriter, r *http.Request) {
- ipRange, err := common.Mv(r, "iprange", true)
- if err != nil {
- common.SendErrorResponse(w, "Invalid ip range given")
- return
- }
- err = bl.UnBan(ipRange)
- if err != nil {
- common.SendErrorResponse(w, err.Error())
- return
- }
- common.SendOK(w)
- }
- func (bl *BlackList) HandleSetBlacklistEnable(w http.ResponseWriter, r *http.Request) {
- enableMode, _ := common.Mv(r, "enable", false)
- if enableMode == "" {
- //Get the current blacklist status
- js, _ := json.Marshal(bl.Enabled)
- common.SendJSONResponse(w, string(js))
- return
- } else {
- if strings.ToLower(enableMode) == "true" {
- bl.Enabled = true
- } else if strings.ToLower(enableMode) == "false" {
- bl.Enabled = false
- } else {
- common.SendErrorResponse(w, "Invalid mode given")
- }
- }
- }
- func (bl *BlackList) HandleListBannedIPs(w http.ResponseWriter, r *http.Request) {
- bannedIpRanges := bl.ListBannedIpRanges()
- js, _ := json.Marshal(bannedIpRanges)
- common.SendJSONResponse(w, string(js))
- }
- func (bl *BlackList) CheckIsBannedByRequest(r *http.Request) bool {
- if bl.Enabled == false {
- //Blacklist not enabled. Always return not banned
- return false
- }
- //Get the IP address from the request header
- requestIP, err := network.GetIpFromRequest(r)
- if err != nil {
- return false
- }
- return bl.IsBanned(requestIP)
- }
|