Ref T730, style

This commit is contained in:
Klaus Basan
2019-09-27 22:53:11 +02:00
committed by Mat Sutcliffe
parent cd58108bfe
commit 6a9109bf8f
13 changed files with 153 additions and 131 deletions

View File

@@ -16,29 +16,29 @@ namespace BlackCore
{
CCryptoDtoChannel::CCryptoDtoChannel(QString channelTag, const QByteArray &aeadReceiveKey, const QByteArray &aeadTransmitKey, int receiveSequenceHistorySize)
{
ChannelTag = channelTag;
m_channelTag = channelTag;
m_aeadReceiveKey = aeadReceiveKey;
m_aeadTransmitKey = aeadTransmitKey;
receiveSequenceSizeMaxSize = receiveSequenceHistorySize;
if (receiveSequenceSizeMaxSize < 1)
receiveSequenceSizeMaxSize = 1;
receiveSequenceHistory = new uint[receiveSequenceSizeMaxSize];
receiveSequenceHistoryDepth = 0;
m_receiveSequenceSizeMaxSize = receiveSequenceHistorySize;
if (m_receiveSequenceSizeMaxSize < 1)
m_receiveSequenceSizeMaxSize = 1;
m_receiveSequenceHistory = new uint[m_receiveSequenceSizeMaxSize];
m_receiveSequenceHistoryDepth = 0;
}
CCryptoDtoChannel::CCryptoDtoChannel(CryptoDtoChannelConfigDto channelConfig, int receiveSequenceHistorySize)
{
ChannelTag = channelConfig.channelTag;
m_channelTag = channelConfig.channelTag;
m_aeadReceiveKey = channelConfig.aeadReceiveKey;
m_aeadTransmitKey = channelConfig.aeadTransmitKey;
hmacKey = channelConfig.hmacKey;
m_hmacKey = channelConfig.hmacKey;
receiveSequenceSizeMaxSize = receiveSequenceHistorySize;
if (receiveSequenceSizeMaxSize < 1)
receiveSequenceSizeMaxSize = 1;
receiveSequenceHistory = new uint[receiveSequenceSizeMaxSize];
receiveSequenceHistoryDepth = 0;
m_receiveSequenceSizeMaxSize = receiveSequenceHistorySize;
if (m_receiveSequenceSizeMaxSize < 1)
m_receiveSequenceSizeMaxSize = 1;
m_receiveSequenceHistory = new uint[m_receiveSequenceSizeMaxSize];
m_receiveSequenceHistoryDepth = 0;
}
QByteArray CCryptoDtoChannel::getTransmitKey(CryptoDtoMode mode)
@@ -56,9 +56,9 @@ namespace BlackCore
QByteArray CCryptoDtoChannel::getTransmitKey(CryptoDtoMode mode, uint &sequenceToSend)
{
sequenceToSend = transmitSequence;
transmitSequence++;
LastTransmitUtc = QDateTime::currentDateTimeUtc();
sequenceToSend = m_transmitSequence;
m_transmitSequence++;
m_LastTransmitUtc = QDateTime::currentDateTimeUtc();
switch (mode)
{
@@ -73,7 +73,7 @@ namespace BlackCore
QString CCryptoDtoChannel::getChannelTag() const
{
return ChannelTag;
return m_channelTag;
}
QByteArray CCryptoDtoChannel::getReceiveKey(CryptoDtoMode mode)
@@ -97,27 +97,27 @@ namespace BlackCore
return false;
}
if (receiveSequenceHistoryDepth < receiveSequenceSizeMaxSize) //If the buffer has been filled...
if (m_receiveSequenceHistoryDepth < m_receiveSequenceSizeMaxSize) //If the buffer has been filled...
{
receiveSequenceHistory[receiveSequenceHistoryDepth++] = sequenceReceived;
m_receiveSequenceHistory[m_receiveSequenceHistoryDepth++] = sequenceReceived;
}
else
{
int minIndex;
uint minValue = getMin(minIndex);
if (sequenceReceived < minValue) { return false; } // Possible replay attack
receiveSequenceHistory[minIndex] = sequenceReceived;
m_receiveSequenceHistory[minIndex] = sequenceReceived;
}
LastReceiveUtc = QDateTime::currentDateTimeUtc();
m_lastReceiveUtc = QDateTime::currentDateTimeUtc();
return true;
}
bool CCryptoDtoChannel::contains(uint sequence)
{
for (int i = 0; i < receiveSequenceHistoryDepth; i++)
for (int i = 0; i < m_receiveSequenceHistoryDepth; i++)
{
if (receiveSequenceHistory[i] == sequence)
if (m_receiveSequenceHistory[i] == sequence)
return true;
}
return false;
@@ -129,12 +129,12 @@ namespace BlackCore
minIndex = -1;
int index = -1;
for (int i = 0; i < receiveSequenceHistoryDepth; i++)
for (int i = 0; i < m_receiveSequenceHistoryDepth; i++)
{
index++;
if (receiveSequenceHistory[i] <= minValue)
if (m_receiveSequenceHistory[i] <= minValue)
{
minValue = receiveSequenceHistory[i];
minValue = m_receiveSequenceHistory[i];
minIndex = index;
}
}

View File

@@ -35,32 +35,36 @@ namespace BlackCore
//! Ctor
CCryptoDtoChannel(CryptoDtoChannelConfigDto channelConfig, int receiveSequenceHistorySize = 10);
//! Transmit key @{
QByteArray getTransmitKey(CryptoDtoMode mode);
QByteArray getTransmitKey(CryptoDtoMode mode, uint &sequenceToSend);
//! @}
//! Channel tag
QString getChannelTag() const;
//! Receiver key
QByteArray getReceiveKey(CryptoDtoMode mode);
//! check the received sequence
bool checkReceivedSequence(uint sequenceReceived);
private:
bool contains(uint sequence);
uint getMin(int &minIndex);
QByteArray m_aeadTransmitKey;
uint transmitSequence = 0;
QByteArray m_aeadReceiveKey;
uint *receiveSequenceHistory;
int receiveSequenceHistoryDepth;
int receiveSequenceSizeMaxSize;
uint m_transmitSequence = 0;
uint *m_receiveSequenceHistory;
int m_receiveSequenceHistoryDepth;
int m_receiveSequenceSizeMaxSize;
QByteArray hmacKey;
QString ChannelTag;
QDateTime LastTransmitUtc;
QDateTime LastReceiveUtc;
QByteArray m_hmacKey;
QString m_channelTag;
QDateTime m_LastTransmitUtc;
QDateTime m_lastReceiveUtc;
};
} // ns
} // ns

