Drop main arguments --proxyHost, --proxyPort, --proxyUser, --proxyPass

This commit is contained in:
Haowei Wen 2020-09-11 20:47:08 +08:00
parent c4a769271a
commit 6d3e5856c2
No known key found for this signature in database
GPG key ID: 5BC167F73EA558E4
3 changed files with 57 additions and 1 deletions

View file

@ -56,6 +56,7 @@ import moe.yushi.authlibinjector.transform.support.ConstantURLTransformUnit;
import moe.yushi.authlibinjector.transform.support.MC52974Workaround;
import moe.yushi.authlibinjector.transform.support.MC52974_1710Workaround;
import moe.yushi.authlibinjector.transform.support.MainArgumentsTransformer;
import moe.yushi.authlibinjector.transform.support.ProxyParameterWorkaround;
import moe.yushi.authlibinjector.transform.support.SkinWhitelistTransformUnit;
import moe.yushi.authlibinjector.transform.support.YggdrasilKeyTransformUnit;
import moe.yushi.authlibinjector.yggdrasil.CustomYggdrasilAPIProvider;
@ -90,6 +91,7 @@ public final class AuthlibInjector {
classTransformer = createTransformer(apiMetadata);
instrumentation.addTransformer(classTransformer, retransformSupported);
ProxyParameterWorkaround.init();
MC52974Workaround.init();
MC52974_1710Workaround.init();
}

View file

@ -75,12 +75,13 @@ public class MainArgumentsTransformer implements TransformUnit {
@CallbackMethod
public static String[] processMainArguments(String[] args) {
log(DEBUG, "Main arguments: " + Stream.of(args).collect(joining(" ")));
log(DEBUG, "Original main arguments: " + Stream.of(args).collect(joining(" ")));
String[] result = args;
for (Function<String[], String[]> listener : ARGUMENTS_LISTENERS) {
result = listener.apply(result);
}
log(DEBUG, "Transformed main arguments: " + Stream.of(result).collect(joining(" ")));
return result;
}

View file

@ -0,0 +1,53 @@
/*
* Copyright (C) 2020 Haowei Wen <yushijinhun@gmail.com> and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package moe.yushi.authlibinjector.transform.support;
import static moe.yushi.authlibinjector.util.Logging.log;
import static moe.yushi.authlibinjector.util.Logging.Level.WARNING;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public final class ProxyParameterWorkaround {
private ProxyParameterWorkaround() {}
private static final Set<String> PROXY_PARAMETERS = new HashSet<>(Arrays.asList(
"--proxyHost", "--proxyPort", "--proxyUser", "--proxyPass"
));
public static void init() {
MainArgumentsTransformer.getArgumentsListeners().add(args -> {
boolean proxyDetected = false;
List<String> filtered = new ArrayList<>();
for (int i = 0; i < args.length; i++) {
if (i + 1 < args.length && PROXY_PARAMETERS.contains(args[i])) {
proxyDetected = true;
log(WARNING, "Dropping main argument " + args[i] + " " + args[i + 1]);
i++;
continue;
}
filtered.add(args[i]);
}
if (proxyDetected) {
log(WARNING, "--proxyHost parameter conflicts with authlib-injector, therefore proxy is disabled.");
}
return filtered.toArray(new String[filtered.size()]);
});
}
}