Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
.idea/
.vscode/
.vs/
vcpkg_installed/

# Build results

Expand Down
8 changes: 4 additions & 4 deletions src/actions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include "game.h"
#include "pugicast.h"
#include "spells.h"
#include <fmt/format.h>
#include <format>

extern Game g_game;
extern Spells* g_spells;
Expand Down Expand Up @@ -394,11 +394,11 @@ static void showUseHotkeyMessage(Player* player, const Item* item, uint32_t coun
{
const ItemType& it = Item::items[item->getID()];
if (!it.showCount) {
player->sendTextMessage(MESSAGE_INFO_DESCR, fmt::format("Using one of {:s}...", item->getName()));
player->sendTextMessage(MESSAGE_INFO_DESCR, std::format("Using one of {:s}...", item->getName()));
} else if (count == 1) {
player->sendTextMessage(MESSAGE_INFO_DESCR, fmt::format("Using the last {:s}...", item->getName()));
player->sendTextMessage(MESSAGE_INFO_DESCR, std::format("Using the last {:s}...", item->getName()));
} else {
player->sendTextMessage(MESSAGE_INFO_DESCR, fmt::format("Using one of {:d} {:s}...", count, item->getPluralName()));
player->sendTextMessage(MESSAGE_INFO_DESCR, std::format("Using one of {:d} {:s}...", count, item->getPluralName()));
}
}

Expand Down
14 changes: 7 additions & 7 deletions src/ban.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include "databasetasks.h"
#include "tools.h"

#include <fmt/format.h>
#include <format>

bool Ban::acceptConnection(uint32_t clientIP)
{
Expand Down Expand Up @@ -48,16 +48,16 @@ bool IOBan::isAccountBanned(uint32_t accountId, BanInfo& banInfo)
{
Database& db = Database::getInstance();

DBResult_ptr result = db.storeQuery(fmt::format("SELECT `reason`, `expires_at`, `banned_at`, `banned_by`, (SELECT `name` FROM `players` WHERE `id` = `banned_by`) AS `name` FROM `account_bans` WHERE `account_id` = {:d}", accountId));
DBResult_ptr result = db.storeQuery(std::format("SELECT `reason`, `expires_at`, `banned_at`, `banned_by`, (SELECT `name` FROM `players` WHERE `id` = `banned_by`) AS `name` FROM `account_bans` WHERE `account_id` = {:d}", accountId));
if (!result) {
return false;
}

int64_t expiresAt = result->getNumber<int64_t>("expires_at");
if (expiresAt != 0 && time(nullptr) > expiresAt) {
// Move the ban to history if it has expired
g_databaseTasks.addTask(fmt::format("INSERT INTO `account_ban_history` (`account_id`, `reason`, `banned_at`, `expired_at`, `banned_by`) VALUES ({:d}, {:s}, {:d}, {:d}, {:d})", accountId, db.escapeString(result->getString("reason")), result->getNumber<time_t>("banned_at"), expiresAt, result->getNumber<uint32_t>("banned_by")));
g_databaseTasks.addTask(fmt::format("DELETE FROM `account_bans` WHERE `account_id` = {:d}", accountId));
g_databaseTasks.addTask(std::format("INSERT INTO `account_ban_history` (`account_id`, `reason`, `banned_at`, `expired_at`, `banned_by`) VALUES ({:d}, {:s}, {:d}, {:d}, {:d})", accountId, db.escapeString(result->getString("reason")), result->getNumber<time_t>("banned_at"), expiresAt, result->getNumber<uint32_t>("banned_by")));
g_databaseTasks.addTask(std::format("DELETE FROM `account_bans` WHERE `account_id` = {:d}", accountId));
return false;
}

Expand All @@ -75,14 +75,14 @@ bool IOBan::isIpBanned(uint32_t clientIP, BanInfo& banInfo)

Database& db = Database::getInstance();

DBResult_ptr result = db.storeQuery(fmt::format("SELECT `reason`, `expires_at`, (SELECT `name` FROM `players` WHERE `id` = `banned_by`) AS `name` FROM `ip_bans` WHERE `ip` = {:d}", clientIP));
DBResult_ptr result = db.storeQuery(std::format("SELECT `reason`, `expires_at`, (SELECT `name` FROM `players` WHERE `id` = `banned_by`) AS `name` FROM `ip_bans` WHERE `ip` = {:d}", clientIP));
if (!result) {
return false;
}

int64_t expiresAt = result->getNumber<int64_t>("expires_at");
if (expiresAt != 0 && time(nullptr) > expiresAt) {
g_databaseTasks.addTask(fmt::format("DELETE FROM `ip_bans` WHERE `ip` = {:d}", clientIP));
g_databaseTasks.addTask(std::format("DELETE FROM `ip_bans` WHERE `ip` = {:d}", clientIP));
return false;
}

Expand All @@ -94,5 +94,5 @@ bool IOBan::isIpBanned(uint32_t clientIP, BanInfo& banInfo)

bool IOBan::isPlayerNamelocked(uint32_t playerId)
{
return Database::getInstance().storeQuery(fmt::format("SELECT 1 FROM `player_namelocks` WHERE `player_id` = {:d}", playerId)).get() != nullptr;
return Database::getInstance().storeQuery(std::format("SELECT 1 FROM `player_namelocks` WHERE `player_id` = {:d}", playerId)).get() != nullptr;
}
8 changes: 4 additions & 4 deletions src/chat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include "pugicast.h"
#include "scheduler.h"

#include <fmt/format.h>
#include <format>

extern Chat* g_chat;
extern Game g_game;
Expand All @@ -33,9 +33,9 @@ void PrivateChatChannel::invitePlayer(const Player& player, Player& invitePlayer
return;
}

invitePlayer.sendTextMessage(MESSAGE_INFO_DESCR, fmt::format("{:s} invites you to {:s} private chat channel.", player.getName(), player.getSex() == PLAYERSEX_FEMALE ? "her" : "his"));
invitePlayer.sendTextMessage(MESSAGE_INFO_DESCR, std::format("{:s} invites you to {:s} private chat channel.", player.getName(), player.getSex() == PLAYERSEX_FEMALE ? "her" : "his"));

player.sendTextMessage(MESSAGE_INFO_DESCR, fmt::format("{:s} has been invited.", invitePlayer.getName()));
player.sendTextMessage(MESSAGE_INFO_DESCR, std::format("{:s} has been invited.", invitePlayer.getName()));

for (const auto& it : users) {
it.second->sendChannelEvent(id, invitePlayer.getName(), CHANNELEVENT_INVITE);
Expand All @@ -50,7 +50,7 @@ void PrivateChatChannel::excludePlayer(const Player& player, Player& excludePlay

removeUser(excludePlayer);

player.sendTextMessage(MESSAGE_INFO_DESCR, fmt::format("{:s} has been excluded.", excludePlayer.getName()));
player.sendTextMessage(MESSAGE_INFO_DESCR, std::format("{:s} has been excluded.", excludePlayer.getName()));

excludePlayer.sendClosePrivate(id);

Expand Down
50 changes: 25 additions & 25 deletions src/connection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

extern ConfigManager g_config;

Connection_ptr ConnectionManager::createConnection(boost::asio::io_service& io_service, ConstServicePort_ptr servicePort)
Connection_ptr ConnectionManager::createConnection(asio::io_service& io_service, ConstServicePort_ptr servicePort)
{
std::lock_guard<std::mutex> lockClass(connectionManagerLock);

Expand All @@ -34,10 +34,10 @@ void ConnectionManager::closeAll()

for (const auto& connection : connections) {
try {
boost::system::error_code error;
connection->socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, error);
std::error_code error;
connection->socket.shutdown(asio::ip::tcp::socket::shutdown_both, error);
connection->socket.close(error);
} catch (boost::system::system_error&) {
} catch (std::error_code&) {
}
}
connections.clear();
Expand Down Expand Up @@ -74,10 +74,10 @@ void Connection::closeSocket()
try {
readTimer.cancel();
writeTimer.cancel();
boost::system::error_code error;
socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, error);
std::error_code error;
socket.shutdown(asio::ip::tcp::socket::shutdown_both, error);
socket.close(error);
} catch (boost::system::system_error& e) {
} catch (std::system_error& e) {
std::cout << "[Network error - Connection::closeSocket] " << e.what() << std::endl;
}
}
Expand All @@ -104,16 +104,16 @@ void Connection::accept()
readTimer.async_wait(std::bind(&Connection::handleTimeout, std::weak_ptr<Connection>(shared_from_this()), std::placeholders::_1));

// Read size of the first packet
boost::asio::async_read(socket,
boost::asio::buffer(msg.getBuffer(), NetworkMessage::HEADER_LENGTH),
asio::async_read(socket,
asio::buffer(msg.getBuffer(), NetworkMessage::HEADER_LENGTH),
std::bind(&Connection::parseHeader, shared_from_this(), std::placeholders::_1));
} catch (boost::system::system_error& e) {
} catch (std::system_error& e) {
std::cout << "[Network error - Connection::accept] " << e.what() << std::endl;
close(FORCE_CLOSE);
}
}

void Connection::parseHeader(const boost::system::error_code& error)
void Connection::parseHeader(const std::error_code& error)
{
std::lock_guard<std::recursive_mutex> lockClass(connectionLock);
readTimer.cancel();
Expand Down Expand Up @@ -150,15 +150,15 @@ void Connection::parseHeader(const boost::system::error_code& error)

// Read packet content
msg.setLength(size + NetworkMessage::HEADER_LENGTH);
boost::asio::async_read(socket, boost::asio::buffer(msg.getBodyBuffer(), size),
asio::async_read(socket, asio::buffer(msg.getBodyBuffer(), size),
std::bind(&Connection::parsePacket, shared_from_this(), std::placeholders::_1));
} catch (boost::system::system_error& e) {
} catch (std::system_error& e) {
std::cout << "[Network error - Connection::parseHeader] " << e.what() << std::endl;
close(FORCE_CLOSE);
}
}

void Connection::parsePacket(const boost::system::error_code& error)
void Connection::parsePacket(const std::error_code& error)
{
std::lock_guard<std::recursive_mutex> lockClass(connectionLock);
readTimer.cancel();
Expand Down Expand Up @@ -211,10 +211,10 @@ void Connection::parsePacket(const boost::system::error_code& error)
std::placeholders::_1));

// Wait to the next packet
boost::asio::async_read(socket,
boost::asio::buffer(msg.getBuffer(), NetworkMessage::HEADER_LENGTH),
asio::async_read(socket,
asio::buffer(msg.getBuffer(), NetworkMessage::HEADER_LENGTH),
std::bind(&Connection::parseHeader, shared_from_this(), std::placeholders::_1));
} catch (boost::system::system_error& e) {
} catch (std::system_error& e) {
std::cout << "[Network error - Connection::parsePacket] " << e.what() << std::endl;
close(FORCE_CLOSE);
}
Expand Down Expand Up @@ -242,10 +242,10 @@ void Connection::internalSend(const OutputMessage_ptr& msg)
writeTimer.async_wait(std::bind(&Connection::handleTimeout, std::weak_ptr<Connection>(shared_from_this()),
std::placeholders::_1));

boost::asio::async_write(socket,
boost::asio::buffer(msg->getOutputBuffer(), msg->getLength()),
asio::async_write(socket,
asio::buffer(msg->getOutputBuffer(), msg->getLength()),
std::bind(&Connection::onWriteOperation, shared_from_this(), std::placeholders::_1));
} catch (boost::system::system_error& e) {
} catch (std::system_error& e) {
std::cout << "[Network error - Connection::internalSend] " << e.what() << std::endl;
close(FORCE_CLOSE);
}
Expand All @@ -256,16 +256,16 @@ uint32_t Connection::getIP()
std::lock_guard<std::recursive_mutex> lockClass(connectionLock);

// IP-address is expressed in network byte order
boost::system::error_code error;
const boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(error);
std::error_code error;
const asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(error);
if (error) {
return 0;
}

return htonl(endpoint.address().to_v4().to_ulong());
}