View File

@@ -75,24 +75,24 @@ namespace BlackCore
this->setObjectName("CAirspaceMonitor");
this->enableReverseLookupMessages(sApp->isDeveloperFlagSet() || CBuildConfig::isLocalDeveloperDebugBuild() ? RevLogEnabled : RevLogEnabledSimplified);
connect(m_fsdClient, &CFSDClient::atcDataUpdateReceived, this, &CAirspaceMonitor::onAtcPositionUpdate);
connect(m_fsdClient, &CFSDClient::atcDataUpdateReceived, this, &CAirspaceMonitor::onAtcPositionUpdate);
// FSD TODO
connect(m_fsdClient, &CFSDClient::atisReplyReceived, this, &CAirspaceMonitor::onAtisReceived);
connect(m_fsdClient, &CFSDClient::atisVoiceRoomReplyReceived, this, &CAirspaceMonitor::onAtisVoiceRoomReceived);
connect(m_fsdClient, &CFSDClient::atisLogoffTimeReplyReceived, this, &CAirspaceMonitor::onAtisLogoffTimeReceived);
connect(m_fsdClient, &CFSDClient::flightPlanReceived, this, &CAirspaceMonitor::onFlightPlanReceived);
connect(m_fsdClient, &CFSDClient::realNameResponseReceived, this, &CAirspaceMonitor::onRealNameReplyReceived);
connect(m_fsdClient, &CFSDClient::atisReplyReceived, this, &CAirspaceMonitor::onAtisReceived);
connect(m_fsdClient, &CFSDClient::atisVoiceRoomReplyReceived, this, &CAirspaceMonitor::onAtisVoiceRoomReceived);
connect(m_fsdClient, &CFSDClient::atisLogoffTimeReplyReceived, this, &CAirspaceMonitor::onAtisLogoffTimeReceived);
connect(m_fsdClient, &CFSDClient::flightPlanReceived, this, &CAirspaceMonitor::onFlightPlanReceived);
connect(m_fsdClient, &CFSDClient::realNameResponseReceived, this, &CAirspaceMonitor::onRealNameReplyReceived);
connect(m_fsdClient, &CFSDClient::planeInformationReceived, this, &CAirspaceMonitor::onIcaoCodesReceived);
connect(m_fsdClient, &CFSDClient::deletePilotReceived, this, &CAirspaceMonitor::onPilotDisconnected);
connect(m_fsdClient, &CFSDClient::deleteAtcReceived, this, &CAirspaceMonitor::onAtcControllerDisconnected);
connect(m_fsdClient, &CFSDClient::pilotDataUpdateReceived, this, &CAirspaceMonitor::onAircraftUpdateReceived);
connect(m_fsdClient, &CFSDClient::pilotDataUpdateReceived, this, &CAirspaceMonitor::onAircraftUpdateReceived);
connect(m_fsdClient, &CFSDClient::interimPilotDataUpdatedReceived, this, &CAirspaceMonitor::onAircraftInterimUpdateReceived);
connect(m_fsdClient, &CFSDClient::com1FrequencyResponseReceived, this, &CAirspaceMonitor::onFrequencyReceived);
connect(m_fsdClient, &CFSDClient::capabilityResponseReceived, this, &CAirspaceMonitor::onCapabilitiesReplyReceived);
connect(m_fsdClient, &CFSDClient::planeInformationFsinnReceived, this, &CAirspaceMonitor::onCustomFSInnPacketReceived);
connect(m_fsdClient, &CFSDClient::serverResponseReceived, this, &CAirspaceMonitor::onServerReplyReceived);
connect(m_fsdClient, &CFSDClient::aircraftConfigReceived, this, &CAirspaceMonitor::onAircraftConfigReceived);
connect(m_fsdClient, &CFSDClient::connectionStatusChanged, this, &CAirspaceMonitor::onConnectionStatusChanged);
connect(m_fsdClient, &CFSDClient::com1FrequencyResponseReceived, this, &CAirspaceMonitor::onFrequencyReceived);
connect(m_fsdClient, &CFSDClient::capabilityResponseReceived, this, &CAirspaceMonitor::onCapabilitiesReplyReceived);
connect(m_fsdClient, &CFSDClient::planeInformationFsinnReceived, this, &CAirspaceMonitor::onCustomFSInnPacketReceived);
connect(m_fsdClient, &CFSDClient::serverResponseReceived, this, &CAirspaceMonitor::onServerReplyReceived);
connect(m_fsdClient, &CFSDClient::aircraftConfigReceived, this, &CAirspaceMonitor::onAircraftConfigReceived);
connect(m_fsdClient, &CFSDClient::connectionStatusChanged, this, &CAirspaceMonitor::onConnectionStatusChanged);
// AutoConnection: this should also avoid race conditions by updating the bookings
Q_ASSERT_X(sApp && sApp->getWebDataServices(), Q_FUNC_INFO, "Missing data reader");

