summaryrefslogtreecommitdiffstats
path: root/src/crsm.cpp
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2015-09-22 16:29:19 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2015-09-22 16:29:19 +0200
commit813aef495fdf9f8c92b325e1680dd01855905e22 (patch)
tree3aa4890b86f521428855fe4c66148eefe01de193 /src/crsm.cpp
parentcb692df83473599e35470010c3382ae8f9041b29 (diff)
downloadmanager-813aef495fdf9f8c92b325e1680dd01855905e22.tar.gz
manager-813aef495fdf9f8c92b325e1680dd01855905e22.zip
Replace settings, lists and maps in CRSM through a better Config-Class
Diffstat (limited to 'src/crsm.cpp')
-rw-r--r--src/crsm.cpp467
1 files changed, 234 insertions, 233 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp
index 0111721..ec249a6 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -30,14 +30,14 @@ CRSM::CRSM(QObject *parent) :
readConfig();
connect(&managementServer, SIGNAL(newConnection()), this, SLOT(newManagementConnection()));
- managementServer.listen(QHostAddress::LocalHostIPv6, settings["ManagementPort"].toUInt());
+ managementServer.listen(QHostAddress::LocalHostIPv6, Config.CRSM.ManagementPort);
listC4Folders();
readScenarios();
- if(settings.contains("ReattachId"))
+ if(!Config.Auto.ProcessManager.ReattachId.isEmpty())
{
- processManager = new ProcessManager("CRSM-Clonkserver-", settings["ReattachId"]);
+ processManager = new ProcessManager("CRSM-Clonkserver-", Config.Auto.ProcessManager.ReattachId);
}
else
{
@@ -48,12 +48,12 @@ CRSM::CRSM(QObject *parent) :
if(!processManager->isOk())
{
out("Could not start Process Manager!");
- settings.remove("ReattachId");
+ Config.Auto.ProcessManager.ReattachId.clear();
writeConfig();
return;
}
- settings["ReattachId"] = processManager->ID();
+ Config.Auto.ProcessManager.ReattachId = processManager->ID();
writeConfig();
if(processManager->isRunning())
@@ -65,7 +65,7 @@ CRSM::CRSM(QObject *parent) :
connect(&greetMapper, SIGNAL(mapped(QString)), this, SLOT(greet(QString)));
- autoHost = settings["AutoHost"] == "true";
+ autoHost = Config.Hosting.Auto;
connect(processManager, SIGNAL(readyRead()), this, SLOT(readServerOutput()));
//connect(processManager, SIGNAL(error(QProcess::ProcessError)), this, SLOT(processError()));
@@ -73,17 +73,17 @@ CRSM::CRSM(QObject *parent) :
//QSocketNotifier *inNotifier = new QSocketNotifier(STDIN_FILENO, QSocketNotifier::Read,this);
//connect(inNotifier, SIGNAL(activated(int)), this, SLOT(readInput()));
- QFile *reallog = new QFile(settings["ClonkDirectory"]+"CRSM.log");
+ QFile *reallog = new QFile(Config.Auto.Volatile.Clonk.Directory + "CRSM.log");
reallog->open(QIODevice::Append | QIODevice::Text);
logstream.setDevice(reallog);
- if(settings["UseIrc"] == "true")
+ if(Config.IRC.Use)
{
prepareAndConnectIrc();
}
else
{
- settings["IrcUseIngameChat"] = "false";
+ Config.IRC.UseIngameChat = false;
}
ok = true;
@@ -109,7 +109,7 @@ void CRSM::readServerOutput()
static QRegExp timeRemover("^>?\\s*\\[(\\d\\d:\\d\\d:\\d\\d)\\]\\s+(.*)$");
QString what(processManager->readLine());
- if(settings["ServerUsesReadline"] == "true")
+ if(Config.Readline.ServerUses)
{
while(writtenToServer.length() > 0 && what.length() > 0 && writtenToServer.at(0) == what.at(0))
{
@@ -126,7 +126,7 @@ void CRSM::readServerOutput()
logstream << what.trimmed() << endl;
- if(settings["UseIrc"] == "true")
+ if(Config.IRC.Use)
{
foreach(const QString &mess, what.split("\n", QString::SkipEmptyParts))
foreach(const QString &mod, ircModIOList)
@@ -146,12 +146,12 @@ void CRSM::readServerOutput()
QString user = userexp.cap(4);
QString pcName = userexp.cap(2);
int cuid = userexp.cap(3).toInt();
- if(pcName != settings["ServerPCName"])
+ if(pcName != Config.Auto.Volatile.Clonk.ServerPCName)
{
ClientInfo& info = getClientInfo(pcName, cuid, user);
- if(info.floodCheck(settings["AntiFloodCount"].toInt(), settings["AntiFloodTime"].toInt(), QDateTime(QDate::currentDate(), QTime::fromString(timeRemover.cap(1), "hh:mm:ss"))))
+ if(info.floodCheck(Config.Clonk.Chat.AntiFlood.Count, Config.Clonk.Chat.AntiFlood.Time, QDateTime(QDate::currentDate(), QTime::fromString(timeRemover.cap(1), "hh:mm:ss"))))
{
- kick(pcName, "Flooding! Maximal " + settings["AntiFloodCount"] + " Nachrichten in " + settings["AntiFloodTime"] + "s");
+ kick(pcName, "Flooding! Maximal " + QString::number(Config.Clonk.Chat.AntiFlood.Count) + " Nachrichten in " + QString::number(Config.Clonk.Chat.AntiFlood.Time) + "s");
}
else if(!isMeMessage)
{
@@ -169,7 +169,7 @@ void CRSM::readServerOutput()
}
else if(session["IrcUseIngameChat"] == "true")
{
- connection->sendCommand(IrcCommand::createMessage(settings["IrcIngameChannel"], "[Clonk]<" + user + "> " + msg));
+ connection->sendCommand(IrcCommand::createMessage(Config.IRC.IngameChannel, "[Clonk]<" + user + "> " + msg));
}
}
}
@@ -189,7 +189,7 @@ void CRSM::readServerOutput()
timer->start(1000);
if(session["IrcUseIngameChat"] == "true")
{
- connection->sendCommand(IrcCommand::createMessage(settings["IrcIngameChannel"], "[Clonk] " + info.toString() + " verbunden."));
+ connection->sendCommand(IrcCommand::createMessage(Config.IRC.IngameChannel, "[Clonk] " + info.toString() + " verbunden."));
}
}
}
@@ -238,7 +238,7 @@ void CRSM::readServerOutput()
if(session["IrcUseIngameChat"] == "true")
{
- connection->sendCommand(IrcCommand::createMessage(settings["IrcIngameChannel"], "[Clonk] " + info.toString() + " entfernt" + leaveExp.cap(2)));
+ connection->sendCommand(IrcCommand::createMessage(Config.IRC.IngameChannel, "[Clonk] " + info.toString() + " entfernt" + leaveExp.cap(2)));
}
if(info == sessionAdmin)
@@ -254,9 +254,9 @@ void CRSM::readServerOutput()
{
processManager->closeProgFifos();
}
- else if(clients.size() == 0 && settings["EmptyTimer"] != "-1" && (session["CountDown"] == "false" || session["CountDown"].toInt() > settings["EmptyTimer"].toInt()))
+ else if(clients.size() == 0 && Config.Clonk.Server.EmptyTimer != -1 && (session["CountDown"] == "false" || session["CountDown"].toInt() > Config.Clonk.Server.EmptyTimer))
{
- writeToServer("/start " + settings["EmptyTimer"] + "\n");
+ writeToServer("/start " + QString::number(Config.Clonk.Server.EmptyTimer) + "\n");
}
}
@@ -287,7 +287,7 @@ void CRSM::readInput()
{
writeToServer("Der Server Manager wird upgedatet. Befehle funktionieren temporär nicht.\n");
}
- settings["ReattachId"] = processManager->ID();
+ Config.Auto.ProcessManager.ReattachId = processManager->ID();
writeConfig();
QCoreApplication::quit();
return;
@@ -295,7 +295,7 @@ void CRSM::readInput()
if(what == "/exit")
{
processManager->closeProgFifos();
- settings.remove("ReattachId");
+ Config.Auto.ProcessManager.ReattachId.clear();
finish = true;
if(session["hosting"] != "true")
scenarioFinished();
@@ -327,8 +327,7 @@ void CRSM::readInput()
if(what == "/reload")
{
out("Reloading config...\n");
- lists.clear();
- settings.clear();
+ Config.clear();
ircModChecks.clear();
ircMods.clear();
ircModFifosOld.clear();
@@ -383,7 +382,7 @@ void CRSM::scenarioFinished()
processManager->exit();
if(connection != 0)
{
- connection->quit(settings["IrcQuitMessage"]);
+ connection->quit(Config.IRC.QuitMessage);
connect(connection, SIGNAL(disconnected()), QCoreApplication::instance(), SLOT(quit()));
QTimer::singleShot(500, QCoreApplication::instance(), SLOT(quit()));
}
@@ -398,9 +397,9 @@ void CRSM::scenarioFinished()
leaveAdmins.clear();
if((autoHost || userlist.length() > 0) && !finish)
nextScen();
- else if(!settings["IrcIngameChannel"].isEmpty())
+ else if(!Config.IRC.IngameChannel.isEmpty())
{
- connection->sendCommand(IrcCommand::createTopic(settings["IrcIngameChannel"], "Kein laufendes Spiel."));
+ connection->sendCommand(IrcCommand::createTopic(Config.IRC.IngameChannel, "Kein laufendes Spiel."));
QFile lastScenFile(LAST_SCEN_FILE_NAME);
QFile curScenFile(CUR_SCEN_FILE_NAME);
curScenFile.open(QFile::ReadOnly);
@@ -424,7 +423,7 @@ void CRSM::ircMessageReceived(IrcMessage *message)
QStringList split = message->parameters().at(1).split(' ', QString::SkipEmptyParts);
if(((IrcNoticeMessage*)message)->content().contains("nickname is registered"))
{
- connection->sendCommand(IrcCommand::createMessage("NickServ", "IDENTIFY " + settings["IrcNick"] + " " + settings["IrcPassword"]));
+ connection->sendCommand(IrcCommand::createMessage("NickServ", "IDENTIFY " + Config.IRC.Nick + " " + Config.IRC.Password));
}
else if(split.first() == "STATUS")
{
@@ -448,7 +447,7 @@ void CRSM::ircMessageReceived(IrcMessage *message)
if(message->parameters().at(0) == connection->nickName())
target = message->nick();
QString mess = message->parameters().at(1).trimmed();
- if(target == settings["IrcIngameChannel"])
+ if(target == Config.IRC.IngameChannel)
{
writeToServer("[IRC]<" + message->nick() + "> " + mess + "\n");
}
@@ -490,7 +489,7 @@ void CRSM::ircMessageReceived(IrcMessage *message)
{
QString joinChannel = message->parameters().at(0);
connection->sendCommand(IrcCommand::createMessage(joinChannel, "Hallo " + message->nick() + "!"));
- if(joinChannel == settings["IrcIngameChannel"])
+ if(joinChannel == Config.IRC.IngameChannel)
{
writeToServer("[IRC] " + message->nick() + " hat den Channel betreten." + "\n");
}
@@ -521,7 +520,7 @@ void CRSM::ircMessageReceived(IrcMessage *message)
else if(message->type() == IrcMessage::Part)
{
QString leaveChannel = message->parameters().at(0);
- if(leaveChannel == settings["IrcIngameChannel"])
+ if(leaveChannel == Config.IRC.IngameChannel)
{
writeToServer("[IRC] " + message->nick() + " hat den Channel verlassen." + "\n");
}
@@ -529,17 +528,17 @@ void CRSM::ircMessageReceived(IrcMessage *message)
else if(message->type() == IrcMessage::Mode)
{
QRegExp modeExp("^\\+[a-zA-Z]*(a|o)");
- if(message->parameters().size() >= 3 && message->parameters().at(0) == settings["IrcIngameChannel"] && modeExp.exactMatch(message->parameters().at(1)) && message->parameters().at(2) == settings["IrcNick"])
+ if(message->parameters().size() >= 3 && message->parameters().at(0) == Config.IRC.IngameChannel && modeExp.exactMatch(message->parameters().at(1)) && message->parameters().at(2) == Config.IRC.Nick)
{
- if(settings["IrcUseIngameChat"] == "true" && !settings["IrcIngameChannel"].isEmpty())
+ if(Config.IRC.UseIngameChat && !Config.IRC.IngameChannel.isEmpty())
{
if(session["hosting"] != "true")
{
- connection->sendCommand(IrcCommand::createTopic(settings["IrcIngameChannel"], "Kein laufendes Spiel."));
+ connection->sendCommand(IrcCommand::createTopic(Config.IRC.IngameChannel, "Kein laufendes Spiel."));
}
else
{
- connection->sendCommand(IrcCommand::createTopic(settings["IrcIngameChannel"], "Aktuelles Szenario: " + session["scenname"] + " | Ingamechat ist " + (session["IrcUseIngameChat"] == "true" ? "" : "de") + "aktviert."));
+ connection->sendCommand(IrcCommand::createTopic(Config.IRC.IngameChannel, "Aktuelles Szenario: " + session["scenname"] + " | Ingamechat ist " + (session["IrcUseIngameChat"] == "true" ? "" : "de") + "aktviert."));
}
}
}
@@ -555,9 +554,9 @@ void CRSM::greet(QString pcName)
if(leaveAdmins.contains(info))
{
int timeGone;
- if((timeGone = leaveAdmins.value(info).secsTo(QDateTime::currentDateTime())) < settings["RegainAdminTime"].toInt() && sessionAdmin != ClientInfo())
+ if((timeGone = leaveAdmins.value(info).secsTo(QDateTime::currentDateTime())) < Config.Clonk.Chat.RegainAdminTime && sessionAdmin != ClientInfo())
{
- writeToServer(info.nick + "! Der Rundenadmin wurde freigegeben, weil du das Spiel verlassen hast.\nDu hast noch " + QString::number(settings["RegainAdminTime"].toInt() - timeGone) + "s Zeit um den Rundenadmin zurückzuholen.\n");
+ writeToServer(info.nick + "! Der Rundenadmin wurde freigegeben, weil du das Spiel verlassen hast.\nDu hast noch " + QString::number(Config.Clonk.Chat.RegainAdminTime - timeGone) + "s Zeit um den Rundenadmin zurückzuholen.\n");
}
else
{
@@ -627,7 +626,8 @@ void CRSM::newManagementData()
void CRSM::managementConnectionDisconnected()
{
- QTcpSocket* sock = (QTcpSocket*)sender();
+ QTcpSocket* sock = dynamic_cast<QTcpSocket*>(sender());
+ if(sock == nullptr) return;
out(managementConnections.value(sock).name + "disconnected from Management-Interface.\n");
if(managementConnections.contains(sock))
{
@@ -637,10 +637,10 @@ void CRSM::managementConnectionDisconnected()
void CRSM::updateNextAutoScens()
{
- while(nextAutoScens.length() < settings["UserListLength"].toInt())
+ while(nextAutoScens.length() < Config.Hosting.UserListLength)
{
ScenarioSettings next("");
- if(settings["RandomizeAutoHosting"] == "true")
+ if(Config.Hosting.RandomizeAuto)
{
next = autolist.at(qrand() % autolist.length());
}
@@ -675,14 +675,14 @@ void CRSM::startScen(const ScenarioSettings &scen, QStringList argList)
scoreboardFile.close();
session["scenname"] = scen.name;
- session["IrcUseIngameChat"] = settings["IrcUseIngameChat"];
- if(settings["IrcUseIngameChat"] == "true" && !settings["IrcIngameChannel"].isEmpty())
+ session["IrcUseIngameChat"] = Config.IRC.UseIngameChat ? "true" : "false";
+ if(Config.IRC.UseIngameChat && !Config.IRC.IngameChannel.isEmpty())
{
- connection->sendCommand(IrcCommand::createTopic(settings["IrcIngameChannel"], "Aktuelles Szenario: " + session["scenname"] + " | Ingamechat ist " + (session["IrcUseIngameChat"] == "true" ? "" : "de") + "aktviert."));
+ connection->sendCommand(IrcCommand::createTopic(Config.IRC.IngameChannel, "Aktuelles Szenario: " + session["scenname"] + " | Ingamechat ist " + (session["IrcUseIngameChat"] == "true" ? "" : "de") + "aktviert."));
}
filename = scen.name;
- while(maps["Alias"].contains(filename))
- filename = maps["Alias"].value(filename);
+ while(Config.Hosting.Alias.contains(filename))
+ filename = Config.Hosting.Alias.value(filename);
//processManager->setWorkingDirectory(QDir::currentPath());
if(scen.league)
{
@@ -694,120 +694,120 @@ void CRSM::startScen(const ScenarioSettings &scen, QStringList argList)
argList << "/noleague";
}
argList << filename;
- processManager->setWorkingDirectory(settings["ClonkDirectory"]);
- processManager->start(settings["ServerExecutable"], argList);
+ processManager->setWorkingDirectory(Config.Auto.Volatile.Clonk.Directory);
+ processManager->start(Config.Clonk.Server.Executable, argList);
}
void CRSM::readConfig()
{
- maps.clear();
- lists.clear();
- settings.clear();
- settings["IrcReconnectDelay"] = "10";
- settings["EmptyTimer"] = "60";
- settings["MaxUserWishes"] = "2";
- settings["MaxScenWishes"] = "2";
- settings["AntiFloodCount"] = "5";
- settings["AntiFloodTime"] = "3";
- settings["RegainAdminTime"] = "120";
- settings["ServerExecutable"] = "clonk-server";
- settings["Arguments"] = "/fullscreen /lobby:300 /nosignup Objects.c4d";
- settings["ClonkConfig"] = "config";
- settings["UserListLength"] ="5";
- settings["ManagementPort"] = "9372";
-
- QFile config(CONFIG_FILE_NAME);
- if(!config.exists())
- {
- config.open(QIODevice::WriteOnly | QIODevice::Text);
- writeConfig();
- }
- else if(config.open(QIODevice::ReadOnly | QIODevice::Text))
- {
- QRegExp confExp("^([^=]+)=(.*)$");
- QRegExp confPlusExp("^([^=]+)\\+=(.*)$");
- QRegExp confMapExp("^([^\\[]+)\\[([^\\]]+)\\]\\s*=\\s*(.*)$");
- QString line;
- for(;;)
- {
- line = config.readLine().trimmed();
- if(confPlusExp.exactMatch(line))
- {
- lists[confPlusExp.cap(1).trimmed()].push_back(confPlusExp.cap(2).trimmed());
- }
- else if(confMapExp.exactMatch(line))
- {
- maps[confMapExp.cap(1).trimmed()][confMapExp.cap(2).trimmed()] = confMapExp.cap(3).trimmed();
- }
- else if(confExp.exactMatch(line))
- {
- settings.insert(confExp.cap(1).trimmed(),confExp.cap(2).trimmed());
- }
- if(config.atEnd())
- break;
- }
- }
-
- out("config:\n");
- foreach(const QString &key, settings.keys())
- {
- out(key + " = " + settings.value(key) + "\n");
- }
- out("\n");
- foreach(const QString &key, lists.keys())
- {
- out(key + ":\n");
- foreach(const QString &val, lists.value(key))
- {
- out("\t" + val + "\n");
- }
- }
- out("\n");
- foreach(const QString &key, maps.keys())
- {
- out(key + ":\n");
- foreach(const QString &mapkey, maps.value(key).keys())
- {
- out("\t[" + mapkey + "]" + " = " + maps.value(key).value(mapkey) + "\n");
- }
- }
- out("\n");
- args = settings["Arguments"].split(" ");
- args << "/config:"+settings["ClonkConfig"];
- settings["ClonkDirectory"] = QFileInfo(settings["ServerExecutable"]).absoluteDir().absolutePath()+QDir::separator();
-
- QFile clonkconfig(settings["ClonkConfig"]);
- if(!clonkconfig.exists())
- out("WARNING: Clonk's config file is not existing!");
- else
- {
- clonkconfig.open(QFile::ReadOnly);
- QRegExp nickExp("^\\s*Nick=\"(.*)\"\\s*$");
- QRegExp pcNameExp("^\\s*LocalName=\"(.*)\"\\s*$");
- foreach(const QString &line, QString(clonkconfig.readAll().trimmed()).split("\n"))
- {
- if(nickExp.exactMatch(line))
- {
- settings["ServerNick"] = nickExp.cap(1);
- break;
- }
- else if(pcNameExp.exactMatch(line))
- {
- settings["ServerPCName"] = pcNameExp.cap(1);
- break;
- }
- }
- out("\n");
- out("ClonkDirectory = " + settings.value("ClonkDirectory") + "\n");
- out("ServerNick = " + settings.value("ServerNick") + "\n");
- }
- out("\n");
- bool ok;
- ushort mgmtPort = settings["ManagementPort"].toUShort(&ok);
- if(!ok || mgmtPort == 0)
- {
- settings["ManagementPort"] = "9372";
- }
+ Config.clear();
+ out(Config.read(CONFIG_FILE_NAME));
+ return;
+// settings["IrcReconnectDelay"] = "10";
+// settings["EmptyTimer"] = "60";
+// settings["MaxUserWishes"] = "2";
+// settings["MaxScenWishes"] = "2";
+// settings["AntiFloodCount"] = "5";
+// settings["AntiFloodTime"] = "3";
+// settings["RegainAdminTime"] = "120";
+// settings["ServerExecutable"] = "clonk-server";
+// settings["Arguments"] = "/fullscreen /lobby:300 /nosignup Objects.c4d";
+// settings["ClonkConfig"] = "config";
+// settings["UserListLength"] ="5";
+// settings["ManagementPort"] = "9372";
+
+// QFile config(CONFIG_FILE_NAME);
+// if(!config.exists())
+// {
+// config.open(QIODevice::WriteOnly | QIODevice::Text);
+// writeConfig();
+// }
+// else if(config.open(QIODevice::ReadOnly | QIODevice::Text))
+// {
+// QRegExp confExp("^([^=]+)=(.*)$");
+// QRegExp confPlusExp("^([^=]+)\\+=(.*)$");
+// QRegExp confMapExp("^([^\\[]+)\\[([^\\]]+)\\]\\s*=\\s*(.*)$");
+// QString line;
+// for(;;)
+// {
+// line = config.readLine().trimmed();
+// if(confPlusExp.exactMatch(line))
+// {
+// lists[confPlusExp.cap(1).trimmed()].push_back(confPlusExp.cap(2).trimmed());
+// }
+// else if(confMapExp.exactMatch(line))
+// {
+// maps[confMapExp.cap(1).trimmed()][confMapExp.cap(2).trimmed()] = confMapExp.cap(3).trimmed();
+// }
+// else if(confExp.exactMatch(line))
+// {
+// settings.insert(confExp.cap(1).trimmed(),confExp.cap(2).trimmed());
+// }
+// if(config.atEnd())
+// break;
+// }
+// }
+
+// out("config:\n");
+// foreach(const QString &key, settings.keys())
+// {
+// out(key + " = " + settings.value(key) + "\n");
+// }
+// out("\n");
+// foreach(const QString &key, lists.keys())
+// {
+// out(key + ":\n");
+// foreach(const QString &val, lists.value(key))
+// {
+// out("\t" + val + "\n");
+// }
+// }
+// out("\n");
+// foreach(const QString &key, maps.keys())
+// {
+// out(key + ":\n");
+// foreach(const QString &mapkey, maps.value(key).keys())
+// {
+// out("\t[" + mapkey + "]" + " = " + maps.value(key).value(mapkey) + "\n");
+// }
+// }
+// out("\n");
+// args = settings["Arguments"].split(" ");
+// args << "/config:"+settings["ClonkConfig"];
+// settings["ClonkDirectory"] = QFileInfo(settings["ServerExecutable"]).absoluteDir().absolutePath()+QDir::separator();
+
+// QFile clonkconfig(settings["ClonkConfig"]);
+// if(!clonkconfig.exists())
+// out("WARNING: Clonk's config file is not existing!");
+// else
+// {
+// clonkconfig.open(QFile::ReadOnly);
+// QRegExp nickExp("^\\s*Nick=\"(.*)\"\\s*$");
+// QRegExp pcNameExp("^\\s*LocalName=\"(.*)\"\\s*$");
+// foreach(const QString &line, QString(clonkconfig.readAll().trimmed()).split("\n"))
+// {
+// if(nickExp.exactMatch(line))
+// {
+// settings["ServerNick"] = nickExp.cap(1);
+// break;
+// }
+// else if(pcNameExp.exactMatch(line))
+// {
+// settings["ServerPCName"] = pcNameExp.cap(1);
+// break;
+// }
+// }
+// out("\n");
+// out("ClonkDirectory = " + settings.value("ClonkDirectory") + "\n");
+// out("ServerNick = " + settings.value("ServerNick") + "\n");
+// }
+// out("\n");
+// bool ok;
+// ushort mgmtPort = settings["ManagementPort"].toUShort(&ok);
+// if(!ok || mgmtPort == 0)
+// {
+// settings["ManagementPort"] = "9372";
+// }
}
@@ -864,12 +864,12 @@ void CRSM::readScenarios()
void CRSM::listC4Folders()
{
out("Listing Contents of C4Folders...");
- QDirIterator it(settings["ClonkDirectory"], QDirIterator::FollowSymlinks);
+ QDirIterator it(Config.Auto.Volatile.Clonk.Directory, QDirIterator::FollowSymlinks);
for(; it.hasNext(); it.next())
{
if(it.fileName() == ".." || it.fileName() == ".")
continue;
- if((it.fileInfo().suffix() == "c4f" || (it.fileInfo().isDir() && !QDir(it.fileInfo().absoluteFilePath()).entryList(QStringList() << "*.c4f" << "*.c4s").isEmpty())) && it.fileName() != "." && it.fileName() != ".." && !lists["IgnoreFolders"].contains(it.fileInfo().baseName()))
+ if((it.fileInfo().suffix() == "c4f" || (it.fileInfo().isDir() && !QDir(it.fileInfo().absoluteFilePath()).entryList(QStringList() << "*.c4f" << "*.c4s").isEmpty())) && it.fileName() != "." && it.fileName() != ".." && Config.Clonk.Server.IgnoreFolders.contains(it.fileInfo().baseName()))
{
const QStringList& list = listC4Folder(it.filePath());
if(!list.isEmpty())
@@ -890,7 +890,7 @@ void CRSM::listC4Folders()
void CRSM::cleanUp()
{
out("\nCleaning up Clonk Folder...\n");
- QDirIterator it(settings["ClonkDirectory"]+"Network/", QDirIterator::FollowSymlinks | QDirIterator::Subdirectories);
+ QDirIterator it(Config.Auto.Volatile.Clonk.Directory+"Network/", QDirIterator::FollowSymlinks | QDirIterator::Subdirectories);
for(; it.hasNext(); it.next())
if(it.fileInfo().exists()) QFile(it.fileInfo().absoluteFilePath()).remove();
out("\n");
@@ -900,7 +900,7 @@ QString CRSM::scenPath(QString scenName)
{
bool isAlias = false;
QString aliasName;
- foreach(const QString& alias, maps["Alias"].keys())
+ foreach(const QString& alias, Config.Hosting.Alias.keys())
{
if(alias.compare(scenName, Qt::CaseInsensitive) == 0)
{
@@ -908,12 +908,12 @@ QString CRSM::scenPath(QString scenName)
break;
}
}
- while(maps["Alias"].contains(scenName))
+ while(Config.Hosting.Alias.contains(scenName))
{
- scenName = maps["Alias"].value(scenName);
+ scenName = Config.Hosting.Alias.value(scenName);
isAlias = true;
}
- QFileInfo fileInfo(settings["ClonkDirectory"] + scenName);
+ QFileInfo fileInfo(Config.Auto.Volatile.Clonk.Directory + scenName);
if(fileInfo.suffix() != "c4s")
{
return QString();
@@ -935,7 +935,7 @@ QString CRSM::scenPath(QString scenName)
{
if(split.first().right(4) == ".c4f")
{
- const QStringList& entryList = QDir(settings["ClonkDirectory"]).entryList(QStringList() << "*.c4f");
+ const QStringList& entryList = QDir(Config.Auto.Volatile.Clonk.Directory).entryList(QStringList() << "*.c4f");
QString folderName = split.first();
foreach(const QString& entry, entryList)
{
@@ -945,7 +945,7 @@ QString CRSM::scenPath(QString scenName)
break;
}
}
- QFile lstFile(settings["ClonkDirectory"] + folderName + ".lst");
+ QFile lstFile(Config.Auto.Volatile.Clonk.Directory + folderName + ".lst");
if(lstFile.exists())
{
lstFile.open(QFile::ReadOnly);
@@ -979,31 +979,31 @@ QString CRSM::listScenarios(QString commandArgs)
if(commandArgs.isEmpty())
{
ret += "Folgende Szenarien stehen zur Auswahl:\n";
- QDirIterator it(settings["ClonkDirectory"], QDirIterator::FollowSymlinks);
+ QDirIterator it(Config.Auto.Volatile.Clonk.Directory, QDirIterator::FollowSymlinks);
for(; it.hasNext(); it.next())
{
- if(it.fileInfo().suffix() == "c4s" && !it.fileInfo().absoluteFilePath().contains(settings["ClonkDirectory"]+"Network/"))
- ret += QString(" "+it.fileInfo().absoluteFilePath().replace(settings["ClonkDirectory"],"")+"\n");
+ if(it.fileInfo().suffix() == "c4s" && !it.fileInfo().absoluteFilePath().contains(Config.Auto.Volatile.Clonk.Directory+"Network/"))
+ ret += QString(" "+it.fileInfo().absoluteFilePath().replace(Config.Auto.Volatile.Clonk.Directory,"")+"\n");
}
ret += "-----------------------------------------------------------------\nFolgende Ordner stehen zur Auswahl:\n";
- QDirIterator folderIt(settings["ClonkDirectory"], QDirIterator::FollowSymlinks);
+ QDirIterator folderIt(Config.Auto.Volatile.Clonk.Directory, QDirIterator::FollowSymlinks);
for(; folderIt.hasNext(); folderIt.next())
{
- if(folderIt.fileInfo().suffix() == "lst" && !folderIt.fileInfo().absoluteFilePath().contains(settings["ClonkDirectory"]+"Network/") && !lists["IgnoreFolders"].contains(folderIt.fileInfo().baseName()))
- ret += QString(" "+folderIt.fileInfo().absoluteFilePath().left(folderIt.fileInfo().absoluteFilePath().length() - 4).replace(settings["ClonkDirectory"],"")+"\n");
+ if(folderIt.fileInfo().suffix() == "lst" && !folderIt.fileInfo().absoluteFilePath().contains(Config.Auto.Volatile.Clonk.Directory+"Network/") && !Config.Clonk.Server.IgnoreFolders.contains(folderIt.fileInfo().baseName()))
+ ret += QString(" "+folderIt.fileInfo().absoluteFilePath().left(folderIt.fileInfo().absoluteFilePath().length() - 4).replace(Config.Auto.Volatile.Clonk.Directory,"")+"\n");
}
}
else if(commandArgs.toLower() == "aliase")
{
ret += "Vorhandene Aliase:\n";
- foreach(const QString &alias, maps["Alias"].keys())
+ foreach(const QString &alias, Config.Hosting.Alias.keys())
{
- ret += QString(" " + alias + " = " + maps["Alias"].value(alias) + "\n");
+ ret += QString(" " + alias + " = " + Config.Hosting.Alias.value(alias) + "\n");
}
}
else
{
- QFile file(settings["ClonkDirectory"] + commandArgs + ".lst");
+ QFile file(Config.Auto.Volatile.Clonk.Directory + commandArgs + ".lst");
if(file.exists())
{
ret += "Der Ordner \"" + commandArgs + QString("\" enthält folgende Szenarien:\n");
@@ -1025,7 +1025,7 @@ QString CRSM::printQueue()
return "Die Warteschlange ist leer.\n";
}
ret = "Folgende Szenarien befinden sich in der Warteschlange:\n";
- for(int i = 0; i < settings["UserListLength"].toInt(); ++i)
+ for(int i = 0; i < Config.Hosting.UserListLength; ++i)
{
const ScenarioSettings *scen;
if(i < userlist.length())
@@ -1103,17 +1103,17 @@ void CRSM::writeToServer(const QString &message)
}
linePart += "\n";
processManager->write(codec->fromUnicode(linePart));
- if(settings["ServerUsesReadline"] == "true")
+ if(Config.Readline.ServerUses)
{
- if(writtenToServer.length() > settings["ReadlineRereadLimit"].toInt())
+ if(writtenToServer.length() > Config.Readline.RereadLimit)
writtenToServer.clear();
writtenToServer += codec->fromUnicode(linePart);
}
}
processManager->write(codec->fromUnicode(line));
- if(settings["ServerUsesReadline"] == "true")
+ if(Config.Readline.ServerUses)
{
- if(writtenToServer.length() > settings["ReadlineRereadLimit"].toInt())
+ if(writtenToServer.length() > Config.Readline.RereadLimit)
writtenToServer.clear();
writtenToServer += codec->fromUnicode(line);
}
@@ -1124,7 +1124,8 @@ void CRSM::writeToServer(const QString &message)
void CRSM::writeConfig()
{
- QFile config(CONFIG_FILE_NAME);
+ Config.write(CONFIG_FILE_NAME);
+ /*QFile config(CONFIG_FILE_NAME);
config.open(QFile::WriteOnly);
QTextStream configStream(&config);
@@ -1151,7 +1152,7 @@ void CRSM::writeConfig()
}
configStream << endl;
- config.close();
+ config.close();*/
}
QString CRSM::addAliasWish(const QString &param)
@@ -1162,17 +1163,17 @@ QString CRSM::addAliasWish(const QString &param)
const QString &alias = aliasExp.cap(1).trimmed();
const QString &scen = aliasExp.cap(2).trimmed();
QString scenP = scen;
- if(maps["Alias"].contains(alias))
+ if(Config.Hosting.Alias.contains(alias))
{
return "Alias ist bereits vergeben!";
}
- else if(maps["AliasWishes"].contains(alias))
+ else if(Config.Auto.Hosting.AliasWishes.contains(alias))
{
return "Alias ist bereits als Wunsch vergeben!";
}
else if(!(scenP = scenPath(scen)).isEmpty())
{
- maps["AliasWishes"].insert(alias, scenP);
+ Config.Auto.Hosting.AliasWishes.insert(alias, scenP);
informModsAboutAliasWish();
return "Aliaswunsch ist hinterlegt!";
}
@@ -1191,21 +1192,21 @@ void CRSM::informModsAboutAliasWish()
{
foreach(const QString& mod, ircMods)
{
- connection->sendCommand(IrcCommand::createNotice(mod, "Ein neuer Aliaswunsch ist verfügbar. Insgesamt verfügbar: " + QString::number(maps["AliasWishes"].size())));
+ connection->sendCommand(IrcCommand::createNotice(mod, "Ein neuer Aliaswunsch ist verfügbar. Insgesamt verfügbar: " + QString::number(Config.Auto.Hosting.AliasWishes.size())));
}
}
void CRSM::editAliasWishes()
{
- if(maps["AliasWishes"].isEmpty())
+ if(Config.Auto.Hosting.AliasWishes.isEmpty())
{
connection->sendCommand(IrcCommand::createMessage(aliasWishEditor, "Keine Aliaswünsche " + (currentAliasWish == "" ? QString("") : QString("mehr ")) + "vorhanden."));
stopAliasWishEditing();
}
else
{
- currentAliasWish = maps["AliasWishes"].firstKey();
- connection->sendCommand(IrcCommand::createMessage(aliasWishEditor, currentAliasWish + " = " + maps["AliasWishes"][currentAliasWish] + " [Ja|Nein|Stop]"));
+ currentAliasWish = Config.Auto.Hosting.AliasWishes.firstKey();
+ connection->sendCommand(IrcCommand::createMessage(aliasWishEditor, currentAliasWish + " = " + Config.Auto.Hosting.AliasWishes[currentAliasWish] + " [Ja|Nein|Stop]"));
}
}
@@ -1213,12 +1214,12 @@ void CRSM::editAliasWishes(const QString &message)
{
if(message.toLower() == "j" || message.toLower() == "ja")
{
- maps["Alias"][currentAliasWish] = maps["AliasWishes"][currentAliasWish];
- maps["AliasWishes"].remove(currentAliasWish);
+ Config.Hosting.Alias[currentAliasWish] = Config.Auto.Hosting.AliasWishes[currentAliasWish];
+ Config.Auto.Hosting.AliasWishes.remove(currentAliasWish);
}
else if(message.toLower() == "n" || message.toLower() == "nein")
{
- maps["AliasWishes"].remove(currentAliasWish);
+ Config.Auto.Hosting.AliasWishes.remove(currentAliasWish);
}
else if(message.toLower() == "s" || message.toLower() == "stop")
{
@@ -1241,10 +1242,10 @@ void CRSM::stopAliasWishEditing()
QString CRSM::ircActivateIngameChat(bool activated)
{
- if(settings["IrcUseIngameChat"] == "true" && !settings["IrcIngameChannel"].isEmpty())
+ if(Config.IRC.UseIngameChat && !Config.IRC.IngameChannel.isEmpty())
{
session["IrcUseIngameChat"] = activated ? "true" : "false";
- connection->sendCommand(IrcCommand::createTopic(settings["IrcIngameChannel"], "Aktuelles Szenario: " + session["scenname"] + " | Ingamechat ist " + (session["IrcUseIngameChat"] == "true" ? "" : "de") + "aktviert."));
+ connection->sendCommand(IrcCommand::createTopic(Config.IRC.IngameChannel, "Aktuelles Szenario: " + session["scenname"] + " | Ingamechat ist " + (session["IrcUseIngameChat"] == "true" ? "" : "de") + "aktviert."));
return "Ingamechat wurde " + (session["IrcUseIngameChat"] == "true" ? QString("") : QString("de")) + "aktviert.";
}
else
@@ -1271,7 +1272,7 @@ QStringList CRSM::listC4Folder(const QString &path)
else
{
QProcess c4group;
- c4group.start(settings["ClonkDirectory"]+C4GROUP_EXECUTABLE, QStringList() << path << "-l", QProcess::ReadOnly);
+ c4group.start(Config.Auto.Volatile.Clonk.Directory + C4GROUP_EXECUTABLE, QStringList() << path << "-l", QProcess::ReadOnly);
c4group.waitForFinished();
c4group.readLine();
QRegExp finishExp("^\\d+ Entries, \\d+ Bytes$");
@@ -1363,7 +1364,7 @@ UserType CRSM::clientUserType(const ClientInfo &client)
switch(client.interface)
{
case Clonk:
- if(lists["Moderators"].contains(QString::number(client.CUID)))
+ if(Config.Clonk.Chat.Moderators.contains(client.CUID))
return Moderator;
if(sessionAdmin == client)
return Admin;
@@ -1387,18 +1388,18 @@ void CRSM::setupCmds()
{
addCommand("admin", &CRSM::admin, Clonk | IRC, User, "Ohne Name trägt es den Autor der Nachricht als Rundenadmin ein, bzw. mit Name den Spieler mit entsprechendem Namen, insofern nicht bereits ein Rundenadmin feststeht.", "[Chatnick¦PC-Name]");
addCommand("ingameadmin", &CRSM::ingameadmin, IRC | Management, Admin, "Legt den Ingame-Rundenadmin fest.", "<Ingame-Nick¦PC-Name>");
- if(settings["UseIrc"] == "true")
+ if(Config.IRC.Use)
{
addCommand("ircadmin", &CRSM::ircadmin, Clonk | Management, Admin, "Legt den IRC-Rundenadmin fest.", "<IRC-Nick>", "Legt den IRC-Rundenadmin fest. Der IRC-Admin kann über den IRC dieselben Aktionen durchführen wie der Ingame-Rundenadmin.");
}
addCommand("noadmin", &CRSM::noadmin, Clonk | IRC | Management, Admin, "Entzieht dem (IRC-)Rundenadmin seine Rechte, damit jemand anders Rundenadmin sein kann.");
addCommand("aliaswish", &CRSM::aliaswish, Clonk | IRC, User, "Deponiert den Wunsch, <Alias> als Alias für <Szenario> einzutragen. Ein Moderator entscheidet darüber.", "<Alias> = <Szenario>");
- if(settings["IrcUseIngameChat"] == "true")
+ if(Config.IRC.UseIngameChat)
{
addCommand("ircchat", &CRSM::ircchat, Clonk | Management, Admin, "Schaltet den Irc-Ingame-Chat ein bzw. aus.", "<on¦off>");
addCommand("ingamechat", &CRSM::ircchat, IRC | Management, Admin, "Schaltet den Irc-Ingame-Chat ein bzw. aus.", "<on¦off>");
}
- addCommand("queue", &CRSM::queue, Clonk | IRC | Management, User, "Zeigt die nächsten " + settings["UserListLength"] + " Szenarien auf der Warteliste.");
+ addCommand("queue", &CRSM::queue, Clonk | IRC | Management, User, "Zeigt die nächsten " + QString::number(Config.Hosting.UserListLength) + " Szenarien auf der Warteliste.");
addCommand("host", &CRSM::host, Clonk | IRC | Management, User, "Nimmt das angegebene Szenario in die Warteschlange auf. Optional in der Liga, wenn \"--league\" angegeben wird.", "[--league] <Szenarioname¦Alias>");
addCommand("list", &CRSM::list, Clonk | IRC | Management, User, "Listet alle definierten Aliase oder alle möglichen Szenarien und Ordner auf, bzw. alle Szenarien im Ordner oder Rundenordner.", "[Aliase¦Rundenordner[.c4f]]");
addCommand("clientlist", &CRSM::clientlist, IRC | Management, User, "Listet alle verbundenen Clients mit PC-Name und Chatnick auf.");
@@ -1434,7 +1435,7 @@ void CRSM::setupCmds()
addCommand("io", &CRSM::io, IRC, Moderator, "Schaltet den IO-Modus ein bzw. aus.", "", "Schaltet den IO-Modus ein bzw. aus. Im IO-Modus wird die Ausgabe vom Clonk-Server an den Privat-Chat weitergeleitet und der Privat-Chat wird an den Clonk-Server weitergeleitet. Clonk-Befehle mit \\ statt /.");
- if(settings["UseIrc"] == "true")
+ if(Config.IRC.Use)
{
addCommand("join", &CRSM::join, IRC | Management, Moderator, "Betritt den angegebenen IRC-Channel, optional mit angegebenem Schlüssel.", "<channel> [channel-key]");
addCommand("leave", &CRSM::leave, IRC | Management, Moderator, "Verlässt den angegebenen oder aktuellen IRC-Channel, optional mit angegebenem Grund.", "[channel] [reason]");
@@ -1575,8 +1576,8 @@ bool CRSM::scenAllowed(const ScenarioSettings &scen, const ClientInfo &client, U
return true;
}
QString scenName = scen.name;
- while(maps["Alias"].contains(scenName))
- scenName = maps["Alias"].value(scenName);
+ while(Config.Hosting.Alias.contains(scenName))
+ scenName = Config.Hosting.Alias.value(scenName);
int scenCount = 0;
int userCount = 0;
@@ -1585,17 +1586,17 @@ bool CRSM::scenAllowed(const ScenarioSettings &scen, const ClientInfo &client, U
userCount += (setting.wishClient == client);
QString otherScenName = setting.name;
- while(maps["Alias"].contains(otherScenName))
- otherScenName = maps["Alias"].value(otherScenName);
+ while(Config.Hosting.Alias.contains(otherScenName))
+ otherScenName = Config.Hosting.Alias.value(otherScenName);
scenCount += (otherScenName == scenName);
}
- if(scenCount >= settings["MaxScenWishes"].toInt())
+ if(scenCount >= Config.Hosting.MaxWishesPerScen)
{
respond(client, "Dieses Szenario ist jetzt oft genug in der Wunschliste!\n");
return false;
}
- if(userCount >= settings["MaxUserWishes"].toInt())
+ if(userCount >= Config.Hosting.MaxWishesPerUser)
{
respond(client, "Von dir sind jetzt genug Wünsche in der Liste!\n");
return false;
@@ -1610,24 +1611,24 @@ void CRSM::kick(const QString& pcName, const QString& reason)
void CRSM::prepareAndConnectIrc()
{
- connection = new IrcConnection(settings["IrcServer"]);
- connection->setUserName(settings["IrcNick"]);
- connection->setNickName(settings["IrcNick"]);
- connection->setRealName(settings["IrcRealName"]);
- connection->setReconnectDelay(settings["IrcReconnectDelay"].toInt());
- connection->sendCommand(IrcCommand::createMode(settings["IrcNick"], "+B"));
- connection->sendCommand(IrcCommand::createJoin(settings["IrcChannel"]));
- if(settings["IrcUseIngameChat"] == "true" && !settings["IrcIngameChannel"].isEmpty())
- {
- connection->sendCommand(IrcCommand::createJoin(settings["IrcIngameChannel"]));
- connection->sendCommand(IrcCommand::createTopic(settings["IrcIngameChannel"], "Kein laufendes Spiel."));
+ connection = new IrcConnection(Config.IRC.Server);
+ connection->setUserName(Config.IRC.Nick);
+ connection->setNickName(Config.IRC.Nick);
+ connection->setRealName(Config.IRC.RealName);
+ connection->setReconnectDelay(Config.IRC.ReconnectDelay);
+ connection->sendCommand(IrcCommand::createMode(Config.IRC.Nick, "+B"));
+ connection->sendCommand(IrcCommand::createJoin(Config.IRC.Channel));
+ if(Config.IRC.UseIngameChat && !Config.IRC.IngameChannel.isEmpty())
+ {
+ connection->sendCommand(IrcCommand::createJoin(Config.IRC.IngameChannel));
+ connection->sendCommand(IrcCommand::createTopic(Config.IRC.IngameChannel, "Kein laufendes Spiel."));
}
else
{
- settings["IrcUseIngameChat"] = "false";
+ Config.IRC.UseIngameChat = false;
}
- connection->setPassword(settings["IrcPassword"]);
+ connection->setPassword(Config.IRC.Password);
connect(connection, SIGNAL(messageReceived(IrcMessage*)), this, SLOT(ircMessageReceived(IrcMessage*)));
connection->open();
}
@@ -1689,7 +1690,7 @@ CMD_FUNCTION_IMPL(admin)
{
case Clonk:
interfaceAdminPtr = &sessionAdmin;
- if(args == settings["ServerNick"] || args == settings["ServerPCName"])
+ if(args == Config.Auto.Volatile.Clonk.ServerNick || args == Config.Auto.Volatile.Clonk.ServerPCName)
{
respond(client, "Der Server kann nicht als Rundenadmin eingetragen werden!\n");
return;
@@ -1707,7 +1708,7 @@ CMD_FUNCTION_IMPL(admin)
respond(client, "Du ist bereits Rundenadmin!\n");
return;
}
- else if((ircAdmin != ClientInfo() || sessionAdmin != ClientInfo()) && userType < Admin && !(leaveAdmins.contains(client) && leaveAdmins.value(client).secsTo(QDateTime::currentDateTime()) < settings["RegainAdminTime"].toInt()))
+ else if((ircAdmin != ClientInfo() || sessionAdmin != ClientInfo()) && userType < Admin && !(leaveAdmins.contains(client) && leaveAdmins.value(client).secsTo(QDateTime::currentDateTime()) < Config.Clonk.Chat.RegainAdminTime))
{
respond(client, ircAdmin.toString() + (!ircAdmin.nick.isEmpty() && !sessionAdmin.nick.isEmpty() ? " und " : "") + sessionAdmin.toString() + " ist bereits Rundenadmin!\n");
return;
@@ -1729,8 +1730,8 @@ CMD_FUNCTION_IMPL(admin)
}
CMD_FUNCTION_IMPL(host)
- if(userlist.length() >= settings["UserListLength"].toInt())
- respond(client, "Maximale Warteschlangenlänge von "+settings["UserListLength"]+" erreicht!\n");
+ if(userlist.length() >= Config.Hosting.UserListLength)
+ respond(client, "Maximale Warteschlangenlänge von " + QString::number(Config.Hosting.UserListLength) + " erreicht!\n");
else
{
if(args.trimmed().isEmpty())
@@ -1778,7 +1779,7 @@ CMD_FUNCTION_IMPL(list)
}
else if(client.interface == IRC)
{
- respond(client, settings["IrcScenListMessage"]);
+ respond(client, Config.IRC.ScenListMessage);
}
}
@@ -1869,20 +1870,20 @@ CMD_FUNCTION_IMPL(newalias)
QString scenP = scen;
if(!(scenP = scenPath(scen)).isEmpty())
{
- if(maps["AliasWishes"].contains(alias))
+ if(Config.Auto.Hosting.AliasWishes.contains(alias))
{
- respond(client, "Aliaswunsch für \"" + maps["AliasWishes"].value(alias) + "\" entfernt und Alias hinzugefügt!\n");
- maps["AliasWishes"].remove(alias);
+ respond(client, "Aliaswunsch für \"" + Config.Auto.Hosting.AliasWishes.value(alias) + "\" entfernt und Alias hinzugefügt!\n");
+ Config.Auto.Hosting.AliasWishes.remove(alias);
}
- else if(maps["Alias"].contains(alias))
+ else if(Config.Hosting.Alias.contains(alias))
{
- respond(client, "Alias für \"" + maps["Alias"][alias] + "\" überschrieben!\n");
+ respond(client, "Alias für \"" + Config.Hosting.Alias[alias] + "\" überschrieben!\n");
}
else
{
respond(client, "Alias hinzugefügt!\n");
}
- maps["Alias"][alias] = scenP;
+ Config.Hosting.Alias[alias] = scenP;
}
else
{
@@ -1897,7 +1898,7 @@ CMD_FUNCTION_IMPL(newalias)
CMD_FUNCTION_IMPL(modinfo)
respond(client, "Moderatoren sind (* ist aktiv, + verwendet IO):\n", RespondType::Private);
- foreach(const QString &mod, lists["IrcModerators"])
+ foreach(const QString &mod, Config.IRC.Moderators)
{
respond(client, (ircMods.contains(mod) ? QString("*") : QString(" ")) + (ircModIOList.contains(mod) ? QString("+") : QString(" ")) + " " + mod + "\n", RespondType::Private);
}
@@ -2091,14 +2092,14 @@ CMD_FUNCTION_IMPL(leave)
CMD_FUNCTION_IMPL(exit)
processManager->closeProgFifos();
- settings.remove("ReattachId");
+ Config.Auto.ProcessManager.ReattachId.clear();
finish = true;
if(session["hosting"] != "true")
scenarioFinished();
}
CMD_FUNCTION_IMPL(exitDetach)
- settings["ReattachId"] = processManager->ID();
+ Config.Auto.ProcessManager.ReattachId = processManager->ID();
writeConfig();
QCoreApplication::quit();
}
@@ -2159,7 +2160,7 @@ IRC_CHECK_CALLBACK_IMPL(ircSetAdmin)
}
IRC_CHECK_CALLBACK_IMPL(ircModCmd)
- if(status == 3 && lists["IrcModerators"].contains(subject.nick))
+ if(status == 3 && Config.IRC.Moderators.contains(subject.nick))
{
ircMods.append(subject.nick);
QList<QPair<CmdFunctionRef, QString>> &fifo = ircModFifos[subject.nick];
@@ -2168,9 +2169,9 @@ IRC_CHECK_CALLBACK_IMPL(ircModCmd)
(this->*fifo.first().first.func)(fifo.first().first.name, fifo.first().second, subject, clientUserType(subject));
fifo.removeFirst();
}
- if(!maps["AliasWishes"].isEmpty())
+ if(!Config.Auto.Hosting.AliasWishes.isEmpty())
{
- respond(subject, QString::number(maps["AliasWishes"].size()) + " neue" + (maps["AliasWishes"].size() > 1 ? QString("") : QString("r")) + " Aliasw" + (maps["AliasWishes"].size() > 1 ? QString("ü") : QString("u")) + "nsch" + (maps["AliasWishes"].size() > 1 ? QString("e") : QString("")) + " " + (maps["AliasWishes"].size() > 1 ? QString("sind") : QString("ist")) + " verfügbar.", RespondType::PrivateNotice);
+ respond(subject, QString::number(Config.Auto.Hosting.AliasWishes.size()) + " neue" + (Config.Auto.Hosting.AliasWishes.size() > 1 ? QString("") : QString("r")) + " Aliasw" + (Config.Auto.Hosting.AliasWishes.size() > 1 ? QString("ü") : QString("u")) + "nsch" + (Config.Auto.Hosting.AliasWishes.size() > 1 ? QString("e") : QString("")) + " " + (Config.Auto.Hosting.AliasWishes.size() > 1 ? QString("sind") : QString("ist")) + " verfügbar.", RespondType::PrivateNotice);
respond(subject, "Bitte bei nächster Gelegenheit mit " CMD_SIGN "aliaswishes bearbeiten.", RespondType::PrivateNotice);
}
}