💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
``` /** * @author 张跃帅 * @Description: 根据ip地址定位-工具 * @date 2020/08/12 */ @Slf4j public class IpUtil { /** * ip查询器接口 */ private static final Ip2regionSearcher ipSearchApi = SpringUtil.getBean(Ip2regionSearcher.class); /** * 默认内网ip */ private static final String LOCAL_IP = "127.0.0.1"; /** * 本地远程主机 */ private static final String LOCAL_REMOTE_HOST = "0:0:0:0:0:0:0:1"; /** * 获取-客户端ip */ public static String getIp(HttpServletRequest request) { // 判断 if (ObjectUtil.isEmpty(request)) { // 返回 return LOCAL_IP; } else { // 获取客户端IP String requestHost = ServletUtil.getClientIP(request); // 返回 return LOCAL_REMOTE_HOST.equals(requestHost) ? LOCAL_IP : requestHost; } } /** * 获取-客户端ip地址 */ public static String getAddress(HttpServletRequest request) { // 获取参数 String address = StrUtil.DASHED; String ip = IpUtil.getIp(request); // 如果是本地ip或局域网ip,则直接不查询 if (StrUtil.isNotBlank(ip)) { // 判断 if (NetUtil.isInnerIP(ip)) { // 返回 return address; } // 获取ip信息 IpInfo ipInfo = ipSearchApi.memorySearch(ip); // 判断 if (ObjectUtil.isNotNull(ipInfo)) { // 获取参数 address = ipInfo.getAddress(); } else { log.error(">>> 获取ip地址为空"); } } // 返回 return address; } /** * 获取-指定ip地址 */ public static String getAddressByIp(String ip) { // 变量 String address = StrUtil.DASHED; // 判断 if (StrUtil.isNotBlank(ip)) { // 判断 if (NetUtil.isInnerIP(ip)) { // 返回 return address = "内网地址"; } // 获取ip信息 IpInfo ipInfo = ipSearchApi.memorySearch(ip); // 判断 if (ObjectUtil.isNotNull(ipInfo)) { // 获取参数 address = ipInfo.getAddress(); } else { log.error(">>> 获取ip地址为空"); } } // 返回 return address; } /** * 获取-ip信息详情 */ public static IpInfo getIpInfoByIp(String ip) { // 判断 if (StrUtil.isNotBlank(ip)) { // 判断 if (!NetUtil.isInnerIP(ip)) { // 获取ip信息 IpInfo ipInfo = ipSearchApi.memorySearch(ip); // 判断 if (ObjectUtil.isNull(ipInfo)) { log.error(">>> 获取ip信息为空"); } // 返回 return ipInfo; } } // 返回 return null; } }