mirror of
https://github.com/ViaVersion/ViaProxy.git
synced 2024-11-23 12:06:06 +01:00
Made version parsing more lenient and improved CLI error handling
This commit is contained in:
parent
a0e1732bb9
commit
353b1301e8
@ -84,13 +84,14 @@ public class ViaProxy {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
transformerManager.hookInstrumentation(Agents.getInstrumentation());
|
transformerManager.hookInstrumentation(Agents.getInstrumentation());
|
||||||
injectedMain("Runtime Agent", args);
|
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
final InjectionClassLoader injectionClassLoader = new InjectionClassLoader(transformerManager, ClassLoaders.getSystemClassPath());
|
final InjectionClassLoader injectionClassLoader = new InjectionClassLoader(transformerManager, ClassLoaders.getSystemClassPath());
|
||||||
injectionClassLoader.setPriority(EnumLoaderPriority.PARENT_FIRST);
|
injectionClassLoader.setPriority(EnumLoaderPriority.PARENT_FIRST);
|
||||||
Thread.currentThread().setContextClassLoader(injectionClassLoader);
|
Thread.currentThread().setContextClassLoader(injectionClassLoader);
|
||||||
Methods.invoke(null, Methods.getDeclaredMethod(injectionClassLoader.loadClass(ViaProxy.class.getName()), "injectedMain", String.class, String[].class), "Injection ClassLoader", args);
|
Methods.invoke(null, Methods.getDeclaredMethod(injectionClassLoader.loadClass(ViaProxy.class.getName()), "injectedMain", String.class, String[].class), "Injection ClassLoader", args);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
injectedMain("Runtime Agent", args);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void injectedMain(final String injectionMethod, final String[] args) throws InterruptedException, IOException {
|
public static void injectedMain(final String injectionMethod, final String[] args) throws InterruptedException, IOException {
|
||||||
|
@ -85,49 +85,49 @@ public class Options {
|
|||||||
final OptionSet options;
|
final OptionSet options;
|
||||||
try {
|
try {
|
||||||
options = parser.parse(args);
|
options = parser.parse(args);
|
||||||
|
|
||||||
|
if (options.has(help)) {
|
||||||
|
parser.formatHelpWith(new BetterHelpFormatter());
|
||||||
|
parser.printHelpOn(Logger.SYSOUT);
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
BIND_ADDRESS = options.valueOf(bindAddress);
|
||||||
|
BIND_PORT = options.valueOf(bindPort);
|
||||||
|
SRV_MODE = options.has(srvMode);
|
||||||
|
INTERNAL_SRV_MODE = options.has(iSrvMode);
|
||||||
|
ONLINE_MODE = options.has(onlineMode);
|
||||||
|
CONNECT_ADDRESS = options.valueOf(connectAddress);
|
||||||
|
PROTOCOL_VERSION = options.valueOf(version);
|
||||||
|
if (options.has(connectPort)) {
|
||||||
|
CONNECT_PORT = options.valueOf(connectPort);
|
||||||
|
} else {
|
||||||
|
CONNECT_PORT = PluginManager.EVENT_MANAGER.call(new GetDefaultPortEvent(PROTOCOL_VERSION, 25565)).getDefaultPort();
|
||||||
|
}
|
||||||
|
COMPRESSION_THRESHOLD = options.valueOf(compressionThreshold);
|
||||||
|
OPENAUTHMOD_AUTH = options.has(openAuthModAuth);
|
||||||
|
BETACRAFT_AUTH = options.has(betaCraftAuth);
|
||||||
|
if (options.has(resourcePackUrl)) {
|
||||||
|
RESOURCE_PACK_URL = options.valueOf(resourcePackUrl);
|
||||||
|
}
|
||||||
|
if (options.has(proxyUrl)) {
|
||||||
|
try {
|
||||||
|
PROXY_URL = new URI(options.valueOf(proxyUrl));
|
||||||
|
} catch (URISyntaxException e) {
|
||||||
|
Logger.LOGGER.error("Invalid proxy url: " + options.valueOf(proxyUrl));
|
||||||
|
Logger.LOGGER.error("Proxy url format: type://address:port or type://username:password@address:port");
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SERVER_HAPROXY_PROTOCOL = options.has(serverHaProxyProtocol);
|
||||||
|
LEGACY_CLIENT_PASSTHROUGH = options.has(legacyClientPassthrough);
|
||||||
|
PluginManager.EVENT_MANAGER.call(new PostOptionsParseEvent(options));
|
||||||
} catch (OptionException e) {
|
} catch (OptionException e) {
|
||||||
Logger.LOGGER.error("Error parsing options: " + e.getMessage());
|
Logger.LOGGER.error("Error parsing options: " + e.getMessage());
|
||||||
parser.formatHelpWith(new BetterHelpFormatter());
|
parser.formatHelpWith(new BetterHelpFormatter());
|
||||||
parser.printHelpOn(Logger.SYSOUT);
|
parser.printHelpOn(Logger.SYSOUT);
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (options.has(help)) {
|
|
||||||
parser.formatHelpWith(new BetterHelpFormatter());
|
|
||||||
parser.printHelpOn(Logger.SYSOUT);
|
|
||||||
System.exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
BIND_ADDRESS = options.valueOf(bindAddress);
|
|
||||||
BIND_PORT = options.valueOf(bindPort);
|
|
||||||
SRV_MODE = options.has(srvMode);
|
|
||||||
INTERNAL_SRV_MODE = options.has(iSrvMode);
|
|
||||||
ONLINE_MODE = options.has(onlineMode);
|
|
||||||
CONNECT_ADDRESS = options.valueOf(connectAddress);
|
|
||||||
PROTOCOL_VERSION = options.valueOf(version);
|
|
||||||
if (options.has(connectPort)) {
|
|
||||||
CONNECT_PORT = options.valueOf(connectPort);
|
|
||||||
} else {
|
|
||||||
CONNECT_PORT = PluginManager.EVENT_MANAGER.call(new GetDefaultPortEvent(PROTOCOL_VERSION, 25565)).getDefaultPort();
|
|
||||||
}
|
|
||||||
COMPRESSION_THRESHOLD = options.valueOf(compressionThreshold);
|
|
||||||
OPENAUTHMOD_AUTH = options.has(openAuthModAuth);
|
|
||||||
BETACRAFT_AUTH = options.has(betaCraftAuth);
|
|
||||||
if (options.has(resourcePackUrl)) {
|
|
||||||
RESOURCE_PACK_URL = options.valueOf(resourcePackUrl);
|
|
||||||
}
|
|
||||||
if (options.has(proxyUrl)) {
|
|
||||||
try {
|
|
||||||
PROXY_URL = new URI(options.valueOf(proxyUrl));
|
|
||||||
} catch (URISyntaxException e) {
|
|
||||||
Logger.LOGGER.error("Invalid proxy url: " + options.valueOf(proxyUrl));
|
|
||||||
Logger.LOGGER.error("Proxy url format: type://address:port or type://username:password@address:port");
|
|
||||||
System.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SERVER_HAPROXY_PROTOCOL = options.has(serverHaProxyProtocol);
|
|
||||||
LEGACY_CLIENT_PASSTHROUGH = options.has(legacyClientPassthrough);
|
|
||||||
PluginManager.EVENT_MANAGER.call(new PostOptionsParseEvent(options));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,10 @@ public class VersionEnumConverter implements ValueConverter<VersionEnum> {
|
|||||||
for (VersionEnum version : VersionEnum.getAllVersions()) {
|
for (VersionEnum version : VersionEnum.getAllVersions()) {
|
||||||
if (version.getName().equalsIgnoreCase(s)) return version;
|
if (version.getName().equalsIgnoreCase(s)) return version;
|
||||||
}
|
}
|
||||||
|
for (VersionEnum version : VersionEnum.getAllVersions()) {
|
||||||
|
if (version.getProtocol().getIncludedVersions().contains(s)) return version;
|
||||||
|
}
|
||||||
|
|
||||||
throw new ValueConversionException("Unable to find version '" + s + "'");
|
throw new ValueConversionException("Unable to find version '" + s + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user