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.
72 lines
2.1 KiB
72 lines
2.1 KiB
// node_config.h — Simplified INI config manager for embedded uTun node |
|
#ifndef NODE_CONFIG_H |
|
#define NODE_CONFIG_H |
|
|
|
#include <QString> |
|
#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(); |
|
|
|
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; } |
|
bool addServer(const QString& name, const QString& addr); |
|
bool removeServer(const QString& name); |
|
|
|
QList<NodeClient> clients() const { return m_clients; } |
|
bool addClient(const QString& name, const QString& pubKeyHex, |
|
const QString& serverName, const QString& remoteAddr); |
|
bool removeClient(const QString& name); |
|
|
|
QString controlAddr() const { return m_controlAddr; } |
|
void setControlAddr(const QString& a) { m_controlAddr = a; } |
|
quint16 controlPort() const; |
|
void setControlPort(quint16 p); |
|
|
|
QString filePath() const { return m_path; } |
|
|
|
/* GUI settings (from [gui] section) */ |
|
QString dbPath() const { return m_dbPath; } |
|
QString debugFile() const { return m_debugFile; } |
|
QString debugLevel() const { return m_debugLevel; } |
|
QString debugCategories() const { return m_debugCategories; } |
|
|
|
/* 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; |
|
QString m_dbPath; |
|
QString m_debugFile; |
|
QString m_debugLevel; |
|
QString m_debugCategories; |
|
}; |
|
#endif // NODE_CONFIG_H
|
|
|