You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

80 lines
2.3 KiB

// node_config.h — Simplified INI config manager for embedded uTun node
#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; }
/* 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;
QStringList m_errors;
};
#endif // NODE_CONFIG_H