| | |
| | | |
| | | import cn.hutool.core.net.NetUtil; |
| | | import cn.hutool.http.HtmlUtil; |
| | | import cn.hutool.http.HttpUtil; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.ruoyi.common.core.config.RuoYiConfig; |
| | | import com.ruoyi.common.core.constant.Constants; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import lombok.AccessLevel; |
| | | import lombok.NoArgsConstructor; |
| | |
| | | @NoArgsConstructor(access = AccessLevel.PRIVATE) |
| | | public class AddressUtils { |
| | | |
| | | // 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) { |
| | | String address = UNKNOWN; |
| | | if (StringUtils.isBlank(ip)) { |
| | | return address; |
| | | return UNKNOWN; |
| | | } |
| | | // 内网不查询 |
| | | ip = "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : HtmlUtil.cleanHtmlTag(ip); |
| | | if (NetUtil.isInnerIP(ip)) { |
| | | return "内网IP"; |
| | | } |
| | | if (RuoYiConfig.isAddressEnabled()) { |
| | | try { |
| | | String rspStr = HttpUtil.createGet(IP_URL) |
| | | .body("ip=" + ip + "&json=true", Constants.GBK) |
| | | .execute() |
| | | .body(); |
| | | if (StringUtils.isEmpty(rspStr)) { |
| | | log.error("获取地理位置异常 {}", ip); |
| | | return UNKNOWN; |
| | | } |
| | | JSONObject obj = JSONUtil.parseObj(rspStr); |
| | | String region = obj.getStr("pro"); |
| | | String city = obj.getStr("city"); |
| | | return String.format("%s %s", region, city); |
| | | } catch (Exception e) { |
| | | log.error("获取地理位置异常 {}", ip); |
| | | } |
| | | } |
| | | return UNKNOWN; |
| | | return RegionUtils.getCityInfo(ip); |
| | | } |
| | | } |