Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-12-26 00:00:55 +01:00
Better validate addresses in configuration. Fixes #385
Dieser Commit ist enthalten in:
Ursprung
09de77425d
Commit
44f872eea4
@ -7,6 +7,8 @@ import java.net.InetSocketAddress;
|
|||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
|
||||||
public final class AddressUtil {
|
public final class AddressUtil {
|
||||||
|
private static final int DEFAULT_MINECRAFT_PORT = 25565;
|
||||||
|
|
||||||
private AddressUtil() {
|
private AddressUtil() {
|
||||||
throw new AssertionError();
|
throw new AssertionError();
|
||||||
}
|
}
|
||||||
@ -21,11 +23,16 @@ public final class AddressUtil {
|
|||||||
public static InetSocketAddress parseAddress(String ip) {
|
public static InetSocketAddress parseAddress(String ip) {
|
||||||
Preconditions.checkNotNull(ip, "ip");
|
Preconditions.checkNotNull(ip, "ip");
|
||||||
URI uri = URI.create("tcp://" + ip);
|
URI uri = URI.create("tcp://" + ip);
|
||||||
|
if (uri.getHost() == null) {
|
||||||
|
throw new IllegalStateException("Invalid hostname/IP " + ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
int port = uri.getPort() == -1 ? DEFAULT_MINECRAFT_PORT : uri.getPort();
|
||||||
try {
|
try {
|
||||||
InetAddress ia = InetAddresses.forUriString(uri.getHost());
|
InetAddress ia = InetAddresses.forUriString(uri.getHost());
|
||||||
return new InetSocketAddress(ia, uri.getPort());
|
return new InetSocketAddress(ia, port);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
return InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort());
|
return InetSocketAddress.createUnresolved(uri.getHost(), port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,6 +46,11 @@ public final class AddressUtil {
|
|||||||
public static InetSocketAddress parseAndResolveAddress(String ip) {
|
public static InetSocketAddress parseAndResolveAddress(String ip) {
|
||||||
Preconditions.checkNotNull(ip, "ip");
|
Preconditions.checkNotNull(ip, "ip");
|
||||||
URI uri = URI.create("tcp://" + ip);
|
URI uri = URI.create("tcp://" + ip);
|
||||||
return new InetSocketAddress(uri.getHost(), uri.getPort());
|
if (uri.getHost() == null) {
|
||||||
|
throw new IllegalStateException("Invalid hostname/IP " + ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
int port = uri.getPort() == -1 ? DEFAULT_MINECRAFT_PORT : uri.getPort();
|
||||||
|
return new InetSocketAddress(uri.getHost(), port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren