From 2ed5e8aefbc21bde4d7d16ff1f91dc0c4552c718 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly <roxanne@highfidelity.io> Date: Wed, 19 Jun 2019 13:53:38 -0700 Subject: [PATCH 1/2] add OS type to connect message --- domain-server/src/DomainGatekeeper.cpp | 3 ++- domain-server/src/NodeConnectionData.cpp | 3 +++ domain-server/src/NodeConnectionData.h | 2 +- libraries/networking/src/NodeList.cpp | 14 ++++++++++++++ libraries/networking/src/udt/PacketHeaders.cpp | 2 +- libraries/networking/src/udt/PacketHeaders.h | 3 ++- 6 files changed, 23 insertions(+), 4 deletions(-) diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index 709c5810e2..915fec68aa 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -127,7 +127,8 @@ void DomainGatekeeper::processConnectRequestPacket(QSharedPointer<ReceivedMessag << "and machine fingerprint" << nodeConnection.machineFingerprint << "user" << username << "reason" << QString(nodeConnection.connectReason ? "SilentDomainDisconnect" : "Connect") - << "previous connection uptime" << nodeConnection.previousConnectionUpTime/USECS_PER_MSEC << "msec"; + << "previous connection uptime" << nodeConnection.previousConnectionUpTime/USECS_PER_MSEC << "msec" + << "\nsysinfo" << nodeConnection.SystemInfo; // signal that we just connected a node so the DomainServer can get it a list // and broadcast its presence right away diff --git a/domain-server/src/NodeConnectionData.cpp b/domain-server/src/NodeConnectionData.cpp index b4aaacd749..9703db39c8 100644 --- a/domain-server/src/NodeConnectionData.cpp +++ b/domain-server/src/NodeConnectionData.cpp @@ -36,6 +36,9 @@ NodeConnectionData NodeConnectionData::fromDataStream(QDataStream& dataStream, c // now the machine fingerprint dataStream >> newHeader.machineFingerprint; + // and the operating system type + dataStream >> newHeader.SystemInfo; + dataStream >> newHeader.connectReason; dataStream >> newHeader.previousConnectionUpTime; diff --git a/domain-server/src/NodeConnectionData.h b/domain-server/src/NodeConnectionData.h index 23eceb0dca..3833f5afd3 100644 --- a/domain-server/src/NodeConnectionData.h +++ b/domain-server/src/NodeConnectionData.h @@ -31,9 +31,9 @@ public: QString placeName; QString hardwareAddress; QUuid machineFingerprint; + QString SystemInfo; quint32 connectReason; quint64 previousConnectionUpTime; - QByteArray protocolVersion; }; diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 3d367bc761..96b713c583 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -418,6 +418,20 @@ void NodeList::sendDomainServerCheckIn() { auto accountManager = DependencyManager::get<AccountManager>(); packetStream << FingerprintUtils::getMachineFingerprint(); + QString systemInfo; +#if defined Q_OS_WIN + systemInfo = "OS:Windows"; +#elif defined Q_OS_OSX + systemInfo = "OS:OSX"; +#elif defined Q_OS_LINUX + systemInfo = "OS:Linux"; +#elif defined Q_OS_ANDROID + systemInfo = "OS:Android"; +#else + systemInfo = "OS:Unknown"; +#endif + packetStream << systemInfo; + packetStream << _connectReason; if (_nodeDisconnectTimestamp < _nodeConnectTimestamp) { diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 30066b68e8..e434867c9a 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -72,7 +72,7 @@ PacketVersion versionForPacketType(PacketType packetType) { return static_cast<PacketVersion>(DomainConnectionDeniedVersion::IncludesExtraInfo); case PacketType::DomainConnectRequest: - return static_cast<PacketVersion>(DomainConnectRequestVersion::HasReason); + return static_cast<PacketVersion>(DomainConnectRequestVersion::HasSystemInfo); case PacketType::DomainServerAddedNode: return static_cast<PacketVersion>(DomainServerAddedNodeVersion::PermissionsGrid); diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 93a5d4e2b4..a244399c5a 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -346,7 +346,8 @@ enum class DomainConnectRequestVersion : PacketVersion { HasMachineFingerprint, AlwaysHasMachineFingerprint, HasTimestamp, - HasReason + HasReason, + HasSystemInfo }; enum class DomainConnectionDeniedVersion : PacketVersion { From 0576e6ae3e0fcd37613122d9e3499ff2e91b6d46 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly <roxanne@highfidelity.io> Date: Wed, 19 Jun 2019 15:10:02 -0700 Subject: [PATCH 2/2] remove newline for sysinfo to make splunk queries easier --- domain-server/src/DomainGatekeeper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index 915fec68aa..6d339852d5 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -128,7 +128,7 @@ void DomainGatekeeper::processConnectRequestPacket(QSharedPointer<ReceivedMessag << "user" << username << "reason" << QString(nodeConnection.connectReason ? "SilentDomainDisconnect" : "Connect") << "previous connection uptime" << nodeConnection.previousConnectionUpTime/USECS_PER_MSEC << "msec" - << "\nsysinfo" << nodeConnection.SystemInfo; + << "sysinfo" << nodeConnection.SystemInfo; // signal that we just connected a node so the DomainServer can get it a list // and broadcast its presence right away