This commit is contained in:
snltty
2025-07-01 10:39:01 +08:00
parent a5fb3716c3
commit 0e8ddbec2f
3 changed files with 22 additions and 7 deletions

View File

@@ -168,7 +168,7 @@ namespace linker.messenger.relay.messenger
bool validated = string.IsNullOrWhiteSpace(error);
return (await relayServerTransfer.GetNodes(validated, relayInfo.UserId), validated);
}
/// <summary>
/// 收到中继请求
@@ -179,7 +179,19 @@ namespace linker.messenger.relay.messenger
public async Task RelayForward(IConnection connection)
{
RelayInfo info = serializer.Deserialize<RelayInfo>(connection.ReceiveRequestWrap.Payload.Span);
await RelayForward(connection, info, (ushort)RelayMessengerIds.RelayForward, () =>
await RelayForward(connection, new RelayInfo170
{
FlowingId = info.FlowingId,
FromMachineId = info.FromMachineId,
FromMachineName = info.FromMachineName,
RemoteMachineId = info.RemoteMachineId,
RemoteMachineName = info.RemoteMachineName,
NodeId = info.NodeId,
UserId = string.Empty,
TransactionId = info.TransactionId,
TransportName = info.TransportName,
SecretKey = info.SecretKey,
}, (ushort)RelayMessengerIds.RelayForward, () =>
{
return serializer.Serialize(info);
}).ConfigureAwait(false);
@@ -193,7 +205,7 @@ namespace linker.messenger.relay.messenger
return serializer.Serialize(info);
}).ConfigureAwait(false);
}
public async Task RelayForward(IConnection connection, RelayInfo info, ushort id, Func<byte[]> data)
public async Task RelayForward(IConnection connection, RelayInfo170 info, ushort id, Func<byte[]> data)
{
if (signCaching.TryGet(connection.Id, info.RemoteMachineId, out SignCacheInfo from, out SignCacheInfo to) == false)
{
@@ -202,7 +214,7 @@ namespace linker.messenger.relay.messenger
}
//需要验证
if (relayServerTransfer.NodeValidate(info.NodeId))
if (await relayServerTransfer.NodeValidate(info.NodeId, info.UserId))
{
info.RemoteMachineId = to.MachineId;
info.FromMachineId = from.MachineId;

View File

@@ -6,6 +6,7 @@ using linker.messenger.relay.messenger;
using linker.messenger.relay.server.caching;
using linker.messenger.wlist;
using System.Collections.Concurrent;
using System.Linq;
using System.Net;
namespace linker.messenger.relay.server
@@ -154,9 +155,11 @@ namespace linker.messenger.relay.server
/// </summary>
/// <param name="nodeId"></param>
/// <returns></returns>
public bool NodeValidate(string nodeId)
public async Task<bool> NodeValidate(string nodeId,string userid)
{
return reports.TryGetValue(nodeId, out RelayServerNodeReportInfo170 relayNodeReportInfo) && relayNodeReportInfo.Public == false;
var nodes = await whiteListServerStore.Get("Relay", userid);
return reports.TryGetValue(nodeId, out RelayServerNodeReportInfo170 node)
&& node.Public == false && nodes.Contains(node.Id) == false;
}
/// <summary>

View File

@@ -1,5 +1,5 @@
v1.8.6
2025-07-01 10:28:15
2025-07-01 10:39:01
1. 一些累计更新
2. 白名单
3. 一些已知的BUG