void Connection::onWriteOperation(const boost::system::error_code& error)
void Connection::onWriteOperation(const std::error_code& error)
{
std::lock_guard<std::recursive_mutex> lockClass(connectionLock);
writeTimer.cancel();
Expand All @@ -284,9 +284,9 @@ void Connection::onWriteOperation(const boost::system::error_code& error)
}
}

void Connection::handleTimeout(ConnectionWeak_ptr connectionWeak, const boost::system::error_code& error)
void Connection::handleTimeout(ConnectionWeak_ptr connectionWeak, const std::error_code& error)
{
if (error == boost::asio::error::operation_aborted) {
if (error == asio::error::operation_aborted) {
//The timer has been manually canceled
return;
}
Expand Down
20 changes: 10 additions & 10 deletions src/connection.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class ConnectionManager
return instance;
}

Connection_ptr createConnection(boost::asio::io_service& io_service, ConstServicePort_ptr servicePort);
Connection_ptr createConnection(asio::io_service& io_service, ConstServicePort_ptr servicePort);
void releaseConnection(const Connection_ptr& connection);
void closeAll();

Expand All @@ -52,7 +52,7 @@ class Connection : public std::enable_shared_from_this<Connection>

enum { FORCE_CLOSE = true };

Connection(boost::asio::io_service& io_service,
Connection(asio::io_service& io_service,
ConstServicePort_ptr service_port) :
readTimer(io_service),
writeTimer(io_service),
Expand All @@ -73,25 +73,25 @@ class Connection : public std::enable_shared_from_this<Connection>
uint32_t getIP();

private:
void parseHeader(const boost::system::error_code& error);
void parsePacket(const boost::system::error_code& error);
void parseHeader(const std::error_code& error);
void parsePacket(const std::error_code& error);

void onWriteOperation(const boost::system::error_code& error);
void onWriteOperation(const std::error_code& error);

static void handleTimeout(ConnectionWeak_ptr connectionWeak, const boost::system::error_code& error);
static void handleTimeout(ConnectionWeak_ptr connectionWeak, const std::error_code& error);

void closeSocket();
void internalSend(const OutputMessage_ptr& msg);

boost::asio::ip::tcp::socket& getSocket() {
asio::ip::tcp::socket& getSocket() {
return socket;
}
friend class ServicePort;

NetworkMessage msg;

boost::asio::steady_timer readTimer;
boost::asio::steady_timer writeTimer;
asio::steady_timer readTimer;
asio::steady_timer writeTimer;

std::recursive_mutex connectionLock;

Expand All @@ -100,7 +100,7 @@ class Connection : public std::enable_shared_from_this<Connection>
ConstServicePort_ptr service_port;
Protocol_ptr protocol;

boost::asio::ip::tcp::socket socket;
asio::ip::tcp::socket socket;

time_t timeConnected;
uint32_t packetsSent = 0;
Expand Down
18 changes: 9 additions & 9 deletions src/databasemanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
#include "databasemanager.h"
#include "luascript.h"

#include <fmt/format.h>
#include <format>

extern ConfigManager g_config;

bool DatabaseManager::optimizeTables()
{
Database& db = Database::getInstance();

DBResult_ptr result = db.storeQuery(fmt::format("SELECT `TABLE_NAME` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = {:s} AND `DATA_FREE` > 0", db.escapeString(g_config.getString(ConfigManager::MYSQL_DB))));
DBResult_ptr result = db.storeQuery(std::format("SELECT `TABLE_NAME` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = {:s} AND `DATA_FREE` > 0", db.escapeString(g_config.getString(ConfigManager::MYSQL_DB))));
if (!result) {
return false;
}
Expand All @@ -24,7 +24,7 @@ bool DatabaseManager::optimizeTables()
std::string tableName = result->getString("TABLE_NAME");
std::cout << "> Optimizing table " << tableName << "..." << std::flush;

if (db.executeQuery(fmt::format("OPTIMIZE TABLE `{:s}`", tableName))) {
if (db.executeQuery(std::format("OPTIMIZE TABLE `{:s}`", tableName))) {
std::cout << " [success]" << std::endl;
} else {
std::cout << " [failed]" << std::endl;
Expand All @@ -36,13 +36,13 @@ bool DatabaseManager::optimizeTables()
bool DatabaseManager::tableExists(const std::string& tableName)
{
Database& db = Database::getInstance();
return db.storeQuery(fmt::format("SELECT `TABLE_NAME` FROM `information_schema`.`tables` WHERE `TABLE_SCHEMA` = {:s} AND `TABLE_NAME` = {:s} LIMIT 1", db.escapeString(g_config.getString(ConfigManager::MYSQL_DB)), db.escapeString(tableName))).get() != nullptr;
return db.storeQuery(std::format("SELECT `TABLE_NAME` FROM `information_schema`.`tables` WHERE `TABLE_SCHEMA` = {:s} AND `TABLE_NAME` = {:s} LIMIT 1", db.escapeString(g_config.getString(ConfigManager::MYSQL_DB)), db.escapeString(tableName))).get() != nullptr;
}

bool DatabaseManager::isDatabaseSetup()
{
Database& db = Database::getInstance();
return db.storeQuery(fmt::format("SELECT `TABLE_NAME` FROM `information_schema`.`tables` WHERE `TABLE_SCHEMA` = {:s}", db.escapeString(g_config.getString(ConfigManager::MYSQL_DB)))).get() != nullptr;
return db.storeQuery(std::format("SELECT `TABLE_NAME` FROM `information_schema`.`tables` WHERE `TABLE_SCHEMA` = {:s}", db.escapeString(g_config.getString(ConfigManager::MYSQL_DB)))).get() != nullptr;
}

int32_t DatabaseManager::getDatabaseVersion()
Expand Down Expand Up @@ -84,7 +84,7 @@ void DatabaseManager::updateDatabase()

int32_t version = getDatabaseVersion();
do {
if (luaL_dofile(L, fmt::format("data/migrations/{:d}.lua", version).c_str()) != 0) {
if (luaL_dofile(L, std::format("data/migrations/{:d}.lua", version).c_str()) != 0) {
std::cout << "[Error - DatabaseManager::updateDatabase - Version: " << version << "] " << lua_tostring(L, -1) << std::endl;
break;
}
Expand Down Expand Up @@ -118,7 +118,7 @@ bool DatabaseManager::getDatabaseConfig(const std::string& config, int32_t& valu
{
Database& db = Database::getInstance();

DBResult_ptr result = db.storeQuery(fmt::format("SELECT `value` FROM `server_config` WHERE `config` = {:s}", db.escapeString(config)));
DBResult_ptr result = db.storeQuery(std::format("SELECT `value` FROM `server_config` WHERE `config` = {:s}", db.escapeString(config)));
if (!result) {
return false;
}
Expand All @@ -134,8 +134,8 @@ void DatabaseManager::registerDatabaseConfig(const std::string& config, int32_t
int32_t tmp;

if (!getDatabaseConfig(config, tmp)) {
db.executeQuery(fmt::format("INSERT INTO `server_config` VALUES ({:s}, '{:d}')", db.escapeString(config), value));
db.executeQuery(std::format("INSERT INTO `server_config` VALUES ({:s}, '{:d}')", db.escapeString(config), value));
} else {
db.executeQuery(fmt::format("UPDATE `server_config` SET `value` = '{:d}' WHERE `config` = {:s}", value, db.escapeString(config)));
db.executeQuery(std::format("UPDATE `server_config` SET `value` = '{:d}' WHERE `config` = {:s}", value, db.escapeString(config)));
}
}
1 change: 1 addition & 0 deletions src/fileloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "otpch.h"

#include <stack>

#include "fileloader.h"

namespace OTB {
Expand Down
Loading
Loading