Compare commits

...

2 Commits

@ -82,6 +82,7 @@ func QueryIP(queryIp string) (country string, area string, err error) {
} }
} }
if offset <= 0 { if offset <= 0 {
err = errors.New("ip not found")
return return
} }
posM := offset + 4 posM := offset + 4
@ -91,14 +92,14 @@ func QueryIP(queryIp string) (country string, area string, err error) {
case redirectMode1: case redirectMode1:
posC := byte3ToUInt32(data[posM+1 : posM+4]) posC := byte3ToUInt32(data[posM+1 : posM+4])
mode = data[posC] mode = data[posC]
var cA uint32 = 0 posCA := posC
if mode == redirectMode2 { if mode == redirectMode2 {
cA = byte3ToUInt32(data[posC+1 : posC+4]) posCA = byte3ToUInt32(data[posC+1 : posC+4])
posC += 4 posC += 4
} }
for i := cA; i < dataLen; i++ { for i := posCA; i < dataLen; i++ {
if data[i] == 0 { if data[i] == 0 {
country = string(data[cA:i]) country = string(data[posCA:i])
break break
} }
} }
@ -107,19 +108,19 @@ func QueryIP(queryIp string) (country string, area string, err error) {
} }
areaPos = posC areaPos = posC
case redirectMode2: case redirectMode2:
cA := byte3ToUInt32(data[posM+1 : posM+4]) posCA := byte3ToUInt32(data[posM+1 : posM+4])
for i := cA; i < dataLen; i++ { for i := posCA; i < dataLen; i++ {
if data[i] == 0 { if data[i] == 0 {
country = string(data[cA:i]) country = string(data[posCA:i])
break break
} }
} }
areaPos = offset + 8 areaPos = offset + 8
default: default:
cA := offset + 4 posCA := offset + 4
for i := cA; i < dataLen; i++ { for i := posCA; i < dataLen; i++ {
if data[i] == 0 { if data[i] == 0 {
country = string(data[cA:i]) country = string(data[posCA:i])
break break
} }
} }