mirror of
https://github.com/ViaVersion/ViaProxy.git
synced 2024-12-22 16:38:04 +01:00
Added some new events
This commit is contained in:
parent
8fb3ff11b0
commit
93f97add1b
@ -43,6 +43,7 @@ import net.raphimc.viaproxy.plugins.PluginManager;
|
|||||||
import net.raphimc.viaproxy.plugins.events.Client2ProxyHandlerCreationEvent;
|
import net.raphimc.viaproxy.plugins.events.Client2ProxyHandlerCreationEvent;
|
||||||
import net.raphimc.viaproxy.plugins.events.ProxyStartEvent;
|
import net.raphimc.viaproxy.plugins.events.ProxyStartEvent;
|
||||||
import net.raphimc.viaproxy.plugins.events.ProxyStopEvent;
|
import net.raphimc.viaproxy.plugins.events.ProxyStopEvent;
|
||||||
|
import net.raphimc.viaproxy.plugins.events.ViaProxyLoadedEvent;
|
||||||
import net.raphimc.viaproxy.proxy.EventListener;
|
import net.raphimc.viaproxy.proxy.EventListener;
|
||||||
import net.raphimc.viaproxy.proxy.client2proxy.Client2ProxyChannelInitializer;
|
import net.raphimc.viaproxy.proxy.client2proxy.Client2ProxyChannelInitializer;
|
||||||
import net.raphimc.viaproxy.proxy.client2proxy.Client2ProxyHandler;
|
import net.raphimc.viaproxy.proxy.client2proxy.Client2ProxyHandler;
|
||||||
@ -162,6 +163,7 @@ public class ViaProxy {
|
|||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
}
|
}
|
||||||
ui.eventManager.call(new UIInitEvent());
|
ui.eventManager.call(new UIInitEvent());
|
||||||
|
EVENT_MANAGER.call(new ViaProxyLoadedEvent());
|
||||||
Logger.LOGGER.info("ViaProxy started successfully!");
|
Logger.LOGGER.info("ViaProxy started successfully!");
|
||||||
} else {
|
} else {
|
||||||
Options.parse(args);
|
Options.parse(args);
|
||||||
@ -171,6 +173,7 @@ public class ViaProxy {
|
|||||||
}
|
}
|
||||||
loaderThread.start();
|
loaderThread.start();
|
||||||
loaderThread.join();
|
loaderThread.join();
|
||||||
|
EVENT_MANAGER.call(new ViaProxyLoadedEvent());
|
||||||
Logger.LOGGER.info("ViaProxy started successfully!");
|
Logger.LOGGER.info("ViaProxy started successfully!");
|
||||||
startProxy();
|
startProxy();
|
||||||
|
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaProxy - https://github.com/RaphiMC/ViaProxy
|
||||||
|
* Copyright (C) 2023 RK_01/RaphiMC and contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU 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 General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package net.raphimc.viaproxy.plugins.events;
|
||||||
|
|
||||||
|
import net.raphimc.netminecraft.netty.connection.NetClient;
|
||||||
|
|
||||||
|
public class ProxySessionCreationEvent<T extends NetClient> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The proxy session which will be used to connect to the server and store connection related data.
|
||||||
|
*/
|
||||||
|
private T proxySession;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the proxy session is a legacy passthrough handler.
|
||||||
|
*/
|
||||||
|
private final boolean isLegacyPassthrough;
|
||||||
|
|
||||||
|
public ProxySessionCreationEvent(final T proxySession, final boolean isLegacyPassthrough) {
|
||||||
|
this.proxySession = proxySession;
|
||||||
|
this.isLegacyPassthrough = isLegacyPassthrough;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getProxySession() {
|
||||||
|
return this.proxySession;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProxySession(final T proxySession) {
|
||||||
|
this.proxySession = proxySession;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLegacyPassthrough() {
|
||||||
|
return this.isLegacyPassthrough;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaProxy - https://github.com/RaphiMC/ViaProxy
|
||||||
|
* Copyright (C) 2023 RK_01/RaphiMC and contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU 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 General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package net.raphimc.viaproxy.plugins.events;
|
||||||
|
|
||||||
|
public class ViaProxyLoadedEvent {
|
||||||
|
}
|
@ -31,10 +31,7 @@ import net.raphimc.vialoader.util.VersionEnum;
|
|||||||
import net.raphimc.viaproxy.ViaProxy;
|
import net.raphimc.viaproxy.ViaProxy;
|
||||||
import net.raphimc.viaproxy.cli.options.Options;
|
import net.raphimc.viaproxy.cli.options.Options;
|
||||||
import net.raphimc.viaproxy.injection.VersionEnumExtension;
|
import net.raphimc.viaproxy.injection.VersionEnumExtension;
|
||||||
import net.raphimc.viaproxy.plugins.events.ConnectEvent;
|
import net.raphimc.viaproxy.plugins.events.*;
|
||||||
import net.raphimc.viaproxy.plugins.events.PreConnectEvent;
|
|
||||||
import net.raphimc.viaproxy.plugins.events.Proxy2ServerHandlerCreationEvent;
|
|
||||||
import net.raphimc.viaproxy.plugins.events.ResolveSrvEvent;
|
|
||||||
import net.raphimc.viaproxy.protocolhack.viaproxy.ViaBedrockTransferHolder;
|
import net.raphimc.viaproxy.protocolhack.viaproxy.ViaBedrockTransferHolder;
|
||||||
import net.raphimc.viaproxy.proxy.packethandler.*;
|
import net.raphimc.viaproxy.proxy.packethandler.*;
|
||||||
import net.raphimc.viaproxy.proxy.proxy2server.Proxy2ServerChannelInitializer;
|
import net.raphimc.viaproxy.proxy.proxy2server.Proxy2ServerChannelInitializer;
|
||||||
@ -202,11 +199,13 @@ public class Client2ProxyHandler extends SimpleChannelInboundHandler<IPacket> {
|
|||||||
|
|
||||||
private void connect(final ServerAddress serverAddress, final VersionEnum serverVersion, final VersionEnum clientVersion, final ConnectionState intendedState, final UserOptions userOptions, final String[] handshakeParts) {
|
private void connect(final ServerAddress serverAddress, final VersionEnum serverVersion, final VersionEnum clientVersion, final ConnectionState intendedState, final UserOptions userOptions, final String[] handshakeParts) {
|
||||||
final Supplier<ChannelHandler> handlerSupplier = () -> ViaProxy.EVENT_MANAGER.call(new Proxy2ServerHandlerCreationEvent(new Proxy2ServerHandler(), false)).getHandler();
|
final Supplier<ChannelHandler> handlerSupplier = () -> ViaProxy.EVENT_MANAGER.call(new Proxy2ServerHandlerCreationEvent(new Proxy2ServerHandler(), false)).getHandler();
|
||||||
|
final ProxyConnection proxyConnection;
|
||||||
if (serverVersion.equals(VersionEnum.bedrockLatest)) {
|
if (serverVersion.equals(VersionEnum.bedrockLatest)) {
|
||||||
this.proxyConnection = new BedrockProxyConnection(handlerSupplier, Proxy2ServerChannelInitializer::new, this.proxyConnection.getC2P());
|
proxyConnection = new BedrockProxyConnection(handlerSupplier, Proxy2ServerChannelInitializer::new, this.proxyConnection.getC2P());
|
||||||
} else {
|
} else {
|
||||||
this.proxyConnection = new ProxyConnection(handlerSupplier, Proxy2ServerChannelInitializer::new, this.proxyConnection.getC2P());
|
proxyConnection = new ProxyConnection(handlerSupplier, Proxy2ServerChannelInitializer::new, this.proxyConnection.getC2P());
|
||||||
}
|
}
|
||||||
|
this.proxyConnection = ViaProxy.EVENT_MANAGER.call(new ProxySessionCreationEvent<>(proxyConnection, false)).getProxySession();
|
||||||
this.proxyConnection.getC2P().attr(ProxyConnection.PROXY_CONNECTION_ATTRIBUTE_KEY).set(this.proxyConnection);
|
this.proxyConnection.getC2P().attr(ProxyConnection.PROXY_CONNECTION_ATTRIBUTE_KEY).set(this.proxyConnection);
|
||||||
this.proxyConnection.setClientVersion(clientVersion);
|
this.proxyConnection.setClientVersion(clientVersion);
|
||||||
this.proxyConnection.setC2pConnectionState(intendedState);
|
this.proxyConnection.setC2pConnectionState(intendedState);
|
||||||
|
@ -24,6 +24,7 @@ import net.raphimc.vialoader.util.VersionEnum;
|
|||||||
import net.raphimc.viaproxy.ViaProxy;
|
import net.raphimc.viaproxy.ViaProxy;
|
||||||
import net.raphimc.viaproxy.cli.options.Options;
|
import net.raphimc.viaproxy.cli.options.Options;
|
||||||
import net.raphimc.viaproxy.plugins.events.Proxy2ServerHandlerCreationEvent;
|
import net.raphimc.viaproxy.plugins.events.Proxy2ServerHandlerCreationEvent;
|
||||||
|
import net.raphimc.viaproxy.plugins.events.ProxySessionCreationEvent;
|
||||||
import net.raphimc.viaproxy.plugins.events.ResolveSrvEvent;
|
import net.raphimc.viaproxy.plugins.events.ResolveSrvEvent;
|
||||||
import net.raphimc.viaproxy.proxy.proxy2server.passthrough.PassthroughProxy2ServerChannelInitializer;
|
import net.raphimc.viaproxy.proxy.proxy2server.passthrough.PassthroughProxy2ServerChannelInitializer;
|
||||||
import net.raphimc.viaproxy.proxy.proxy2server.passthrough.PassthroughProxy2ServerHandler;
|
import net.raphimc.viaproxy.proxy.proxy2server.passthrough.PassthroughProxy2ServerHandler;
|
||||||
@ -74,7 +75,8 @@ public class PassthroughClient2ProxyHandler extends SimpleChannelInboundHandler<
|
|||||||
|
|
||||||
protected void connectToServer(final Channel c2pChannel) {
|
protected void connectToServer(final Channel c2pChannel) {
|
||||||
final Supplier<ChannelHandler> handlerSupplier = () -> ViaProxy.EVENT_MANAGER.call(new Proxy2ServerHandlerCreationEvent(new PassthroughProxy2ServerHandler(), true)).getHandler();
|
final Supplier<ChannelHandler> handlerSupplier = () -> ViaProxy.EVENT_MANAGER.call(new Proxy2ServerHandlerCreationEvent(new PassthroughProxy2ServerHandler(), true)).getHandler();
|
||||||
this.proxyConnection = new LegacyProxyConnection(handlerSupplier, PassthroughProxy2ServerChannelInitializer::new, c2pChannel);
|
final LegacyProxyConnection proxyConnection = new LegacyProxyConnection(handlerSupplier, PassthroughProxy2ServerChannelInitializer::new, c2pChannel);
|
||||||
|
this.proxyConnection = ViaProxy.EVENT_MANAGER.call(new ProxySessionCreationEvent<>(proxyConnection, true)).getProxySession();
|
||||||
this.proxyConnection.getC2P().attr(LegacyProxyConnection.LEGACY_PROXY_CONNECTION_ATTRIBUTE_KEY).set(this.proxyConnection);
|
this.proxyConnection.getC2P().attr(LegacyProxyConnection.LEGACY_PROXY_CONNECTION_ATTRIBUTE_KEY).set(this.proxyConnection);
|
||||||
|
|
||||||
final ServerAddress unresolvedAddress = this.getServerAddress();
|
final ServerAddress unresolvedAddress = this.getServerAddress();
|
||||||
|
Loading…
Reference in New Issue
Block a user