Added security exceptions to the RemoteStreamReaderClient
Some checks failed
🚀 Pack skyscraper8 / make-zip (push) Failing after 37s
Some checks failed
🚀 Pack skyscraper8 / make-zip (push) Failing after 37s
This commit is contained in:
parent
b75bd3c4dd
commit
7c38d20010
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user