|
@@ -1,98 +0,0 @@
|
|
|
-package com.diagbot.util;
|
|
|
-
|
|
|
-import com.diagbot.entity.IpEntity;
|
|
|
-import org.lionsoul.ip2region.DataBlock;
|
|
|
-import org.lionsoul.ip2region.DbConfig;
|
|
|
-import org.lionsoul.ip2region.DbSearcher;
|
|
|
-import org.lionsoul.ip2region.Util;
|
|
|
-import org.springframework.util.ResourceUtils;
|
|
|
-
|
|
|
-import java.io.File;
|
|
|
-import java.io.FileNotFoundException;
|
|
|
-import java.lang.reflect.Method;
|
|
|
-
|
|
|
-/**
|
|
|
- * @Description:
|
|
|
- * @author: gaodm
|
|
|
- * @time: 2020/3/24 18:29
|
|
|
- */
|
|
|
-public class IPLocalUtil {
|
|
|
-
|
|
|
- //国家,区域,省份,城市,运营商
|
|
|
- public static String getCityInfo(String ip) {
|
|
|
-
|
|
|
- //db
|
|
|
- String dbPath = "";
|
|
|
- try {
|
|
|
- File file = ResourceUtils.getFile("classpath:ip2region.db");
|
|
|
- if (file.exists() == false) {
|
|
|
- System.out.println("Error: Invalid ip2region.db file");
|
|
|
- }
|
|
|
- dbPath = file.getPath();
|
|
|
- } catch (FileNotFoundException e) {
|
|
|
- System.out.println("文件读取错误");
|
|
|
- }
|
|
|
-
|
|
|
- //查询算法
|
|
|
- int algorithm = DbSearcher.BTREE_ALGORITHM; //B-tree
|
|
|
- //DbSearcher.BINARY_ALGORITHM //Binary
|
|
|
- //DbSearcher.MEMORY_ALGORITYM //Memory
|
|
|
- try {
|
|
|
- DbConfig config = new DbConfig();
|
|
|
- DbSearcher searcher = new DbSearcher(config, dbPath);
|
|
|
-
|
|
|
- //define the method
|
|
|
- Method method = null;
|
|
|
- switch (algorithm) {
|
|
|
- case DbSearcher.BTREE_ALGORITHM:
|
|
|
- method = searcher.getClass().getMethod("btreeSearch", String.class);
|
|
|
- break;
|
|
|
- case DbSearcher.BINARY_ALGORITHM:
|
|
|
- method = searcher.getClass().getMethod("binarySearch", String.class);
|
|
|
- break;
|
|
|
- case DbSearcher.MEMORY_ALGORITYM:
|
|
|
- method = searcher.getClass().getMethod("memorySearch", String.class);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- DataBlock dataBlock = null;
|
|
|
- if (Util.isIpAddress(ip) == false) {
|
|
|
- System.out.println("Error: Invalid ip address");
|
|
|
- }
|
|
|
-
|
|
|
- dataBlock = (DataBlock) method.invoke(searcher, ip);
|
|
|
-
|
|
|
- return dataBlock.getRegion();
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- System.out.println("Ip解析错误");
|
|
|
- }
|
|
|
-
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 返回ip实体类
|
|
|
- *
|
|
|
- * @param ip
|
|
|
- * @return ip实体类
|
|
|
- */
|
|
|
- public static IpEntity getCityInfoWithEntity(String ip) {
|
|
|
- String ipStr = getCityInfo(ip);
|
|
|
- String[] arr = ipStr.split("\\|");
|
|
|
- if (arr != null && arr.length == 5) {
|
|
|
- return new IpEntity(arr[0], arr[1], arr[2], arr[3], arr[4]);
|
|
|
- }
|
|
|
- return new IpEntity();
|
|
|
- }
|
|
|
-
|
|
|
- public static void main(String[] args) throws Exception {
|
|
|
- System.err.println(getCityInfo("220.248.12.158"));
|
|
|
- System.err.println(getCityInfo("223.93.170.82"));
|
|
|
- System.err.println(getCityInfo("192.168.0.1"));
|
|
|
- System.err.println(getCityInfo("220.228.12.159"));
|
|
|
- System.err.println(getCityInfo("210.228.12.159"));
|
|
|
- }
|
|
|
-}
|