Files
utun2/tools/chatgui/transport/node_config.h
T
evgeny 38c9f229bc stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test
- u_async.c: process immediate_queue BEFORE epoll_wait in uasync_poll
- stcp_link.c: defensive NULL etcp_conn/etcp_link in stcp_link_close
- utun_instance.c: move stcp_server_list_destroy_all to Phase J (before ETCP),
  add deferred drain in both Phase J and L
- stcp.h/c: STCP_HS_ENC_CLIENT 6→38, STCP_HS_ENC_SERVER 7→39,
  exchange ed25519_pubkey in both handshake directions
- etcp_connections.c: copy peer_ed25519 from STCP to ETCP_CONN in
  etcp_link_enter_ready_tcp; guard link->etcp in tcp_link_close_cb
- chat_sync.c: fix lk->conn NULL dereference for TCP links
- test_stcp.c: update stcp_server_create/stcp_client_connect callsites
- tools/chat_tcp_test: change transport udp→tcp
2026-08-07 00:48:27 +03:00

75 lines
2.1 KiB
C++

// 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);
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; }
/* 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;
QString m_dbPath;
QString m_debugFile;
QString m_debugLevel;
QString m_debugCategories;
QStringList m_errors;
};
#endif // NODE_CONFIG_H