using linker.messenger.signin; namespace linker.messenger.sforward.server.validator { /// /// 服务端穿透验证 /// public sealed class SForwardValidator : ISForwardValidator { private readonly ISForwardServerStore sForwardServerStore; public SForwardValidator(ISForwardServerStore sForwardServerStore) { this.sForwardServerStore = sForwardServerStore; } public async Task Validate(SignCacheInfo signCacheInfo, SForwardAddInfo sForwardAddInfo) { if (sForwardServerStore.SecretKey != sForwardAddInfo.SecretKey) { return $"sforward secretKey 【{sForwardAddInfo.SecretKey}】 valid fail"; } if (sForwardAddInfo.RemotePort > 0) { if (sForwardAddInfo.RemotePort < sForwardServerStore.TunnelPortRange[0] || sForwardAddInfo.RemotePort > sForwardServerStore.TunnelPortRange[1]) { return $"sforward tunnel port range {string.Join("-", sForwardServerStore.TunnelPortRange)}"; } } await Task.CompletedTask; return string.Empty; } } }