86 lines
2.9 KiB
C++
86 lines
2.9 KiB
C++
/* Desktop INI-конфиг узла: идентичность, listen/client-секции, control и GUI-настройки.
|
|
* load читает и проверяет значения; create генерирует конфиг/ключи; save обновляет известные поля
|
|
* существующего файла, saveFull перезаписывает файл из модели. Запуск ядра выполняет UtunNode. */
|
|
#ifndef NODE_CONFIG_H
|
|
#define NODE_CONFIG_H
|
|
|
|
#include <QString>
|
|
#include <QStringList>
|
|
#include <QList>
|
|
#include <QPair>
|
|
|
|
struct NodeClient {
|
|
QString name;
|
|
QString pubKeyHex;
|
|
QString serverName;
|
|
QString remoteAddr;
|
|
};
|
|
|
|
class NodeConfig {
|
|
public:
|
|
explicit NodeConfig(const QString& path);
|
|
|
|
bool exists() const;
|
|
bool create(const QString& nodeName, quint16 listenPort);
|
|
bool load();
|
|
bool save();
|
|
bool saveFull();
|
|
|
|
QString nodeName() const { return m_nodeName; }
|
|
void setNodeName(const QString& n) { m_nodeName = n; }
|
|
QString nodeId() const { return m_nodeId; }
|
|
QString pubKey() const { return m_pubKey; }
|
|
QString privKey() const { return m_privKey; }
|
|
uint64_t nodeIdU64() const;
|
|
|
|
QList<QPair<QString,QString>> servers() const { return m_servers; }
|
|
|
|
QList<NodeClient> clients() const { return m_clients; }
|
|
|
|
QString controlAddr() const { return m_controlAddr; }
|
|
void setControlAddr(const QString& a) { m_controlAddr = a; }
|
|
quint16 controlPort() const;
|
|
void setControlPort(quint16 p);
|
|
|
|
bool autoSockets() const { return m_autoSockets; }
|
|
void setAutoSockets(bool v) { m_autoSockets = v; }
|
|
|
|
QString filePath() const { return m_path; }
|
|
|
|
/* GUI settings (from [gui] section) */
|
|
QString dbPath() const { return m_dbPath; }
|
|
void setDbPath(const QString& p) { m_dbPath = p; }
|
|
QString debugFile() const { return m_debugFile; }
|
|
void setDebugFile(const QString& p) { m_debugFile = p; }
|
|
QString debugLevel() const { return m_debugLevel; }
|
|
QString debugCategories() const { return m_debugCategories; }
|
|
QString language() const { return m_language; }
|
|
void setLanguage(const QString& language) { m_language = language; }
|
|
|
|
/* Config validation errors (collected during load()) */
|
|
bool hasErrors() const { return !m_errors.isEmpty(); }
|
|
const QStringList& errors() const { return m_errors; }
|
|
|
|
/* Identity generation (public for fixing invalid keys) */
|
|
void generateIdentity();
|
|
|
|
private:
|
|
|
|
QString m_path;
|
|
QString m_nodeName;
|
|
QString m_nodeId;
|
|
QString m_pubKey;
|
|
QString m_privKey;
|
|
QList<QPair<QString,QString>> m_servers;
|
|
QList<NodeClient> m_clients;
|
|
QString m_controlAddr;
|
|
bool m_autoSockets = true;
|
|
QString m_dbPath;
|
|
QString m_debugFile;
|
|
QString m_debugLevel;
|
|
QString m_debugCategories;
|
|
QString m_language = QStringLiteral("system");
|
|
QStringList m_errors;
|
|
};
|
|
#endif // NODE_CONFIG_H
|