// node_config.h — Simplified INI config manager for embedded uTun node #ifndef NODE_CONFIG_H #define NODE_CONFIG_H #include #include #include 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> servers() const { return m_servers; } bool addServer(const QString& name, const QString& addr); bool removeServer(const QString& name); QList 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; } private: void generateIdentity(); QString m_path; QString m_nodeName; QString m_nodeId; QString m_pubKey; QString m_privKey; QList> m_servers; QList m_clients; QString m_controlAddr; }; #endif // NODE_CONFIG_H