-
Notifications
You must be signed in to change notification settings - Fork 198
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ASN查询逻辑更新;GetTitle逻辑中两处bug修复(IPset包含域名问题;数据库未同步清空问题)
ASN查询逻辑更新;GetTitle逻辑中两处bug修复(IPset包含域名问题;数据库未同步清空问题)
- Loading branch information
Showing
9 changed files
with
426 additions
and
377 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,164 +1,183 @@ | ||
package ASN; | ||
|
||
import java.util.List; | ||
|
||
import inet.ipaddr.AddressStringException; | ||
import inet.ipaddr.IPAddress; | ||
import inet.ipaddr.IPAddressSeqRange; | ||
import inet.ipaddr.IPAddressString; | ||
import utils.IPAddressUtils; | ||
|
||
import java.util.List; | ||
|
||
/** | ||
*存储 | ||
*/ | ||
public class ASNEntry { | ||
|
||
String asn = "";//自治系统编号 | ||
String asname_long = ""; | ||
String asname_short = ""; | ||
String prefix = "";//网段信息 | ||
String geo = ""; | ||
String alias = ""; | ||
|
||
/** | ||
* 用于fastjson反序列化 | ||
*/ | ||
ASNEntry(){} | ||
|
||
|
||
/** | ||
* 从TSV文件加载数据 | ||
* * range_start range_end AS_number country_code AS_description | ||
* @param lineFromTSV | ||
*/ | ||
public ASNEntry(String lineFromTSV){ | ||
try { | ||
String[] items = lineFromTSV.split("\t"); | ||
if (items.length !=5){ | ||
throw new IllegalArgumentException("data illegal: "+lineFromTSV); | ||
} | ||
prefix = items[0]+"-"+items[1]; | ||
asn = items[2]; | ||
geo = items[3]; | ||
asname_long = items[4]; | ||
if (asname_long.equals("Not routed")){ | ||
throw new IllegalArgumentException("Not routed ASN"); | ||
} | ||
} catch (Exception e) { | ||
e.printStackTrace(); | ||
} | ||
} | ||
|
||
public String getAsn() { | ||
return asn; | ||
} | ||
|
||
public void setAsn(String asn) { | ||
this.asn = asn; | ||
} | ||
|
||
public String getAsname_long() { | ||
return asname_long; | ||
} | ||
|
||
public void setAsname_long(String asname_long) { | ||
this.asname_long = asname_long; | ||
} | ||
|
||
public String getAsname_short() { | ||
return asname_short; | ||
} | ||
|
||
public void setAsname_short(String asname_short) { | ||
this.asname_short = asname_short; | ||
} | ||
|
||
public String getPrefix() { | ||
return prefix; | ||
} | ||
|
||
public void setPrefix(String prefix) { | ||
this.prefix = prefix; | ||
} | ||
|
||
public String getGeo() { | ||
return geo; | ||
} | ||
|
||
public void setGeo(String geo) { | ||
this.geo = geo; | ||
} | ||
|
||
public String getAlias() { | ||
return alias; | ||
} | ||
|
||
public void setAlias(String alias) { | ||
this.alias = alias; | ||
} | ||
|
||
/** | ||
* ASN描述,主要用于用户查看 | ||
* @return | ||
* get开头的函数会被序列化过程调用 | ||
*/ | ||
public String fetchASNDescription() { | ||
if (!getAlias().equals("")){ | ||
return getAlias(); | ||
}else{ | ||
return getAsname_long(); | ||
} | ||
} | ||
|
||
public boolean contains(String IP){ | ||
if (prefix.contains("/")){ | ||
List<String> IPSet = IPAddressUtils.toIPList(prefix); | ||
return IPSet.contains(IP); | ||
} | ||
|
||
if (prefix.contains("-")){//这个速度更快,减少了查找时间 | ||
try { | ||
String start = prefix.split("-")[0]; | ||
String end = prefix.split("-")[1]; | ||
return IPAddressUtils.checkIPIsInGivenRange(IP,start,end);// | ||
} catch (AddressStringException e) { | ||
e.printStackTrace(); | ||
return false; | ||
} | ||
} | ||
|
||
return false; | ||
} | ||
|
||
/** | ||
* get开头的函数会被序列化过程调用 | ||
*/ | ||
public int FetchumberOfIP(){ | ||
String start = prefix.split("-")[0]; | ||
String end = prefix.split("-")[1]; | ||
IPAddress startIPAddress = new IPAddressString(start).getAddress(); | ||
IPAddress endIPAddress = new IPAddressString(end).getAddress(); | ||
IPAddressSeqRange ipRange = startIPAddress.toSequentialRange(endIPAddress); | ||
return ipRange.getCount().intValue(); | ||
} | ||
|
||
/** | ||
* 对比是否相同的asn,对比编号即可 | ||
* @param entry | ||
* @return | ||
*/ | ||
public boolean equals(ASNEntry entry){ | ||
return this.toString().equals(entry.toString()); | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return "ASNEntry{" + | ||
"asn='" + asn + '\'' + | ||
", asname_long='" + asname_long + '\'' + | ||
", asname_short='" + asname_short + '\'' + | ||
", prefix='" + prefix + '\'' + | ||
", geo='" + geo + '\'' + | ||
'}'; | ||
} | ||
String asn = "";//自治系统编号 | ||
String asname_long = ""; | ||
String asname_short = ""; | ||
String prefix = "";//网段信息 | ||
String geo = ""; | ||
String alias = ""; | ||
boolean valid = true; | ||
|
||
/** | ||
* 用于fastjson反序列化 | ||
*/ | ||
ASNEntry(){} | ||
|
||
|
||
/** | ||
* 从TSV文件加载数据 | ||
* * range_start range_end AS_number country_code AS_description | ||
* @param lineFromTSV | ||
*/ | ||
public ASNEntry(String lineFromTSV){ | ||
|
||
try { | ||
String[] items = lineFromTSV.split("\t"); | ||
if (items.length !=5){ | ||
valid = false; | ||
} | ||
prefix = items[0]+"-"+items[1]; | ||
asn = items[2]; | ||
geo = items[3]; | ||
asname_long = items[4]; | ||
if (asname_long.equals("Not routed")){ | ||
valid = false; | ||
} | ||
} catch (Exception e) { | ||
e.printStackTrace(); | ||
valid = false; | ||
} | ||
} | ||
|
||
public static void main(String[] args){ | ||
new ASNEntry(); | ||
} | ||
|
||
|
||
|
||
public boolean isValid() { | ||
return valid; | ||
} | ||
|
||
|
||
public void setValid(boolean valid) { | ||
this.valid = valid; | ||
} | ||
|
||
|
||
public String getAsn() { | ||
return asn; | ||
} | ||
|
||
public void setAsn(String asn) { | ||
this.asn = asn; | ||
} | ||
|
||
public String getAsname_long() { | ||
return asname_long; | ||
} | ||
|
||
public void setAsname_long(String asname_long) { | ||
this.asname_long = asname_long; | ||
} | ||
|
||
public String getAsname_short() { | ||
return asname_short; | ||
} | ||
|
||
public void setAsname_short(String asname_short) { | ||
this.asname_short = asname_short; | ||
} | ||
|
||
public String getPrefix() { | ||
return prefix; | ||
} | ||
|
||
public void setPrefix(String prefix) { | ||
this.prefix = prefix; | ||
} | ||
|
||
public String getGeo() { | ||
return geo; | ||
} | ||
|
||
public void setGeo(String geo) { | ||
this.geo = geo; | ||
} | ||
|
||
public String getAlias() { | ||
return alias; | ||
} | ||
|
||
public void setAlias(String alias) { | ||
this.alias = alias; | ||
} | ||
|
||
/** | ||
* ASN描述,主要用于用户查看 | ||
* @return | ||
* get开头的函数会被序列化过程调用 | ||
*/ | ||
public String fetchASNDescription() { | ||
if (!getAlias().equals("")){ | ||
return getAlias(); | ||
}else{ | ||
return getAsname_long(); | ||
} | ||
} | ||
|
||
public boolean contains(String IP){ | ||
if (prefix.contains("/")){ | ||
List<String> IPSet = IPAddressUtils.toIPList(prefix); | ||
return IPSet.contains(IP); | ||
} | ||
|
||
if (prefix.contains("-")){//这个速度更快,减少了查找时间 | ||
try { | ||
String start = prefix.split("-")[0]; | ||
String end = prefix.split("-")[1]; | ||
return IPAddressUtils.checkIPIsInGivenRange(IP,start,end);// | ||
} catch (AddressStringException e) { | ||
e.printStackTrace(); | ||
return false; | ||
} | ||
} | ||
|
||
return false; | ||
} | ||
|
||
/** | ||
* get开头的函数会被序列化过程调用 | ||
*/ | ||
public int FetchumberOfIP(){ | ||
String start = prefix.split("-")[0]; | ||
String end = prefix.split("-")[1]; | ||
IPAddress startIPAddress = new IPAddressString(start).getAddress(); | ||
IPAddress endIPAddress = new IPAddressString(end).getAddress(); | ||
IPAddressSeqRange ipRange = startIPAddress.toSequentialRange(endIPAddress); | ||
return ipRange.getCount().intValue(); | ||
} | ||
|
||
/** | ||
* 对比是否相同的asn,对比编号即可 | ||
* @param entry | ||
* @return | ||
*/ | ||
public boolean equals(ASNEntry entry){ | ||
return this.toString().equals(entry.toString()); | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return "ASNEntry{" + | ||
"asn='" + asn + '\'' + | ||
", asname_long='" + asname_long + '\'' + | ||
", asname_short='" + asname_short + '\'' + | ||
", prefix='" + prefix + '\'' + | ||
", geo='" + geo + '\'' + | ||
'}'; | ||
} | ||
} |
Oops, something went wrong.