View File

@@ -40,7 +40,7 @@ namespace BlackCore
{
BlackMisc::CLogMessage(static_cast<ClientQuery *>(nullptr)).debug(u"Wrong number of arguments.");
return {};
};
}
QStringList payload;
if (tokens.size() > 3) { payload = tokens.mid(3); }

View File

@@ -78,14 +78,14 @@ namespace BlackCore
}
CFSDClient::CFSDClient(IClientProvider *clientProvider,
IOwnAircraftProvider *ownAircraftProvider,
IRemoteAircraftProvider *remoteAircraftProvider,
QObject *parent)
: QObject(parent),
CClientAware(clientProvider),
COwnAircraftAware(ownAircraftProvider),
CRemoteAircraftAware(remoteAircraftProvider),
m_tokenBucket(10, CTime(5, CTimeUnit::s()), 1)
IOwnAircraftProvider *ownAircraftProvider,
IRemoteAircraftProvider *remoteAircraftProvider,
QObject *parent)
: QObject(parent),
CClientAware(clientProvider),
COwnAircraftAware(ownAircraftProvider),
CRemoteAircraftAware(remoteAircraftProvider),
m_tokenBucket(10, CTime(5, CTimeUnit::s()), 1)
{
initializeMessageTypes();
connect(&m_socket, &QTcpSocket::readyRead, this, &CFSDClient::readDataFromSocket);
@@ -308,15 +308,15 @@ namespace BlackCore
if (m_connectionStatus.isDisconnected()) { return; }
CSimulatedAircraft myAircraft(getOwnAircraft());
InterimPilotDataUpdate interimPilotDataUpdate(m_ownCallsign.asString(),
QString(),
myAircraft.latitude().value(CAngleUnit::deg()),
myAircraft.longitude().value(CAngleUnit::deg()),
myAircraft.getAltitude().valueInteger(CLengthUnit::ft()),
myAircraft.getGroundSpeed().valueInteger(CSpeedUnit::kts()),
myAircraft.getPitch().value(CAngleUnit::deg()),
myAircraft.getBank().value(CAngleUnit::deg()),
myAircraft.getHeading().value(CAngleUnit::deg()),
myAircraft.getParts().isOnGround());
QString(),
myAircraft.latitude().value(CAngleUnit::deg()),
myAircraft.longitude().value(CAngleUnit::deg()),
myAircraft.getAltitude().valueInteger(CLengthUnit::ft()),
myAircraft.getGroundSpeed().valueInteger(CSpeedUnit::kts()),
myAircraft.getPitch().value(CAngleUnit::deg()),
myAircraft.getBank().value(CAngleUnit::deg()),
myAircraft.getHeading().value(CAngleUnit::deg()),
myAircraft.getParts().isOnGround());
for (const auto &receiver : as_const(m_interimPositionReceivers))
{
@@ -376,7 +376,7 @@ namespace BlackCore
void CFSDClient::sendClientQueryFlightPlan(const CCallsign callsign)
{
sendClientQuery(ClientQueryType::FP, {}, { callsign.toQString() } );
sendClientQuery(ClientQueryType::FP, {}, { callsign.toQString() });
}
void CFSDClient::sendClientQueryAircraftConfig(const CCallsign callsign)
@@ -520,7 +520,7 @@ namespace BlackCore
void CFSDClient::sendTextMessage(const QString &receiver, const QString &message)
{
const CTextMessage msg (message, getOwnCallsign(), { receiver });
const CTextMessage msg(message, getOwnCallsign(), { receiver });
sendTextMessage(msg);
}
@@ -598,10 +598,10 @@ namespace BlackCore
if (modelString.isEmpty()) { modelString = noModelString(); }
PlaneInfoRequestFsinn planeInfoRequestFsinn(m_ownCallsign.asString(), callsign.toQString(),
myAircraft.getAirlineIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCombinedType(),
m_sendMModelString ? modelString : QString());
myAircraft.getAirlineIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCombinedType(),
m_sendMModelString ? modelString : QString());
sendMessage(planeInfoRequestFsinn);
this->increaseStatisticsValue(QStringLiteral("sendPlaneInfoRequestFsinn"));
}
@@ -621,10 +621,10 @@ namespace BlackCore
if (modelString.isEmpty()) { modelString = noModelString(); }
PlaneInformationFsinn planeInformationFsinn(m_ownCallsign.asString(), callsign.toQString(),
myAircraft.getAirlineIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCombinedType(),
m_sendMModelString ? modelString : QString());
myAircraft.getAirlineIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCombinedType(),
m_sendMModelString ? modelString : QString());
sendMessage(planeInformationFsinn);
this->increaseStatisticsValue(QStringLiteral("sendPlaneInformationFsinn"));
}
@@ -740,9 +740,9 @@ namespace BlackCore
vatsim_get_system_unique_id(sysuid);
userInfo += QString("CID=") % cid % " " % m_clientName % " IP=" % m_socket.localAddress().toString() %
" SYS_UID=" % sysuid % " FSVER=" % m_hostApplication % " LT=" % QString::number(latitude) %
" LO=" % QString::number(longitude) % " AL=" % QString::number(altitude) %
" " % realName;
" SYS_UID=" % sysuid % " FSVER=" % m_hostApplication % " LT=" % QString::number(latitude) %
" LO=" % QString::number(longitude) % " AL=" % QString::number(altitude) %
" " % realName;
TextMessage textMessage(m_ownCallsign.asString(), receiver, userInfo);
sendMessage(textMessage);
@@ -806,7 +806,7 @@ namespace BlackCore
{
m_messageTypeMapping["#AA"] = MessageType::AddAtc;
m_messageTypeMapping["#AP"] = MessageType::AddPilot;
m_messageTypeMapping["%"] = MessageType::AtcDataUpdate;
m_messageTypeMapping["%"] = MessageType::AtcDataUpdate;
m_messageTypeMapping["$ZC"] = MessageType::AuthChallenge;
m_messageTypeMapping["$ZR"] = MessageType::AuthResponse;
m_messageTypeMapping["$ID"] = MessageType::ClientIdentification;
@@ -817,7 +817,7 @@ namespace BlackCore
m_messageTypeMapping["$FP"] = MessageType::FlightPlan;
m_messageTypeMapping["$DI"] = MessageType::FsdIdentification;
m_messageTypeMapping["$!!"] = MessageType::KillRequest;
m_messageTypeMapping["@"] = MessageType::PilotDataUpdate;
m_messageTypeMapping["@"] = MessageType::PilotDataUpdate;
m_messageTypeMapping["$PI"] = MessageType::Ping;
m_messageTypeMapping["$PO"] = MessageType::Pong;
m_messageTypeMapping["$ER"] = MessageType::ServerError;
@@ -938,12 +938,12 @@ namespace BlackCore
const CCallsign callsign(dataUpdate.sender(), CCallsign::Aircraft);
CAircraftSituation situation(
callsign,
CCoordinateGeodetic(dataUpdate.m_latitude, dataUpdate.m_longitude, dataUpdate.m_altitudeTrue),
CHeading(dataUpdate.m_heading, CHeading::True, CAngleUnit::deg()),
CAngle(dataUpdate.m_pitch, CAngleUnit::deg()),
CAngle(dataUpdate.m_bank, CAngleUnit::deg()),
CSpeed(dataUpdate.m_groundSpeed, CSpeedUnit::kts()));
callsign,
CCoordinateGeodetic(dataUpdate.m_latitude, dataUpdate.m_longitude, dataUpdate.m_altitudeTrue),
CHeading(dataUpdate.m_heading, CHeading::True, CAngleUnit::deg()),
CAngle(dataUpdate.m_pitch, CAngleUnit::deg()),
CAngle(dataUpdate.m_bank, CAngleUnit::deg()),
CSpeed(dataUpdate.m_groundSpeed, CSpeedUnit::kts()));
situation.setPressureAltitude(CAltitude(dataUpdate.m_altitudePressure, CAltitude::MeanSeaLevel, CAltitude::PressureAltitude, CLengthUnit::ft()));
situation.setOnGround(dataUpdate.m_onGround);
@@ -1328,12 +1328,12 @@ namespace BlackCore
const CCallsign callsign(interimPilotDataUpdate.sender(), CCallsign::Aircraft);
CAircraftSituation situation(
callsign,
CCoordinateGeodetic(interimPilotDataUpdate.m_latitude, interimPilotDataUpdate.m_longitude, interimPilotDataUpdate.m_altitudeTrue),
CHeading(interimPilotDataUpdate.m_heading, CHeading::True, CAngleUnit::deg()),
CAngle(interimPilotDataUpdate.m_pitch, CAngleUnit::deg()),
CAngle(interimPilotDataUpdate.m_bank, CAngleUnit::deg()),
CSpeed(interimPilotDataUpdate.m_groundSpeed, CSpeedUnit::kts()));
callsign,
CCoordinateGeodetic(interimPilotDataUpdate.m_latitude, interimPilotDataUpdate.m_longitude, interimPilotDataUpdate.m_altitudeTrue),
CHeading(interimPilotDataUpdate.m_heading, CHeading::True, CAngleUnit::deg()),
CAngle(interimPilotDataUpdate.m_pitch, CAngleUnit::deg()),
CAngle(interimPilotDataUpdate.m_bank, CAngleUnit::deg()),
CSpeed(interimPilotDataUpdate.m_groundSpeed, CSpeedUnit::kts()));
situation.setOnGround(interimPilotDataUpdate.m_onGround);
// Ref T297, default offset time