Compare commits

...

3 Commits

Author SHA1 Message Date
lintx 3e7c60d35c
Merge fc0d99d7e8 into e20fec199f 2024-04-27 16:25:24 +08:00
Shane Freeder e20fec199f
Updated Upstream (BungeeCord)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

BungeeCord Changes:
336333ac #3665: Small improvements to TranslatableComponent
d110f662 #3669: Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.2 to 3.5.3
2024-04-25 21:00:45 +01:00
LinTx fc0d99d7e8 Add config with http request proxy 2024-01-04 23:17:02 +08:00
2 changed files with 192 additions and 1 deletions

@ -1 +1 @@
Subproject commit 6f70b15e2ea7f01e9d8690e56d476cfcfc68ef2c
Subproject commit 336333acb1e6140556271545c71f784083559dcc

View File

@ -0,0 +1,191 @@
From 66a33e05c78cdfa067874a0aa42bd9e64ba1dd4f Mon Sep 17 00:00:00 2001
From: LinTx <lintx@lintx.org>
Date: Thu, 4 Jan 2024 23:15:46 +0800
Subject: [PATCH] Add config with http request proxy
diff --git a/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java b/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java
index 469fe0e1..b4b6ad64 100644
--- a/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java
+++ b/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java
@@ -275,4 +275,48 @@ public interface ProxyConfig
* @return the configured limit
*/
int getPluginChannelNameLimit();
+
+ /**
+ * Get the proxy type of http(s) request (such as MOJANG AUTH request). Optional values include socks5 and http.
+ * default:http
+ *
+ * @return proxy type
+ */
+ String getHttpRequestProxyType();
+
+ /**
+ * Get the proxy host address for http(s) requests (such as MOJANG AUTH requests). for example: 127.0.0.1
+ * If it is empty, it will connect directly.
+ * default:empty string
+ *
+ * @return proxy host
+ */
+ String getHttpRequestProxyHost();
+
+ /**
+ * Get the proxy host port for http(s) requests (such as MOJANG AUTH requests), for example: 1080
+ * When it is 0, it will connect directly
+ * default:0
+ *
+ * @return proxy host port
+ */
+ int getHttpRequestProxyPort();
+
+ /**
+ * Get the proxy host username for http(s) requests (such as MOJANG AUTH requests)
+ * If the proxy host does not have username verification, remove this entry
+ * default:null
+ *
+ * @return proxy host username
+ */
+ String getHttpRequestProxyUsername();
+
+ /**
+ * Get the proxy host password for http(s) requests (such as MOJANG AUTH requests)
+ * If the proxy host does not have password authentication, delete this entry
+ * default:null
+ *
+ * @return proxy host password
+ */
+ String getHttpRequestProxyPassword();
}
diff --git a/proxy/pom.xml b/proxy/pom.xml
index 9be9aa22..8ba09658 100644
--- a/proxy/pom.xml
+++ b/proxy/pom.xml
@@ -46,6 +46,13 @@
<classifier>osx-x86_64</classifier>
</dependency>
<!-- Waterfall End -->
+ <!-- Waterfall Start - add Netty proxy handler -->
+ <dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-handler-proxy</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <!-- Waterfall End -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-handler</artifactId>
diff --git a/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java b/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java
index da0efa36..2c0a5496 100644
--- a/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java
+++ b/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java
@@ -62,6 +62,16 @@ public class WaterfallConfiguration extends Configuration {
*/
private int pluginChannelNameLimit = 128;
+ private String httpRequestProxyType = "http";
+
+ private String httpRequestProxyHost = "";
+
+ private int httpRequestProxyPort = 0;
+
+ private String httpRequestProxyUsername = null;
+
+ private String httpRequestProxyPassword = null;
+
@Override
public void load() {
super.load();
@@ -77,6 +87,11 @@ public class WaterfallConfiguration extends Configuration {
disableTabListRewrite = config.getBoolean("disable_tab_list_rewrite", disableTabListRewrite);
pluginChannelLimit = config.getInt("registered_plugin_channels_limit", pluginChannelLimit);
pluginChannelNameLimit = config.getInt("plugin_channel_name_limit", pluginChannelNameLimit);
+ httpRequestProxyType = config.getString("http_request_proxy.type", httpRequestProxyType);
+ httpRequestProxyHost = config.getString("http_request_proxy.host", httpRequestProxyHost);
+ httpRequestProxyPort = config.getInt("http_request_proxy.port", httpRequestProxyPort);
+ httpRequestProxyUsername = config.getString("http_request_proxy.username", httpRequestProxyUsername);
+ httpRequestProxyPassword = config.getString("http_request_proxy.password", httpRequestProxyPassword);
}
@Override
@@ -123,4 +138,29 @@ public class WaterfallConfiguration extends Configuration {
public int getPluginChannelNameLimit() {
return pluginChannelNameLimit;
}
+
+ @Override
+ public String getHttpRequestProxyType(){
+ return httpRequestProxyType;
+ }
+
+ @Override
+ public String getHttpRequestProxyHost(){
+ return httpRequestProxyHost;
+ }
+
+ @Override
+ public int getHttpRequestProxyPort(){
+ return httpRequestProxyPort;
+ }
+
+ @Override
+ public String getHttpRequestProxyUsername(){
+ return httpRequestProxyUsername;
+ }
+
+ @Override
+ public String getHttpRequestProxyPassword(){
+ return httpRequestProxyPassword;
+ }
}
diff --git a/proxy/src/main/java/net/md_5/bungee/http/HttpInitializer.java b/proxy/src/main/java/net/md_5/bungee/http/HttpInitializer.java
index 37657c4c..820dab84 100644
--- a/proxy/src/main/java/net/md_5/bungee/http/HttpInitializer.java
+++ b/proxy/src/main/java/net/md_5/bungee/http/HttpInitializer.java
@@ -3,13 +3,18 @@ package net.md_5.bungee.http;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
import io.netty.handler.codec.http.HttpClientCodec;
+import io.netty.handler.proxy.HttpProxyHandler;
+import io.netty.handler.proxy.Socks5ProxyHandler;
import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.SslHandler;
import io.netty.handler.timeout.ReadTimeoutHandler;
+
+import java.net.InetSocketAddress;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLEngine;
import lombok.RequiredArgsConstructor;
import net.md_5.bungee.api.Callback;
+import net.md_5.bungee.api.ProxyConfig;
@RequiredArgsConstructor
public class HttpInitializer extends ChannelInitializer<Channel>
@@ -32,5 +37,24 @@ public class HttpInitializer extends ChannelInitializer<Channel>
}
ch.pipeline().addLast( "http", new HttpClientCodec() );
ch.pipeline().addLast( "handler", new HttpHandler( callback ) );
+ ProxyConfig config = net.md_5.bungee.api.ProxyServer.getInstance().getConfig();
+ if (!config.getHttpRequestProxyHost().isEmpty() && config.getHttpRequestProxyPort() > 0){
+ InetSocketAddress address = new InetSocketAddress(config.getHttpRequestProxyHost(),config.getHttpRequestProxyPort());
+ String username = config.getHttpRequestProxyUsername();
+ String password = config.getHttpRequestProxyPassword();
+ if (config.getHttpRequestProxyType().equalsIgnoreCase("socks5")){
+ if (username==null || password==null){
+ ch.pipeline().addFirst("proxy", new Socks5ProxyHandler(address));
+ }else {
+ ch.pipeline().addFirst("proxy", new Socks5ProxyHandler(address,username,password));
+ }
+ }else {
+ if (username==null || password==null){
+ ch.pipeline().addFirst("proxy", new HttpProxyHandler(address));
+ }else {
+ ch.pipeline().addFirst("proxy", new HttpProxyHandler(address,username,password));
+ }
+ }
+ }
}
}
--
2.25.1