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
@ -363,7 +363,11 @@ internal class ReutersWneExtractor : ISkyscraperMpePlugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
wneStories[sessionId].AppendPayloadBlock(udpPayload.Slice(16));
|
wneStories[sessionId].AppendPayloadBlock(udpPayload.Slice(16));
|
||||||
|
|
||||||
|
if (wneStories[sessionId].IsProgressEventWorthwhile())
|
||||||
|
{
|
||||||
Handler?.OnWneStoryProgress(new WneStoryProgress(wneStories[sessionId]));
|
Handler?.OnWneStoryProgress(new WneStoryProgress(wneStories[sessionId]));
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -131,6 +131,21 @@ internal class WneStory : IDisposable
|
|||||||
return new WneStoryProgress(this);
|
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
|
struct WneStoryProgress
|
||||||
|
|||||||
@ -36,6 +36,16 @@ namespace skyscraper5.Skyscraper.IO.RemoteStreamReader
|
|||||||
TcpStream = tcpClient.GetStream();
|
TcpStream = tcpClient.GetStream();
|
||||||
|
|
||||||
RemoteStreamReaderConstants greeting = (RemoteStreamReaderConstants)TcpStream.ReadUInt32BE();
|
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)
|
if (greeting != RemoteStreamReaderConstants.SERVER_READY)
|
||||||
{
|
{
|
||||||
tcpClient.Close();
|
tcpClient.Close();
|
||||||
|
|||||||
@ -44,6 +44,8 @@
|
|||||||
REQUEST_RF_SCAN_2,
|
REQUEST_RF_SCAN_2,
|
||||||
REQUEST_FFT_TERM,
|
REQUEST_FFT_TERM,
|
||||||
REQUEST_FFT_INIT,
|
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