added server

This commit is contained in:
2026-08-01 18:43:40 +12:00
commit 07cc2e20a3
46 changed files with 9310 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
#ifndef SERVERPROCESS_H
#define SERVERPROCESS_H
#include <QObject>
#include <QProcess>
#include <QJsonArray>
#include <QJsonObject>
#include <QTcpSocket>
class ServerProcess : public QObject {
Q_OBJECT
public:
explicit ServerProcess(QObject *parent = nullptr);
~ServerProcess();
void start(const QString &configPath);
void stop();
void fetchStats();
bool kickPlayer(int playerId, const QString &reason = QString());
bool banPlayer(int playerId, const QString &reason = QString());
bool unbanIp(const QString &ip);
QJsonArray listBans();
bool isRunning() const;
QString serverDirectory() const;
void setAdminPort(int port);
int adminPort() const;
signals:
void started();
void stopped();
void logMessage(const QString &message);
void clientsUpdated(const QJsonArray &clients);
void statsUpdated(const QJsonObject &stats);
void error(const QString &message);
void adminCommandFinished(bool ok, const QString &message);
private slots:
void onProcessStarted();
void onProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
void onProcessError(QProcess::ProcessError error);
void onReadyReadStandardOutput();
void onReadyReadStandardError();
private:
QString findPythonExecutable();
QString findServerDirectory();
void parseLogLine(const QString &line);
QJsonObject sendAdminCommand(const QJsonObject &request);
QProcess *process;
QString pythonPath;
QString serverDir;
bool running;
QString outputBuffer;
int m_adminPort;
int adminFailCount;
};
#endif // SERVERPROCESS_H