Merge pull request #346 from ctrlaltca/servatrice_win32
Servatrice win32 fixes
This commit is contained in:
commit
73c963e9c4
8 changed files with 134 additions and 54 deletions
|
@ -75,12 +75,15 @@ Section Uninstall
|
||||||
Delete "$INSTDIR\uninstall.exe"
|
Delete "$INSTDIR\uninstall.exe"
|
||||||
Delete "$INSTDIR\cockatrice.exe"
|
Delete "$INSTDIR\cockatrice.exe"
|
||||||
Delete "$INSTDIR\oracle.exe"
|
Delete "$INSTDIR\oracle.exe"
|
||||||
|
Delete "$INSTDIR\servatrice.exe"
|
||||||
Delete "$INSTDIR\Usermanual.pdf"
|
Delete "$INSTDIR\Usermanual.pdf"
|
||||||
Delete "$INSTDIR\libprotobuf.lib"
|
Delete "$INSTDIR\libprotobuf.lib"
|
||||||
Delete "$INSTDIR\Qt*.dll"
|
Delete "$INSTDIR\Qt*.dll"
|
||||||
Delete "$INSTDIR\icu*.dll"
|
Delete "$INSTDIR\icu*.dll"
|
||||||
Delete "$INSTDIR\qt.conf"
|
Delete "$INSTDIR\qt.conf"
|
||||||
Delete "$INSTDIR\qdebug.txt"
|
Delete "$INSTDIR\qdebug.txt"
|
||||||
|
Delete "$INSTDIR\servatrice.sql"
|
||||||
|
Delete "$INSTDIR\servatrice.ini.example"
|
||||||
RMDir "$INSTDIR"
|
RMDir "$INSTDIR"
|
||||||
|
|
||||||
RMDir "$SMPROGRAMS\Cockatrice"
|
RMDir "$SMPROGRAMS\Cockatrice"
|
||||||
|
|
|
@ -12,6 +12,7 @@ SET(servatrice_SOURCES
|
||||||
src/servatrice_database_interface.cpp
|
src/servatrice_database_interface.cpp
|
||||||
src/server_logger.cpp
|
src/server_logger.cpp
|
||||||
src/serversocketinterface.cpp
|
src/serversocketinterface.cpp
|
||||||
|
src/settingscache.cpp
|
||||||
src/isl_interface.cpp
|
src/isl_interface.cpp
|
||||||
${VERSION_STRING_CPP}
|
${VERSION_STRING_CPP}
|
||||||
)
|
)
|
||||||
|
|
|
@ -20,13 +20,14 @@
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QTextCodec>
|
#include <QTextCodec>
|
||||||
|
#include <QtGlobal>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <QMetaType>
|
#include <QMetaType>
|
||||||
#include <QSettings>
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include "passwordhasher.h"
|
#include "passwordhasher.h"
|
||||||
#include "servatrice.h"
|
#include "servatrice.h"
|
||||||
#include "server_logger.h"
|
#include "server_logger.h"
|
||||||
|
#include "settingscache.h"
|
||||||
#include "rng_sfmt.h"
|
#include "rng_sfmt.h"
|
||||||
#include "version_string.h"
|
#include "version_string.h"
|
||||||
#include <google/protobuf/stubs/common.h>
|
#include <google/protobuf/stubs/common.h>
|
||||||
|
@ -37,6 +38,7 @@
|
||||||
RNG_Abstract *rng;
|
RNG_Abstract *rng;
|
||||||
ServerLogger *logger;
|
ServerLogger *logger;
|
||||||
QThread *loggerThread;
|
QThread *loggerThread;
|
||||||
|
SettingsCache *settingsCache;
|
||||||
|
|
||||||
/* Prototypes */
|
/* Prototypes */
|
||||||
|
|
||||||
|
@ -150,6 +152,10 @@ int main(int argc, char *argv[])
|
||||||
bool testRandom = args.contains("--test-random");
|
bool testRandom = args.contains("--test-random");
|
||||||
bool testHashFunction = args.contains("--test-hash");
|
bool testHashFunction = args.contains("--test-hash");
|
||||||
bool logToConsole = args.contains("--log-to-console");
|
bool logToConsole = args.contains("--log-to-console");
|
||||||
|
QString configPath;
|
||||||
|
int hasConfigPath=args.indexOf("--config");
|
||||||
|
if(hasConfigPath > -1 && args.count() > hasConfigPath + 1)
|
||||||
|
configPath = args.at(hasConfigPath + 1);
|
||||||
|
|
||||||
qRegisterMetaType<QList<int> >("QList<int>");
|
qRegisterMetaType<QList<int> >("QList<int>");
|
||||||
|
|
||||||
|
@ -158,7 +164,9 @@ int main(int argc, char *argv[])
|
||||||
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
|
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QSettings *settings = new QSettings("servatrice.ini", QSettings::IniFormat);
|
configPath = SettingsCache::guessConfigurationPath(configPath);
|
||||||
|
qWarning() << "Using configuration file: " << configPath;
|
||||||
|
settingsCache = new SettingsCache();
|
||||||
|
|
||||||
loggerThread = new QThread;
|
loggerThread = new QThread;
|
||||||
loggerThread->setObjectName("logger");
|
loggerThread->setObjectName("logger");
|
||||||
|
@ -166,7 +174,7 @@ int main(int argc, char *argv[])
|
||||||
logger->moveToThread(loggerThread);
|
logger->moveToThread(loggerThread);
|
||||||
|
|
||||||
loggerThread->start();
|
loggerThread->start();
|
||||||
QMetaObject::invokeMethod(logger, "startLog", Qt::BlockingQueuedConnection, Q_ARG(QString, settings->value("server/logfile").toString()));
|
QMetaObject::invokeMethod(logger, "startLog", Qt::BlockingQueuedConnection, Q_ARG(QString, settingsCache->value("server/logfile", QString("server.log")).toString()));
|
||||||
|
|
||||||
#if QT_VERSION < 0x050000
|
#if QT_VERSION < 0x050000
|
||||||
if (logToConsole)
|
if (logToConsole)
|
||||||
|
@ -209,7 +217,7 @@ int main(int argc, char *argv[])
|
||||||
if (testHashFunction)
|
if (testHashFunction)
|
||||||
testHash();
|
testHash();
|
||||||
|
|
||||||
Servatrice *server = new Servatrice(settings);
|
Servatrice *server = new Servatrice();
|
||||||
QObject::connect(server, SIGNAL(destroyed()), &app, SLOT(quit()), Qt::QueuedConnection);
|
QObject::connect(server, SIGNAL(destroyed()), &app, SLOT(quit()), Qt::QueuedConnection);
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
if (server->initServer()) {
|
if (server->initServer()) {
|
||||||
|
@ -228,7 +236,7 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
delete rng;
|
delete rng;
|
||||||
delete settings;
|
delete settingsCache;
|
||||||
|
|
||||||
logger->deleteLater();
|
logger->deleteLater();
|
||||||
loggerThread->wait();
|
loggerThread->wait();
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#include <QSqlQuery>
|
#include <QSqlQuery>
|
||||||
#include <QSettings>
|
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
|
@ -28,6 +27,7 @@
|
||||||
#include "servatrice_database_interface.h"
|
#include "servatrice_database_interface.h"
|
||||||
#include "servatrice_connection_pool.h"
|
#include "servatrice_connection_pool.h"
|
||||||
#include "server_room.h"
|
#include "server_room.h"
|
||||||
|
#include "settingscache.h"
|
||||||
#include "serversocketinterface.h"
|
#include "serversocketinterface.h"
|
||||||
#include "isl_interface.h"
|
#include "isl_interface.h"
|
||||||
#include "server_logger.h"
|
#include "server_logger.h"
|
||||||
|
@ -120,8 +120,8 @@ void Servatrice_IslServer::incomingConnection(int socketDescriptor)
|
||||||
QMetaObject::invokeMethod(interface, "initServer", Qt::QueuedConnection);
|
QMetaObject::invokeMethod(interface, "initServer", Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
Servatrice::Servatrice(QSettings *_settings, QObject *parent)
|
Servatrice::Servatrice(QObject *parent)
|
||||||
: Server(true, parent), settings(_settings), uptime(0), shutdownTimer(0)
|
: Server(true, parent), uptime(0), shutdownTimer(0)
|
||||||
{
|
{
|
||||||
qRegisterMetaType<QSqlDatabase>("QSqlDatabase");
|
qRegisterMetaType<QSqlDatabase>("QSqlDatabase");
|
||||||
}
|
}
|
||||||
|
@ -134,11 +134,11 @@ Servatrice::~Servatrice()
|
||||||
|
|
||||||
bool Servatrice::initServer()
|
bool Servatrice::initServer()
|
||||||
{
|
{
|
||||||
serverName = settings->value("server/name").toString();
|
serverName = settingsCache->value("server/name", "My Cockatrice server").toString();
|
||||||
serverId = settings->value("server/id", 0).toInt();
|
serverId = settingsCache->value("server/id", 0).toInt();
|
||||||
bool regServerOnly = settings->value("server/regonly", 0).toBool();
|
bool regServerOnly = settingsCache->value("server/regonly", 0).toBool();
|
||||||
|
|
||||||
const QString authenticationMethodStr = settings->value("authentication/method").toString();
|
const QString authenticationMethodStr = settingsCache->value("authentication/method").toString();
|
||||||
if (authenticationMethodStr == "sql") {
|
if (authenticationMethodStr == "sql") {
|
||||||
authenticationMethod = AuthenticationSql;
|
authenticationMethod = AuthenticationSql;
|
||||||
} else {
|
} else {
|
||||||
|
@ -149,7 +149,7 @@ bool Servatrice::initServer()
|
||||||
authenticationMethod = AuthenticationNone;
|
authenticationMethod = AuthenticationNone;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString dbTypeStr = settings->value("database/type").toString();
|
QString dbTypeStr = settingsCache->value("database/type").toString();
|
||||||
if (dbTypeStr == "mysql")
|
if (dbTypeStr == "mysql")
|
||||||
databaseType = DatabaseMySql;
|
databaseType = DatabaseMySql;
|
||||||
else
|
else
|
||||||
|
@ -159,14 +159,14 @@ bool Servatrice::initServer()
|
||||||
setDatabaseInterface(servatriceDatabaseInterface);
|
setDatabaseInterface(servatriceDatabaseInterface);
|
||||||
|
|
||||||
if (databaseType != DatabaseNone) {
|
if (databaseType != DatabaseNone) {
|
||||||
settings->beginGroup("database");
|
settingsCache->beginGroup("database");
|
||||||
dbPrefix = settings->value("prefix").toString();
|
dbPrefix = settingsCache->value("prefix").toString();
|
||||||
servatriceDatabaseInterface->initDatabase("QMYSQL",
|
servatriceDatabaseInterface->initDatabase("QMYSQL",
|
||||||
settings->value("hostname").toString(),
|
settingsCache->value("hostname").toString(),
|
||||||
settings->value("database").toString(),
|
settingsCache->value("database").toString(),
|
||||||
settings->value("user").toString(),
|
settingsCache->value("user").toString(),
|
||||||
settings->value("password").toString());
|
settingsCache->value("password").toString());
|
||||||
settings->endGroup();
|
settingsCache->endGroup();
|
||||||
|
|
||||||
updateServerList();
|
updateServerList();
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ bool Servatrice::initServer()
|
||||||
servatriceDatabaseInterface->clearSessionTables();
|
servatriceDatabaseInterface->clearSessionTables();
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString roomMethod = settings->value("rooms/method").toString();
|
const QString roomMethod = settingsCache->value("rooms/method").toString();
|
||||||
if (roomMethod == "sql") {
|
if (roomMethod == "sql") {
|
||||||
QSqlQuery query(servatriceDatabaseInterface->getDatabase());
|
QSqlQuery query(servatriceDatabaseInterface->getDatabase());
|
||||||
query.prepare("select id, name, descr, auto_join, join_message from " + dbPrefix + "_rooms order by id asc");
|
query.prepare("select id, name, descr, auto_join, join_message from " + dbPrefix + "_rooms order by id asc");
|
||||||
|
@ -198,47 +198,63 @@ bool Servatrice::initServer()
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int size = settings->beginReadArray("rooms/roomlist");
|
int size = settingsCache->beginReadArray("rooms/roomlist");
|
||||||
for (int i = 0; i < size; ++i) {
|
for (int i = 0; i < size; ++i) {
|
||||||
settings->setArrayIndex(i);
|
settingsCache->setArrayIndex(i);
|
||||||
|
|
||||||
QStringList gameTypes;
|
QStringList gameTypes;
|
||||||
int size2 = settings->beginReadArray("game_types");
|
int size2 = settingsCache->beginReadArray("game_types");
|
||||||
for (int j = 0; j < size2; ++j) {
|
for (int j = 0; j < size2; ++j) {
|
||||||
settings->setArrayIndex(j);
|
settingsCache->setArrayIndex(j);
|
||||||
gameTypes.append(settings->value("name").toString());
|
gameTypes.append(settingsCache->value("name").toString());
|
||||||
}
|
}
|
||||||
settings->endArray();
|
settingsCache->endArray();
|
||||||
|
|
||||||
Server_Room *newRoom = new Server_Room(
|
Server_Room *newRoom = new Server_Room(
|
||||||
i,
|
i,
|
||||||
settings->value("name").toString(),
|
settingsCache->value("name").toString(),
|
||||||
settings->value("description").toString(),
|
settingsCache->value("description").toString(),
|
||||||
settings->value("autojoin").toBool(),
|
settingsCache->value("autojoin").toBool(),
|
||||||
settings->value("joinmessage").toString(),
|
settingsCache->value("joinmessage").toString(),
|
||||||
gameTypes,
|
gameTypes,
|
||||||
this
|
this
|
||||||
);
|
);
|
||||||
addRoom(newRoom);
|
addRoom(newRoom);
|
||||||
}
|
}
|
||||||
settings->endArray();
|
|
||||||
|
if(size==0)
|
||||||
|
{
|
||||||
|
// no room defined in config, add a dummy one
|
||||||
|
Server_Room *newRoom = new Server_Room(
|
||||||
|
0,
|
||||||
|
"General room",
|
||||||
|
"Play anything here.",
|
||||||
|
true,
|
||||||
|
"",
|
||||||
|
QStringList("Standard"),
|
||||||
|
this
|
||||||
|
);
|
||||||
|
addRoom(newRoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
settingsCache->endArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLoginMessage();
|
updateLoginMessage();
|
||||||
|
|
||||||
maxGameInactivityTime = settings->value("game/max_game_inactivity_time").toInt();
|
maxGameInactivityTime = settingsCache->value("game/max_game_inactivity_time", 120).toInt();
|
||||||
maxPlayerInactivityTime = settings->value("game/max_player_inactivity_time").toInt();
|
maxPlayerInactivityTime = settingsCache->value("game/max_player_inactivity_time", 15).toInt();
|
||||||
|
|
||||||
maxUsersPerAddress = settings->value("security/max_users_per_address").toInt();
|
maxUsersPerAddress = settingsCache->value("security/max_users_per_address", 4).toInt();
|
||||||
messageCountingInterval = settings->value("security/message_counting_interval").toInt();
|
messageCountingInterval = settingsCache->value("security/message_counting_interval", 10).toInt();
|
||||||
maxMessageCountPerInterval = settings->value("security/max_message_count_per_interval").toInt();
|
maxMessageCountPerInterval = settingsCache->value("security/max_message_count_per_interval", 10).toInt();
|
||||||
maxMessageSizePerInterval = settings->value("security/max_message_size_per_interval").toInt();
|
maxMessageSizePerInterval = settingsCache->value("security/max_message_size_per_interval", 1000).toInt();
|
||||||
maxGamesPerUser = settings->value("security/max_games_per_user").toInt();
|
maxGamesPerUser = settingsCache->value("security/max_games_per_user", 5).toInt();
|
||||||
|
|
||||||
try { if (settings->value("servernetwork/active", 0).toInt()) {
|
try { if (settingsCache->value("servernetwork/active", 0).toInt()) {
|
||||||
qDebug() << "Connecting to ISL network.";
|
qDebug() << "Connecting to ISL network.";
|
||||||
const QString certFileName = settings->value("servernetwork/ssl_cert").toString();
|
const QString certFileName = settingsCache->value("servernetwork/ssl_cert").toString();
|
||||||
const QString keyFileName = settings->value("servernetwork/ssl_key").toString();
|
const QString keyFileName = settingsCache->value("servernetwork/ssl_key").toString();
|
||||||
qDebug() << "Loading certificate...";
|
qDebug() << "Loading certificate...";
|
||||||
QFile certFile(certFileName);
|
QFile certFile(certFileName);
|
||||||
if (!certFile.open(QIODevice::ReadOnly))
|
if (!certFile.open(QIODevice::ReadOnly))
|
||||||
|
@ -282,7 +298,7 @@ bool Servatrice::initServer()
|
||||||
QMetaObject::invokeMethod(interface, "initClient", Qt::BlockingQueuedConnection);
|
QMetaObject::invokeMethod(interface, "initClient", Qt::BlockingQueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
const int networkPort = settings->value("servernetwork/port", 14747).toInt();
|
const int networkPort = settingsCache->value("servernetwork/port", 14747).toInt();
|
||||||
qDebug() << "Starting ISL server on port" << networkPort;
|
qDebug() << "Starting ISL server on port" << networkPort;
|
||||||
|
|
||||||
islServer = new Servatrice_IslServer(this, cert, key, this);
|
islServer = new Servatrice_IslServer(this, cert, key, this);
|
||||||
|
@ -299,7 +315,7 @@ bool Servatrice::initServer()
|
||||||
connect(pingClock, SIGNAL(timeout()), this, SIGNAL(pingClockTimeout()));
|
connect(pingClock, SIGNAL(timeout()), this, SIGNAL(pingClockTimeout()));
|
||||||
pingClock->start(1000);
|
pingClock->start(1000);
|
||||||
|
|
||||||
int statusUpdateTime = settings->value("server/statusupdate").toInt();
|
int statusUpdateTime = settingsCache->value("server/statusupdate", 15000).toInt();
|
||||||
statusUpdateClock = new QTimer(this);
|
statusUpdateClock = new QTimer(this);
|
||||||
connect(statusUpdateClock, SIGNAL(timeout()), this, SLOT(statusUpdate()));
|
connect(statusUpdateClock, SIGNAL(timeout()), this, SLOT(statusUpdate()));
|
||||||
if (statusUpdateTime != 0) {
|
if (statusUpdateTime != 0) {
|
||||||
|
@ -307,10 +323,10 @@ bool Servatrice::initServer()
|
||||||
statusUpdateClock->start(statusUpdateTime);
|
statusUpdateClock->start(statusUpdateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
const int numberPools = settings->value("server/number_pools", 1).toInt();
|
const int numberPools = settingsCache->value("server/number_pools", 1).toInt();
|
||||||
gameServer = new Servatrice_GameServer(this, numberPools, servatriceDatabaseInterface->getDatabase(), this);
|
gameServer = new Servatrice_GameServer(this, numberPools, servatriceDatabaseInterface->getDatabase(), this);
|
||||||
gameServer->setMaxPendingConnections(1000);
|
gameServer->setMaxPendingConnections(1000);
|
||||||
const int gamePort = settings->value("server/port", 4747).toInt();
|
const int gamePort = settingsCache->value("server/port", 4747).toInt();
|
||||||
qDebug() << "Starting server on port" << gamePort;
|
qDebug() << "Starting server on port" << gamePort;
|
||||||
if (gameServer->listen(QHostAddress::Any, gamePort))
|
if (gameServer->listen(QHostAddress::Any, gamePort))
|
||||||
qDebug() << "Server listening.";
|
qDebug() << "Server listening.";
|
||||||
|
|
|
@ -32,7 +32,6 @@
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(QSqlDatabase)
|
Q_DECLARE_METATYPE(QSqlDatabase)
|
||||||
|
|
||||||
class QSettings;
|
|
||||||
class QSqlQuery;
|
class QSqlQuery;
|
||||||
class QTimer;
|
class QTimer;
|
||||||
|
|
||||||
|
@ -106,7 +105,6 @@ private:
|
||||||
mutable QMutex loginMessageMutex;
|
mutable QMutex loginMessageMutex;
|
||||||
QString loginMessage;
|
QString loginMessage;
|
||||||
QString dbPrefix;
|
QString dbPrefix;
|
||||||
QSettings *settings;
|
|
||||||
Servatrice_DatabaseInterface *servatriceDatabaseInterface;
|
Servatrice_DatabaseInterface *servatriceDatabaseInterface;
|
||||||
int serverId;
|
int serverId;
|
||||||
int uptime;
|
int uptime;
|
||||||
|
@ -128,7 +126,7 @@ public slots:
|
||||||
void scheduleShutdown(const QString &reason, int minutes);
|
void scheduleShutdown(const QString &reason, int minutes);
|
||||||
void updateLoginMessage();
|
void updateLoginMessage();
|
||||||
public:
|
public:
|
||||||
Servatrice(QSettings *_settings, QObject *parent = 0);
|
Servatrice(QObject *parent = 0);
|
||||||
~Servatrice();
|
~Servatrice();
|
||||||
bool initServer();
|
bool initServer();
|
||||||
QString getServerName() const { return serverName; }
|
QString getServerName() const { return serverName; }
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#include "server_logger.h"
|
#include "server_logger.h"
|
||||||
|
#include "settingscache.h"
|
||||||
#include <QSocketNotifier>
|
#include <QSocketNotifier>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QSettings>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
# include <sys/types.h>
|
# include <sys/types.h>
|
||||||
|
@ -26,7 +26,7 @@ ServerLogger::~ServerLogger()
|
||||||
void ServerLogger::startLog(const QString &logFileName)
|
void ServerLogger::startLog(const QString &logFileName)
|
||||||
{
|
{
|
||||||
if (!logFileName.isEmpty()) {
|
if (!logFileName.isEmpty()) {
|
||||||
logFile = new QFile("server.log", this);
|
logFile = new QFile(logFileName, this);
|
||||||
logFile->open(QIODevice::Append);
|
logFile->open(QIODevice::Append);
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
::socketpair(AF_UNIX, SOCK_STREAM, 0, sigHupFD);
|
::socketpair(AF_UNIX, SOCK_STREAM, 0, sigHupFD);
|
||||||
|
@ -50,9 +50,8 @@ void ServerLogger::logMessage(QString message, void *caller)
|
||||||
callerString = QString::number((qulonglong) caller, 16) + " ";
|
callerString = QString::number((qulonglong) caller, 16) + " ";
|
||||||
|
|
||||||
//filter out all log entries based on values in configuration file
|
//filter out all log entries based on values in configuration file
|
||||||
QSettings settings("servatrice.ini", QSettings::IniFormat);
|
bool shouldWeWriteLog = settingsCache->value("server/writelog").toBool();
|
||||||
bool shouldWeWriteLog = settings.value("server/writelog").toBool();
|
QString logFilters = settingsCache->value("server/logfilters").toString();
|
||||||
QString logFilters = settings.value("server/logfilters").toString();
|
|
||||||
QStringList listlogFilters = logFilters.split(",", QString::SkipEmptyParts);
|
QStringList listlogFilters = logFilters.split(",", QString::SkipEmptyParts);
|
||||||
bool shouldWeSkipLine = false;
|
bool shouldWeSkipLine = false;
|
||||||
|
|
||||||
|
|
37
servatrice/src/settingscache.cpp
Normal file
37
servatrice/src/settingscache.cpp
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#include "settingscache.h"
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <QFile>
|
||||||
|
#if QT_VERSION >= 0x050000
|
||||||
|
#include <QStandardPaths>
|
||||||
|
#else
|
||||||
|
#include <QDesktopServices>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QString SettingsCache::guessConfigurationPath(QString & specificPath)
|
||||||
|
{
|
||||||
|
const QString fileName="servatrice.ini";
|
||||||
|
QString guessFileName;
|
||||||
|
|
||||||
|
// specific path
|
||||||
|
if(!specificPath.isEmpty() && QFile::exists(specificPath))
|
||||||
|
return specificPath;
|
||||||
|
|
||||||
|
// application directory path
|
||||||
|
guessFileName = QCoreApplication::applicationDirPath() + "/" + fileName;
|
||||||
|
if(QFile::exists(guessFileName))
|
||||||
|
return guessFileName;
|
||||||
|
|
||||||
|
#ifdef Q_OS_UNIX
|
||||||
|
// /etc
|
||||||
|
guessFileName = "/etc/servatrice/" + fileName;
|
||||||
|
if(QFile::exists(guessFileName))
|
||||||
|
return guessFileName;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if QT_VERSION >= 0x050000
|
||||||
|
guessFileName = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + fileName;
|
||||||
|
#else
|
||||||
|
guessFileName = QDesktopServices::storageLocation(QDesktopServices::DataLocation) + "/" + fileName;
|
||||||
|
#endif
|
||||||
|
return guessFileName;
|
||||||
|
}
|
18
servatrice/src/settingscache.h
Normal file
18
servatrice/src/settingscache.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef SERVATRICE_SETTINGSCACHE_H
|
||||||
|
#define SERVATRICE_SETTINGSCACHE_H
|
||||||
|
|
||||||
|
#include <QSettings>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
class SettingsCache : public QSettings {
|
||||||
|
Q_OBJECT
|
||||||
|
private:
|
||||||
|
QSettings *settings;
|
||||||
|
public:
|
||||||
|
SettingsCache(const QString & fileName="servatrice.ini", QSettings::Format format=QSettings::IniFormat, QObject * parent = 0) { };
|
||||||
|
static QString guessConfigurationPath(QString & specificPath);
|
||||||
|
};
|
||||||
|
|
||||||
|
extern SettingsCache *settingsCache;
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue