Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/client/StarClientApplication.cpp2
-rw-r--r--source/game/StarNetPackets.cpp5
-rw-r--r--source/game/StarNetPackets.hpp2
-rw-r--r--source/game/StarUniverseClient.cpp7
-rw-r--r--source/game/StarUniverseServer.cpp19
5 files changed, 23 insertions, 12 deletions
diff --git a/source/client/StarClientApplication.cpp b/source/client/StarClientApplication.cpp
index a8ab969..5f3d119 100644
--- a/source/client/StarClientApplication.cpp
+++ b/source/client/StarClientApplication.cpp
@@ -360,7 +360,7 @@ void ClientApplication::update() {
m_guiContext->cleanup();
m_edgeKeyEvents.clear();
- m_input->reset();
+ m_input->update();
}
void ClientApplication::render() {
diff --git a/source/game/StarNetPackets.cpp b/source/game/StarNetPackets.cpp
index d0aacac..b8605ed 100644
--- a/source/game/StarNetPackets.cpp
+++ b/source/game/StarNetPackets.cpp
@@ -404,10 +404,10 @@ ClientConnectPacket::ClientConnectPacket() {}
ClientConnectPacket::ClientConnectPacket(ByteArray assetsDigest, bool allowAssetsMismatch, Uuid playerUuid,
String playerName, String playerSpecies, WorldChunks shipChunks, ShipUpgrades shipUpgrades,
- bool introComplete, String account)
+ bool introComplete, String account, Json info)
: assetsDigest(std::move(assetsDigest)), allowAssetsMismatch(allowAssetsMismatch), playerUuid(std::move(playerUuid)),
playerName(std::move(playerName)), playerSpecies(std::move(playerSpecies)), shipChunks(std::move(shipChunks)),
- shipUpgrades(std::move(shipUpgrades)), introComplete(std::move(introComplete)), account(std::move(account)) {}
+ shipUpgrades(std::move(shipUpgrades)), introComplete(std::move(introComplete)), account(std::move(account)), info(std::move(info)) {}
void ClientConnectPacket::readLegacy(DataStream& ds) {
ds.read(assetsDigest);
@@ -419,6 +419,7 @@ void ClientConnectPacket::readLegacy(DataStream& ds) {
ds.read(shipUpgrades);
ds.read(introComplete);
ds.read(account);
+ info = Json();
}
void ClientConnectPacket::read(DataStream& ds) {
diff --git a/source/game/StarNetPackets.hpp b/source/game/StarNetPackets.hpp
index 26fba1a..6181b30 100644
--- a/source/game/StarNetPackets.hpp
+++ b/source/game/StarNetPackets.hpp
@@ -310,7 +310,7 @@ struct ClientConnectPacket : PacketBase<PacketType::ClientConnect> {
ClientConnectPacket();
ClientConnectPacket(ByteArray assetsDigest, bool allowAssetsMismatch, Uuid playerUuid, String playerName,
String playerSpecies, WorldChunks shipChunks, ShipUpgrades shipUpgrades, bool introComplete,
- String account);
+ String account, Json info = {});
void readLegacy(DataStream& ds) override;
void read(DataStream& ds) override;
diff --git a/source/game/StarUniverseClient.cpp b/source/game/StarUniverseClient.cpp
index a5bd9df..286df89 100644
--- a/source/game/StarUniverseClient.cpp
+++ b/source/game/StarUniverseClient.cpp
@@ -111,10 +111,11 @@ Maybe<String> UniverseClient::connect(UniverseConnection connection, bool allowA
}
}
connection.packetSocket().setLegacy(m_legacyServer);
-
- connection.pushSingle(make_shared<ClientConnectPacket>(Root::singleton().assets()->digest(), allowAssetsMismatch, m_mainPlayer->uuid(), m_mainPlayer->name(),
+ auto clientConnect = make_shared<ClientConnectPacket>(Root::singleton().assets()->digest(), allowAssetsMismatch, m_mainPlayer->uuid(), m_mainPlayer->name(),
m_mainPlayer->species(), m_playerStorage->loadShipData(m_mainPlayer->uuid()), m_mainPlayer->shipUpgrades(),
- m_mainPlayer->log()->introComplete(), account));
+ m_mainPlayer->log()->introComplete(), account);
+ clientConnect->info = JsonObject{ {"brand", "OpenStarbound"} };
+ connection.pushSingle(std::move(clientConnect));
connection.sendAll(timeout);
connection.receiveAny(timeout);
diff --git a/source/game/StarUniverseServer.cpp b/source/game/StarUniverseServer.cpp
index 56ae634..690f1c6 100644
--- a/source/game/StarUniverseServer.cpp
+++ b/source/game/StarUniverseServer.cpp
@@ -1584,7 +1584,7 @@ void UniverseServer::acceptConnection(UniverseConnection connection, Maybe<HostA
compressedSocket->setCompressionStreamEnabled(useCompressionStream);
String remoteAddressString = remoteAddress ? toString(*remoteAddress) : "local";
- Logger::info("UniverseServer: Awaiting connection info from {}, {} client", remoteAddressString, legacyClient ? "Starbound" : "OpenStarbound");
+ Logger::info("UniverseServer: Awaiting connection info from {} ({} client)", remoteAddressString, legacyClient ? "vanilla" : "custom");
connection.receiveAny(clientWaitLimit);
auto clientConnect = as<ClientConnectPacket>(connection.pullSingle());
@@ -1597,7 +1597,6 @@ void UniverseServer::acceptConnection(UniverseConnection connection, Maybe<HostA
}
bool administrator = false;
-
String accountString = !clientConnect->account.empty() ? strf("'{}'", clientConnect->account) : "<anonymous>";
auto connectionFail = [&](String message) {
@@ -1669,14 +1668,24 @@ void UniverseServer::acceptConnection(UniverseConnection connection, Maybe<HostA
}
}
- Logger::info("UniverseServer: Logged in account '{}' as player '{}' from address {}",
- accountString, clientConnect->playerName, remoteAddressString);
+ String connectionLog = strf("UniverseServer: Logged in account '{}' as player '{}' from address {}",
+ accountString, clientConnect->playerName, remoteAddressString);
+
+ if (Json& info = clientConnect->info) {
+ if (Json brand = info.get("brand", "custom"))
+ connectionLog += strf(" ({} client)", brand.toString());
+ if (info.getBool("legacy", false))
+ connection.packetSocket().setLegacy(legacyClient = true);
+ }
+ Logger::log(LogLevel::Info, connectionLog.utf8Ptr());
+
+
mainLocker.lock();
WriteLocker clientsLocker(m_clientsLock);
if (auto clashId = getClientForUuid(clientConnect->playerUuid)) {
if (administrator) {
- doDisconnection(*clashId, "Duplicate Uuid joined and is Administrator so has priority.");
+ doDisconnection(*clashId, "Duplicate UUID joined and is Administrator so has priority.");
} else {
connectionFail("Duplicate player UUID");
return;