Skip to content

Instantly share code, notes, and snippets.

@tuanchauict
Forked from minhanhhere/IpRange.java
Last active September 18, 2015 06:47
Show Gist options
  • Save tuanchauict/5331ed56ad9a93aa0285 to your computer and use it in GitHub Desktop.
Save tuanchauict/5331ed56ad9a93aa0285 to your computer and use it in GitHub Desktop.
Goodbye Google
import java.util.Arrays;
import java.util.List;
public class IpRange {
//region BlackListIpRanges
public static final List<IpRange> blacklistIpRanges = Arrays.asList(
new IpRange("104.132.0.0 - 104.135.255.255"),
new IpRange("104.154.0.0 - 104.155.255.255"),
new IpRange("104.196.0.0 - 104.199.255.255"),
new IpRange("107.167.160.0 - 107.167.191.255"),
new IpRange("107.178.192.0 - 107.178.255.255"),
new IpRange("107.188.128.0 - 107.188.255.255"),
new IpRange("108.170.192.0 - 108.170.255.255"),
new IpRange("108.177.0.0 - 108.177.127.255"),
new IpRange("108.59.80.0 - 108.59.95.255"),
new IpRange("113.21.241.0 - 113.21.241.63"),
new IpRange("12.216.80.0 - 12.216.80.255"),
new IpRange("130.211.0.0 - 130.211.255.255"),
new IpRange("142.250.0.0 - 142.251.255.255"),
new IpRange("146.148.0.0 - 146.148.127.255"),
new IpRange("149.3.176.0 - 149.3.176.255"),
new IpRange("149.3.177.0 - 149.3.177.255"),
new IpRange("162.216.148.0 - 162.216.151.255"),
new IpRange("162.222.176.0 - 162.222.183.255"),
new IpRange("172.217.0.0 - 172.217.255.255"),
new IpRange("172.253.0.0 - 172.253.255.255"),
new IpRange("173.192.13.200 - 173.192.13.207"),
new IpRange("173.194.0.0 - 173.194.255.255"),
new IpRange("173.227.247.0 - 173.227.247.63"),
new IpRange("173.255.112.0 - 173.255.127.255"),
new IpRange("192.104.160.0 - 192.104.161.255"),
new IpRange("192.119.16.0 - 192.119.31.255"),
new IpRange("192.158.28.0 - 192.158.31.255"),
new IpRange("192.178.0.0 - 192.179.255.255"),
new IpRange("192.200.224.0 - 192.200.255.255"),
new IpRange("193.120.166.64 - 193.120.166.127"),
new IpRange("193.142.125.0 - 193.142.125.255"),
new IpRange("193.186.4.0 - 193.186.4.255"),
new IpRange("193.51.224.128 - 193.51.224.191"),
new IpRange("195.22.207.0 - 195.22.207.63"),
new IpRange("199.192.112.0 - 199.192.115.255"),
new IpRange("199.223.232.0 - 199.223.239.255"),
new IpRange("200.202.122.0 - 200.202.122.255"),
new IpRange("206.169.145.192 - 206.169.145.255"),
new IpRange("207.223.160.0 - 207.223.175.255"),
new IpRange("209.85.128.0 - 209.85.255.255"),
new IpRange("212.113.7.128 - 212.113.7.191"),
new IpRange("212.188.10.0 - 212.188.10.255"),
new IpRange("212.188.7.0 - 212.188.7.255"),
new IpRange("212.6.83.0 - 212.6.83.63"),
new IpRange("212.6.83.64 - 212.6.83.127"),
new IpRange("213.144.182.0 - 213.144.182.63"),
new IpRange("213.152.1.64 - 213.152.1.95"),
new IpRange("213.200.103.128 - 213.200.103.191"),
new IpRange("216.21.160.0 - 216.21.175.255"),
new IpRange("216.239.32.0 - 216.239.63.255"),
new IpRange("216.252.220.0 - 216.252.223.255"),
new IpRange("216.58.192.0 - 216.58.223.255"),
new IpRange("217.163.7.0 - 217.163.7.255"),
new IpRange("217.30.152.192 - 217.30.152.223"),
new IpRange("23.228.128.0 - 23.228.191.255"),
new IpRange("23.236.48.0 - 23.236.63.255"),
new IpRange("23.251.128.0 - 23.251.159.255"),
new IpRange("23.255.128.0 - 23.255.255.255"),
new IpRange("38.107.216.0 - 38.107.216.63"),
new IpRange("38.98.51.0 - 38.98.51.63"),
new IpRange("4.3.2.0 - 4.3.2.255"),
new IpRange("41.206.47.0 - 41.206.47.127"),
new IpRange("45.56.0.0 - 45.56.63.255"),
new IpRange("62.116.207.0 - 62.116.207.63"),
new IpRange("62.231.91.64 - 62.231.91.127"),
new IpRange("62.78.98.128 - 62.78.98.191"),
new IpRange("64.233.160.0 - 64.233.191.255"),
new IpRange("64.68.88.0 - 64.68.95.255"),
new IpRange("64.9.224.0 - 64.9.255.255"),
new IpRange("66.102.0.0 - 66.102.15.255"),
new IpRange("66.249.64.0 - 66.249.95.255"),
new IpRange("70.32.128.0 - 70.32.159.255"),
new IpRange("72.14.192.0 - 72.14.255.255"),
new IpRange("74.125.0.0 - 74.125.255.255"),
new IpRange("74.94.170.0 - 74.94.170.15"),
new IpRange("77.67.49.64 - 77.67.49.127"),
new IpRange("8.15.202.0 - 8.15.202.255"),
new IpRange("8.34.208.0 - 8.34.215.255"),
new IpRange("8.34.216.0 - 8.34.223.255"),
new IpRange("8.35.192.0 - 8.35.199.255"),
new IpRange("8.35.200.0 - 8.35.207.255"),
new IpRange("8.6.48.0 - 8.6.55.255"),
new IpRange("8.8.4.0 - 8.8.4.255"),
new IpRange("8.8.8.0 - 8.8.8.255"),
new IpRange("80.149.20.0 - 80.149.20.63"),
new IpRange("80.149.20.64 - 80.149.20.127"),
new IpRange("80.227.152.32 - 80.227.152.39"),
new IpRange("80.228.66.128 - 80.228.66.255"),
new IpRange("80.239.142.192 - 80.239.142.255"),
new IpRange("80.239.174.64 - 80.239.174.127"),
new IpRange("80.239.229.192 - 80.239.229.255"),
new IpRange("86.127.118.128 - 86.127.118.191"),
new IpRange("88.204.177.192 - 88.204.177.255"),
new IpRange("89.207.224.0 - 89.207.231.255"),
new IpRange("90.84.58.0 - 90.84.58.63"),
new IpRange("92.241.132.64 - 92.241.132.127"),
new IpRange("95.80.231.0 - 95.80.231.63"),
new IpRange("99.198.128.0 - 99.198.255.255")
);
//endregion
long beginL;
long endL;
String begin;
String end;
public IpRange(String input) {
//input format: "x.x.x.x - x.x.x.x"
String[] split = input.split("-");
begin = split[0].trim();
end = split[1].trim();
}
public IpRange(String begin, String end) {
this.begin = begin;
this.end = end;
}
public boolean contains(long ipLong) {
return (getBeginL() <= ipLong && ipLong <= getEndL());
}
public boolean contains(String ip) {
long ipLong = ipToLong(ip);
return contains(ipLong);
}
long getBeginL() {
if (beginL == 0) {
beginL = ipToLong(begin);
}
return beginL;
}
long getEndL() {
if (endL == 0) {
endL = ipToLong(end);
}
return endL;
}
public static long ipToLong(String ipAddress) {
long result = 0;
String[] ipAddressInArray = ipAddress.split("\\.");
for (int i = 3; i >= 0; i--) {
long ip = Long.parseLong(ipAddressInArray[3 - i]);
// left shifting 24,16,8,0 and bitwise OR
// 1. 192 << 24
// 1. 168 << 16
// 1. 1 << 8
// 1. 2 << 0
result |= ip << (i * 8);
}
return result;
}
public static boolean isBlackList(String ipAddress) {
long ipLong = ipToLong(ipAddress);
for (IpRange blackRange : blacklistIpRanges) {
if (blackRange.contains(ipLong)) {
return true;
}
}
return false;
}
}
import org.junit.Test;
public class TestIpRange{
@Test
public void testIpToLong(){
assert IpRange.ipToLong("0.0.0.0") == 0;
assert IpRange.ipToLong("0.0.0.1") == 1;
assert IpRange.ipToLong("0.0.1.0") == 256;
assert IpRange.ipToLong("0.0.1.1") == 257;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment