You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.6 KiB
55 lines
1.6 KiB
package com.ruoyi.common.utils.ip; |
|
|
|
import org.slf4j.Logger; |
|
import org.slf4j.LoggerFactory; |
|
import com.alibaba.fastjson.JSONObject; |
|
import com.ruoyi.common.config.RuoYiConfig; |
|
import com.ruoyi.common.constant.Constants; |
|
import com.ruoyi.common.utils.StringUtils; |
|
import com.ruoyi.common.utils.http.HttpUtils; |
|
|
|
/** |
|
* 获取地址类 |
|
* |
|
* @author ruoyi |
|
*/ |
|
public class AddressUtils |
|
{ |
|
private static final Logger log = LoggerFactory.getLogger(AddressUtils.class); |
|
|
|
// IP地址查询 |
|
public static final String IP_URL = "http://whois.pconline.com.cn/ipJson.jsp"; |
|
|
|
// 未知地址 |
|
public static final String UNKNOWN = "XX XX"; |
|
|
|
public static String getRealAddressByIP(String ip) |
|
{ |
|
// 内网不查询 |
|
if (IpUtils.internalIp(ip)) |
|
{ |
|
return "内网IP"; |
|
} |
|
if (RuoYiConfig.isAddressEnabled()) |
|
{ |
|
try |
|
{ |
|
String rspStr = HttpUtils.sendGet(IP_URL, "ip=" + ip + "&json=true", Constants.GBK); |
|
if (StringUtils.isEmpty(rspStr)) |
|
{ |
|
log.error("获取地理位置异常 {}", ip); |
|
return UNKNOWN; |
|
} |
|
JSONObject obj = JSONObject.parseObject(rspStr); |
|
String region = obj.getString("pro"); |
|
String city = obj.getString("city"); |
|
return String.format("%s %s", region, city); |
|
} |
|
catch (Exception e) |
|
{ |
|
log.error("获取地理位置异常 {}", ip); |
|
} |
|
} |
|
return UNKNOWN; |
|
} |
|
}
|
|
|