From dcd65164677cf821b929c9f367dc385e00d0e685 Mon Sep 17 00:00:00 2001 From: dustoair <107600816+dustoair@users.noreply.github.com> Date: Fri, 22 Jul 2022 18:21:52 +0800 Subject: [PATCH] ip info mentanced --- main.go | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 79596d1..c25a02d 100644 --- a/main.go +++ b/main.go @@ -18,14 +18,46 @@ func main() { func IPHandle(w http.ResponseWriter, req *http.Request) { address := req.FormValue("address") - var ipInfo ip2region.IpInfo - if address == "" { + addressType := "" + ipDomain := "" + switch { + case address == "": + //没传address值 则拿请求ip来查询 addressReq, _ := util.GetIP(req) address = addressReq + addressType = "self" + case util.MatchIP(address): + //传了address值 是ip 则直接查询 + addressType = "ip" + default: + //传了address值 不是ip 则查询ip + ipAddress, err := util.GetIPByDomain(address) + if err != nil { + //提供非法域名 则拿请求ip来查询 + addressReq, _ := util.GetIP(req) + address = addressReq + addressType = "self" + } else { + //提供正确域名 则查询ip + ipDomain = ipAddress + address = ipAddress + addressType = "domain" + } } - + var ipInfo ip2region.IpInfo ipInfo, _ = ip2region.GetIPInfo(address, global.SearchType) - ipInfo.Domain = address + switch addressType { + case "ip": + ipInfo.IP = address + ipInfo.Domain = "" + case "domain": + ipInfo.IP = ipDomain + ipInfo.Domain = address + case "self": + ipInfo.IP = address + ipInfo.Domain = "" + } + res, _ := json.Marshal(ipInfo) fmt.Fprintln(w, string(res))