Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
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}