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;
}
}
}