web-proxy rewrite

This commit is contained in:
Kevin Kai Berthold 2023-09-21 23:44:05 +02:00
parent 26c741ad03
commit 283fa1abc2
10 changed files with 63 additions and 134 deletions

View file

@ -1,7 +1,6 @@
using Insight.Domain.Interfaces;
using Insight.Domain.Messages;
using Insight.Domain.Messages.Agent;
using Insight.Domain.Messages.Web;
using Microsoft.Extensions.Logging;
using MongoDB.Driver;
using Vaitr.Network;
@ -26,25 +25,17 @@ public class ConsoleHandler : IMessageHandler<AgentSession>
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
if (message is ConsoleQuery consoleQuery)
if (message is Proxy<ConsoleQuery> consoleResponse)
{
await OnConsoleQueryAsync(sender, consoleQuery, cancellationToken);
await OnConsoleQueryAsync(sender, consoleResponse, cancellationToken);
}
}
private async ValueTask OnConsoleQueryAsync(AgentSession session, ConsoleQuery query, CancellationToken cancellationToken)
private async ValueTask OnConsoleQueryAsync(AgentSession session, Proxy<ConsoleQuery> consoleResponse, CancellationToken cancellationToken)
{
// check if web online
if (_webPool.FirstOrDefault().Value is not WebSession web) return;
await web.SendAsync(new ConsoleQueryProxy
{
Id = query.Id,
HostId = query.HostId,
Query = query.Query,
Data = query.Data,
Errors = query.Errors,
HadErrors = query.HadErrors
}, cancellationToken);
await web.SendAsync(consoleResponse, cancellationToken);
}
}

View file

@ -1,7 +1,6 @@
using Insight.Domain.Interfaces;
using Insight.Domain.Messages;
using Insight.Domain.Messages.Agent;
using Insight.Domain.Messages.Web;
using Insight.Infrastructure;
using Insight.Infrastructure.Entities;
using Microsoft.Extensions.Logging;
@ -33,19 +32,18 @@ public class ConsoleProxyHandler : IMessageHandler<WebSession>
_database = database;
_bus = bus;
_logger = logger;
_subscriptions.Add(_bus.SubscribeAsync<ConsoleQuery>(OnConsoleQueryAsync, null));
}
public async ValueTask HandleAsync<TMessage>(WebSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
if (message is ConsoleQueryProxyRequest consoleRequest)
if (message is Proxy<ConsoleQueryRequest> consoleRequest)
{
_logger.LogCritical("received: {0}" + consoleRequest.Message);
await OnConsoleQueryRequestAsync(sender, consoleRequest, cancellationToken);
}
}
private async ValueTask OnConsoleQueryRequestAsync(WebSession session, ConsoleQueryProxyRequest request, CancellationToken cancellationToken)
private async ValueTask OnConsoleQueryRequestAsync(WebSession session, Proxy<ConsoleQueryRequest> request, CancellationToken cancellationToken)
{
// get host
var hostEntity = await _database.Host()
@ -76,28 +74,7 @@ public class ConsoleProxyHandler : IMessageHandler<WebSession>
// check if agent online
if (_agentPool.FirstOrDefault(p => p.Value.Id == agentEntity.Id).Value is not AgentSession agent) return;
// send "real" packet to agent
await agent.SendAsync(new ConsoleQueryRequest
{
Id = request.Id,
HostId = request.HostId,
Query = request.Query
}, cancellationToken);
}
private async ValueTask OnConsoleQueryAsync(ConsoleQuery query, CancellationToken cancellationToken)
{
// check if web online
if (_webPool.FirstOrDefault().Value is not WebSession web) return;
await web.SendAsync(new ConsoleQueryProxy
{
Id = query.Id,
HostId = query.HostId,
Query = query.Query,
Data = query.Data,
Errors = query.Errors,
HadErrors = query.HadErrors
}, cancellationToken);
// proxy-send request packet to agent
await agent.SendAsync(request, cancellationToken);
}
}