diff --git a/src/linker.messenger.relay/messenger/RelayMessenger.cs b/src/linker.messenger.relay/messenger/RelayMessenger.cs
index 8e9ed8f8..7a383a1a 100644
--- a/src/linker.messenger.relay/messenger/RelayMessenger.cs
+++ b/src/linker.messenger.relay/messenger/RelayMessenger.cs
@@ -168,7 +168,7 @@ namespace linker.messenger.relay.messenger
bool validated = string.IsNullOrWhiteSpace(error);
return (await relayServerTransfer.GetNodes(validated, relayInfo.UserId), validated);
}
-
+
///
/// 收到中继请求
@@ -179,7 +179,19 @@ namespace linker.messenger.relay.messenger
public async Task RelayForward(IConnection connection)
{
RelayInfo info = serializer.Deserialize(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 data)
+ public async Task RelayForward(IConnection connection, RelayInfo170 info, ushort id, Func 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;
diff --git a/src/linker.messenger.relay/server/RelayServerMasterTransfer.cs b/src/linker.messenger.relay/server/RelayServerMasterTransfer.cs
index 186588e2..64244613 100644
--- a/src/linker.messenger.relay/server/RelayServerMasterTransfer.cs
+++ b/src/linker.messenger.relay/server/RelayServerMasterTransfer.cs
@@ -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
///
///
///
- public bool NodeValidate(string nodeId)
+ public async Task 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;
}
///
diff --git a/version.txt b/version.txt
index 58b7968a..be7a4530 100644
--- a/version.txt
+++ b/version.txt
@@ -1,5 +1,5 @@
v1.8.6
-2025-07-01 10:28:15
+2025-07-01 10:39:01
1. 一些累计更新
2. 白名单
3. 一些已知的BUG
\ No newline at end of file