Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
at develop 50 lines 1.5 kB view raw
1package com.legacyminecraft.poseidon.util; 2 3import java.net.InetSocketAddress; 4import java.net.SocketAddress; 5 6public class Release2Beta { 7 8 public static long serializeAddress(SocketAddress address) { 9 String str = address.toString(); 10 String[] parts = str.split(":"); 11 12 String realAddress = parts[0].substring(1); // remove '/' 13 return ipToLong(realAddress); 14 } 15 16 public static InetSocketAddress deserializeAddress(long spoofedAddress) { 17 String realAddress = longToIp(spoofedAddress); 18 return new InetSocketAddress(realAddress, 0); 19 } 20 21 //Credit: https://mkyong.com/java/java-convert-ip-address-to-decimal-number/ 22 public static long ipToLong(String ipAddress) { 23 // ipAddressInArray[0] = 192 24 String[] ipAddressInArray = ipAddress.split("\\."); 25 26 long result = 0; 27 for (int i = 0; i < ipAddressInArray.length; i++) { 28 29 int power = 3 - i; 30 int ip = Integer.parseInt(ipAddressInArray[i]); 31 32 // 1. 192 * 256^3 33 // 2. 168 * 256^2 34 // 3. 1 * 256^1 35 // 4. 2 * 256^0 36 result += ip * Math.pow(256, power); 37 38 } 39 40 return result; 41 42 } 43 44 //Credit: https://mkyong.com/java/java-convert-ip-address-to-decimal-number/ 45 private static String longToIp(long i) { 46 47 return ((i >> 24) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + (i & 0xFF); 48 49 } 50}