mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-07 11:05:33 +08:00
[FSD] Overload prevention
* only allow aircraft to be added based on new positions, NOT on received ICAO data anymore * hardcoded max.range Discussion: https://discordapp.com/channels/539048679160676382/539925070550794240/643163521999306832
This commit is contained in:
committed by
Mat Sutcliffe
parent
911b23e29d
commit
857d5eb005
@@ -643,14 +643,14 @@ namespace BlackCore
|
||||
{
|
||||
AuthResponse pduAuthResponse(m_ownCallsign.asString(), "SERVER", response);
|
||||
sendMessage(pduAuthResponse);
|
||||
this->increaseStatisticsValue(QStringLiteral("sendAuthResponse"));
|
||||
increaseStatisticsValue(QStringLiteral("sendAuthResponse"));
|
||||
}
|
||||
|
||||
void CFSDClient::sendPong(const QString &receiver, const QString ×tamp)
|
||||
{
|
||||
const Pong pong(m_ownCallsign.asString(), receiver, timestamp);
|
||||
sendMessage(pong);
|
||||
this->increaseStatisticsValue(QStringLiteral("sendPong"));
|
||||
increaseStatisticsValue(QStringLiteral("sendPong"));
|
||||
}
|
||||
|
||||
void CFSDClient::sendClientResponse(ClientQueryType queryType, const QString &receiver)
|
||||
@@ -664,22 +664,14 @@ namespace BlackCore
|
||||
else if (queryType == ClientQueryType::Capabilities)
|
||||
{
|
||||
responseData.clear();
|
||||
if (m_capabilities & Capabilities::AtcInfo)
|
||||
responseData.push_back(toQString(Capabilities::AtcInfo) % "=1");
|
||||
if (m_capabilities & Capabilities::SecondaryPos)
|
||||
responseData.push_back(toQString(Capabilities::SecondaryPos) % "=1");
|
||||
if (m_capabilities & Capabilities::AircraftInfo)
|
||||
responseData.push_back(toQString(Capabilities::AircraftInfo) % "=1");
|
||||
if (m_capabilities & Capabilities::OngoingCoord)
|
||||
responseData.push_back(toQString(Capabilities::OngoingCoord) % "=1");
|
||||
if (m_capabilities & Capabilities::InterminPos)
|
||||
responseData.push_back(toQString(Capabilities::InterminPos) % "=1");
|
||||
if (m_capabilities & Capabilities::FastPos)
|
||||
responseData.push_back(toQString(Capabilities::FastPos) % "=1");
|
||||
if (m_capabilities & Capabilities::Stealth)
|
||||
responseData.push_back(toQString(Capabilities::Stealth) % "=1");
|
||||
if (m_capabilities & Capabilities::AircraftConfig)
|
||||
responseData.push_back(toQString(Capabilities::AircraftConfig) % "=1");
|
||||
if (m_capabilities & Capabilities::AtcInfo) responseData.push_back(toQString(Capabilities::AtcInfo) % "=1");
|
||||
if (m_capabilities & Capabilities::SecondaryPos) responseData.push_back(toQString(Capabilities::SecondaryPos) % "=1");
|
||||
if (m_capabilities & Capabilities::AircraftInfo) responseData.push_back(toQString(Capabilities::AircraftInfo) % "=1");
|
||||
if (m_capabilities & Capabilities::OngoingCoord) responseData.push_back(toQString(Capabilities::OngoingCoord) % "=1");
|
||||
if (m_capabilities & Capabilities::InterminPos) responseData.push_back(toQString(Capabilities::InterminPos) % "=1");
|
||||
if (m_capabilities & Capabilities::FastPos) responseData.push_back(toQString(Capabilities::FastPos) % "=1");
|
||||
if (m_capabilities & Capabilities::Stealth) responseData.push_back(toQString(Capabilities::Stealth) % "=1");
|
||||
if (m_capabilities & Capabilities::AircraftConfig) responseData.push_back(toQString(Capabilities::AircraftConfig) % "=1");
|
||||
const ClientResponse clientResponse(m_ownCallsign.asString(), receiver, ClientQueryType::Capabilities, responseData);
|
||||
sendMessage(clientResponse);
|
||||
}
|
||||
@@ -713,12 +705,10 @@ namespace BlackCore
|
||||
else if (queryType == ClientQueryType::ATIS)
|
||||
{
|
||||
this->handleIllegalFsdState(QStringLiteral("Dont send '%1' as pilot client!").arg(toQString(ClientQueryType::ATIS)));
|
||||
return;
|
||||
}
|
||||
else if (queryType == ClientQueryType::PublicIP)
|
||||
{
|
||||
this->handleIllegalFsdState(QStringLiteral("Dont send '%1' as pilot client!").arg(toQString(ClientQueryType::PublicIP)));
|
||||
return;
|
||||
}
|
||||
else if (queryType == ClientQueryType::INF)
|
||||
{
|
||||
@@ -743,12 +733,10 @@ namespace BlackCore
|
||||
else if (queryType == ClientQueryType::FP)
|
||||
{
|
||||
this->handleIllegalFsdState(QStringLiteral("Dont send '%1' as pilot client!").arg(toQString(ClientQueryType::FP)));
|
||||
return;
|
||||
}
|
||||
else if (queryType == ClientQueryType::AircraftConfig)
|
||||
{
|
||||
this->handleIllegalFsdState(QStringLiteral("Dont send '%1' as pilot client!").arg(toQString(ClientQueryType::AircraftConfig)));
|
||||
return;
|
||||
}
|
||||
this->increaseStatisticsValue(QStringLiteral("sendClientResponse"), toQString(queryType));
|
||||
}
|
||||
|
||||
@@ -246,8 +246,8 @@ namespace BlackCore
|
||||
if (!message.isValid()) return;
|
||||
|
||||
const QString payload = message.toTokens().join(':');
|
||||
const QString line = message.pdu() + payload;
|
||||
const QString buffer = line + "\r\n";
|
||||
const QString line = message.pdu() + payload;
|
||||
const QString buffer = line + "\r\n";
|
||||
const QByteArray bufferEncoded = m_fsdTextCodec->fromUnicode(buffer);
|
||||
emitRawFsdMessage(buffer.trimmed(), true);
|
||||
if (m_printToConsole) { qDebug() << "FSD Sent=>" << bufferEncoded; }
|
||||
|
||||
@@ -43,14 +43,14 @@ namespace BlackCore
|
||||
AtcRating fromQString(const QString &str)
|
||||
{
|
||||
if (str == "1") return AtcRating::Observer;
|
||||
else if (str == "2") return AtcRating::Student;
|
||||
else if (str == "3") return AtcRating::Student2;
|
||||
else if (str == "4") return AtcRating::Student3;
|
||||
else if (str == "5") return AtcRating::Controller1;
|
||||
else if (str == "6") return AtcRating::Controller2;
|
||||
else if (str == "7") return AtcRating::Controller3;
|
||||
else if (str == "8") return AtcRating::Instructor1;
|
||||
else if (str == "9") return AtcRating::Instructor2;
|
||||
else if (str == "2") return AtcRating::Student;
|
||||
else if (str == "3") return AtcRating::Student2;
|
||||
else if (str == "4") return AtcRating::Student3;
|
||||
else if (str == "5") return AtcRating::Controller1;
|
||||
else if (str == "6") return AtcRating::Controller2;
|
||||
else if (str == "7") return AtcRating::Controller3;
|
||||
else if (str == "8") return AtcRating::Instructor1;
|
||||
else if (str == "9") return AtcRating::Instructor2;
|
||||
else if (str == "10") return AtcRating::Instructor3;
|
||||
else if (str == "11") return AtcRating::Supervisor;
|
||||
else if (str == "12") return AtcRating::Administrator;
|
||||
@@ -176,17 +176,17 @@ namespace BlackCore
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case ClientQueryType::IsValidATC: return "ATC";
|
||||
case ClientQueryType::Capabilities: return "CAPS";
|
||||
case ClientQueryType::Com1Freq: return "C?";
|
||||
case ClientQueryType::RealName: return "RN";
|
||||
case ClientQueryType::Server: return "SV";
|
||||
case ClientQueryType::ATIS: return "ATIS";
|
||||
case ClientQueryType::PublicIP: return "IP";
|
||||
case ClientQueryType::INF: return "INF";
|
||||
case ClientQueryType::FP: return "FP";
|
||||
case ClientQueryType::IsValidATC: return "ATC";
|
||||
case ClientQueryType::Capabilities: return "CAPS";
|
||||
case ClientQueryType::Com1Freq: return "C?";
|
||||
case ClientQueryType::RealName: return "RN";
|
||||
case ClientQueryType::Server: return "SV";
|
||||
case ClientQueryType::ATIS: return "ATIS";
|
||||
case ClientQueryType::PublicIP: return "IP";
|
||||
case ClientQueryType::INF: return "INF";
|
||||
case ClientQueryType::FP: return "FP";
|
||||
case ClientQueryType::AircraftConfig: return "ACC";
|
||||
case ClientQueryType::Unknown: qFatal("Don't serialize ClientQueryType::Unknown!");
|
||||
case ClientQueryType::Unknown: return "Unknown query type";
|
||||
}
|
||||
Q_UNREACHABLE();
|
||||
return {};
|
||||
@@ -204,7 +204,7 @@ namespace BlackCore
|
||||
else if (str == "IP") return ClientQueryType::PublicIP;
|
||||
else if (str == "INF") return ClientQueryType::INF;
|
||||
else if (str == "FP") return ClientQueryType::FP;
|
||||
else if (str == "ACC") return ClientQueryType::AircraftConfig;
|
||||
else if (str == "ACC") return ClientQueryType::AircraftConfig;
|
||||
else
|
||||
{
|
||||
// networkLog(vatSeverityDebug, "ClientQueryType fromString(str)", "Unknown client query type");
|
||||
@@ -229,11 +229,11 @@ namespace BlackCore
|
||||
template<>
|
||||
FlightType fromQString(const QString &str)
|
||||
{
|
||||
if (str == QLatin1String("I")) return FlightType::IFR;
|
||||
else if (str == QLatin1String("V")) return FlightType::VFR;
|
||||
else if (str == QLatin1String("S")) return FlightType::SVFR;
|
||||
else if (str == QLatin1String("D")) return FlightType::DVFR;
|
||||
else return FlightType::IFR;
|
||||
if (str == QLatin1String("I")) return FlightType::IFR;
|
||||
else if (str == QLatin1String("V")) return FlightType::VFR;
|
||||
else if (str == QLatin1String("S")) return FlightType::SVFR;
|
||||
else if (str == QLatin1String("D")) return FlightType::DVFR;
|
||||
else return FlightType::IFR;
|
||||
}
|
||||
|
||||
template<>
|
||||
@@ -262,10 +262,10 @@ namespace BlackCore
|
||||
template<>
|
||||
CTransponder::TransponderMode fromQString(const QString &str)
|
||||
{
|
||||
if (str == "S") return CTransponder::StateStandby;
|
||||
else if (str == "N") return CTransponder::ModeC;
|
||||
else if (str == "Y") return CTransponder::StateIdent;
|
||||
else return CTransponder::StateStandby;
|
||||
if (str == "S") return CTransponder::StateStandby;
|
||||
else if (str == "N") return CTransponder::ModeC;
|
||||
else if (str == "Y") return CTransponder::StateIdent;
|
||||
else return CTransponder::StateStandby;
|
||||
}
|
||||
|
||||
template<>
|
||||
|
||||
Reference in New Issue
Block a user