Added security exceptions to the RemoteStreamReaderClient
Some checks failed
🚀 Pack skyscraper8 / make-zip (push) Failing after 37s

This commit is contained in:
Fey 2026-05-10 15:38:56 +02:00
parent b75bd3c4dd
commit 7c38d20010
4 changed files with 35 additions and 4 deletions

View File

@ -305,7 +305,7 @@ internal class ReutersWneExtractor : ISkyscraperMpePlugin
{
if (length == 16 && udpPayload[11] == 0x07)
{
//Empty packet, likely to be used to announce stories.
//Empty packet, likely to be used to announce stories.
if (!wneStories.ContainsKey(sessionId))
{
_logger.InfoFormat("Found new WNE story #{0}", sessionId);
@ -361,9 +361,13 @@ internal class ReutersWneExtractor : ISkyscraperMpePlugin
}
return false;
}
wneStories[sessionId].AppendPayloadBlock(udpPayload.Slice(16));
Handler?.OnWneStoryProgress(new WneStoryProgress(wneStories[sessionId]));
if (wneStories[sessionId].IsProgressEventWorthwhile())
{
Handler?.OnWneStoryProgress(new WneStoryProgress(wneStories[sessionId]));
}
return true;
}
}

View File

@ -131,6 +131,21 @@ internal class WneStory : IDisposable
return new WneStoryProgress(this);
}
private DateTime progressLastReported;
internal bool IsProgressEventWorthwhile()
{
DateTime now = DateTime.Now;
TimeSpan sinceLastReport = now - progressLastReported;
if (sinceLastReport.TotalMilliseconds > 100)
{
progressLastReported = now;
return true;
}
else
{
return false;
}
}
}
struct WneStoryProgress

View File

@ -36,6 +36,16 @@ namespace skyscraper5.Skyscraper.IO.RemoteStreamReader
TcpStream = tcpClient.GetStream();
RemoteStreamReaderConstants greeting = (RemoteStreamReaderConstants)TcpStream.ReadUInt32BE();
switch (greeting)
{
case RemoteStreamReaderConstants.SERVER_READY:
return;
case RemoteStreamReaderConstants.DENIED_UNKNOWN_ADDRESS_FAMILY:
throw new RemoteStreamReaderException("The remote server says that this client is using an invalid Network adressing family. Please ensure that IPv4 and/or IPv6 are available on both the server and the client.");
case RemoteStreamReaderConstants.DENIED_EXTERNAL_ACCESS:
throw new RemoteStreamReaderException("The remote server thinks that this client is on another network than itself. For security purposes, RemoteStreamReader is not routeable.");
}
if (greeting != RemoteStreamReaderConstants.SERVER_READY)
{
tcpClient.Close();

View File

@ -44,6 +44,8 @@
REQUEST_RF_SCAN_2,
REQUEST_FFT_TERM,
REQUEST_FFT_INIT,
REQUEST_FFT_SCAN
REQUEST_FFT_SCAN,
DENIED_UNKNOWN_ADDRESS_FAMILY,
DENIED_EXTERNAL_ACCESS
}
}