|
@@ -9,6 +9,8 @@ import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
|
|
+import java.nio.file.Files;
|
|
|
|
+import java.nio.file.Path;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
@@ -58,8 +60,8 @@ public class IPLocationUtil {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
byte[] cBuff = is.readAllBytes();
|
|
byte[] cBuff = is.readAllBytes();
|
|
- java.nio.file.Path tmp = java.nio.file.Files.createTempFile("ip2region", ".xdb");
|
|
|
|
- java.nio.file.Files.write(tmp, cBuff);
|
|
|
|
|
|
+ Path tmp = Files.createTempFile("ip2region", ".xdb");
|
|
|
|
+ Files.write(tmp, cBuff);
|
|
subtleSetDeleteOnExit(tmp);
|
|
subtleSetDeleteOnExit(tmp);
|
|
searcher = Searcher.newWithFileOnly(tmp.toString());
|
|
searcher = Searcher.newWithFileOnly(tmp.toString());
|
|
log.info("IPLocationUtil ip2region初始化成功 (temp file: {})", tmp);
|
|
log.info("IPLocationUtil ip2region初始化成功 (temp file: {})", tmp);
|
|
@@ -73,7 +75,7 @@ public class IPLocationUtil {
|
|
/**
|
|
/**
|
|
* 尝试标记临时文件在JVM退出时删除
|
|
* 尝试标记临时文件在JVM退出时删除
|
|
*/
|
|
*/
|
|
- private static void subtleSetDeleteOnExit(java.nio.file.Path tmp) {
|
|
|
|
|
|
+ private static void subtleSetDeleteOnExit(Path tmp) {
|
|
try {
|
|
try {
|
|
java.io.File f = tmp.toFile();
|
|
java.io.File f = tmp.toFile();
|
|
f.deleteOnExit();
|
|
f.deleteOnExit();
|
|
@@ -150,8 +152,8 @@ public class IPLocationUtil {
|
|
private String getFullAddressFromIp2region(String ip) {
|
|
private String getFullAddressFromIp2region(String ip) {
|
|
try {
|
|
try {
|
|
// 统一委托给 IPUtils,避免本地 Searcher 与库/数据版本不一致
|
|
// 统一委托给 IPUtils,避免本地 Searcher 与库/数据版本不一致
|
|
- String region = IPUtils.getIpRegion(ip);
|
|
|
|
- log.info("IPLocationUtil 调用 IPUtils.getIpRegion 返回: ip={}, region={}", ip, region);
|
|
|
|
|
|
+ String region = searcher.search(ip);
|
|
|
|
+ log.info("IPLocationUtil 取临时文件 返回: ip={}, region={}", ip, region);
|
|
if (region == null || region.trim().isEmpty() || "未知".equals(region) || "内网".equals(region)) {
|
|
if (region == null || region.trim().isEmpty() || "未知".equals(region) || "内网".equals(region)) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|