update simple list
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/python
|
||||
# -*- encoding: utf8 -*-
|
||||
|
||||
import itertools
|
||||
import math
|
||||
import sys
|
||||
|
||||
import IPy
|
||||
|
||||
|
||||
def main():
|
||||
china_list_set = IPy.IPSet()
|
||||
for line in sys.stdin:
|
||||
line_params = line.split("|")
|
||||
if len(line_params) < 5 or line_params[2] != "ipv4" or line_params[1] != "CN":
|
||||
continue
|
||||
ip_addr = line_params[3]
|
||||
ip_length = float(line_params[4])
|
||||
ip_mask = 32 - int(math.ceil(math.log(ip_length, 2)))
|
||||
china_list_set.add(IPy.IP("%s/%d" % (ip_addr, ip_mask)))
|
||||
|
||||
# 添加内网地址
|
||||
internal_list = IPy.IPSet(map(IPy.IP, [
|
||||
"0.0.0.0/8",
|
||||
"10.0.0.0/8",
|
||||
"100.64.0.0/10",
|
||||
"127.0.0.0/8",
|
||||
"169.254.0.0/16",
|
||||
"172.16.0.0/12",
|
||||
"192.0.0.0/29",
|
||||
"192.0.2.0/24",
|
||||
"192.88.99.0/24",
|
||||
"192.168.0.0/16",
|
||||
"198.18.0.0/15",
|
||||
"198.51.100.0/24",
|
||||
"203.0.113.0/24",
|
||||
"224.0.0.0/4",
|
||||
"240.0.0.0/4",
|
||||
]))
|
||||
china_list_set += internal_list
|
||||
|
||||
# 取反
|
||||
all = IPy.IPSet([IPy.IP("0.0.0.0/0")])
|
||||
# 剔除所有孤立的C段
|
||||
for ip in china_list_set:
|
||||
all.discard(ip)
|
||||
|
||||
filter = itertools.ifilter(lambda x: len(x) <= 65536, all)
|
||||
for ip in filter:
|
||||
all.discard(ip)
|
||||
all.add(IPy.IP(ip.strNormal(0)).make_net('255.255.0.0'))
|
||||
|
||||
# 输出结果
|
||||
for ip in all:
|
||||
print '<item>' + str(ip) + '</item>'
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
File diff suppressed because it is too large
Load Diff
+1139
-840
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user