mirror of
https://github.com/tobychui/zoraxy.git
synced 2025-06-06 07:37:21 +02:00
103 lines
2.3 KiB
Go
103 lines
2.3 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
"imuslab.com/zoraxy/mod/utils"
|
|
)
|
|
|
|
/*
|
|
blacklist.go
|
|
|
|
This script file is added to extend the
|
|
reverse proxy function to include
|
|
banning a specific IP address or country code
|
|
*/
|
|
|
|
//List a of blacklisted ip address or country code
|
|
func handleListBlacklisted(w http.ResponseWriter, r *http.Request) {
|
|
bltype, err := utils.GetPara(r, "type")
|
|
if err != nil {
|
|
bltype = "country"
|
|
}
|
|
|
|
resulst := []string{}
|
|
if bltype == "country" {
|
|
resulst = geodbStore.GetAllBlacklistedCountryCode()
|
|
} else if bltype == "ip" {
|
|
resulst = geodbStore.GetAllBlacklistedIp()
|
|
}
|
|
|
|
js, _ := json.Marshal(resulst)
|
|
utils.SendJSONResponse(w, string(js))
|
|
|
|
}
|
|
|
|
func handleCountryBlacklistAdd(w http.ResponseWriter, r *http.Request) {
|
|
countryCode, err := utils.PostPara(r, "cc")
|
|
if err != nil {
|
|
utils.SendErrorResponse(w, "invalid or empty country code")
|
|
return
|
|
}
|
|
|
|
geodbStore.AddCountryCodeToBlackList(countryCode)
|
|
|
|
utils.SendOK(w)
|
|
}
|
|
|
|
func handleCountryBlacklistRemove(w http.ResponseWriter, r *http.Request) {
|
|
countryCode, err := utils.PostPara(r, "cc")
|
|
if err != nil {
|
|
utils.SendErrorResponse(w, "invalid or empty country code")
|
|
return
|
|
}
|
|
|
|
geodbStore.RemoveCountryCodeFromBlackList(countryCode)
|
|
|
|
utils.SendOK(w)
|
|
}
|
|
|
|
func handleIpBlacklistAdd(w http.ResponseWriter, r *http.Request) {
|
|
ipAddr, err := utils.PostPara(r, "ip")
|
|
if err != nil {
|
|
utils.SendErrorResponse(w, "invalid or empty ip address")
|
|
return
|
|
}
|
|
|
|
geodbStore.AddIPToBlackList(ipAddr)
|
|
}
|
|
|
|
func handleIpBlacklistRemove(w http.ResponseWriter, r *http.Request) {
|
|
ipAddr, err := utils.PostPara(r, "ip")
|
|
if err != nil {
|
|
utils.SendErrorResponse(w, "invalid or empty ip address")
|
|
return
|
|
}
|
|
|
|
geodbStore.RemoveIPFromBlackList(ipAddr)
|
|
|
|
utils.SendOK(w)
|
|
}
|
|
|
|
func handleBlacklistEnable(w http.ResponseWriter, r *http.Request) {
|
|
enable, err := utils.PostPara(r, "enable")
|
|
if err != nil {
|
|
//Return the current enabled state
|
|
currentEnabled := geodbStore.Enabled
|
|
js, _ := json.Marshal(currentEnabled)
|
|
utils.SendJSONResponse(w, string(js))
|
|
} else {
|
|
if enable == "true" {
|
|
geodbStore.ToggleBlacklist(true)
|
|
} else if enable == "false" {
|
|
geodbStore.ToggleBlacklist(false)
|
|
} else {
|
|
utils.SendErrorResponse(w, "invalid enable state: only true and false is accepted")
|
|
return
|
|
}
|
|
|
|
utils.SendOK(w)
|
|
}
|
|
}
|