Upload dragonrelaybackend.cpp

This commit is contained in:
Zac Gaetano 2026-05-06 20:18:22 -04:00
parent 664ce94663
commit dde82e0ddd

View file

@ -13,16 +13,18 @@ DragonRelayBackend::DragonRelayBackend(QObject *parent)
, m_settings(QStringLiteral("WildDragon"), QStringLiteral("DragonMoonlight")) , m_settings(QStringLiteral("WildDragon"), QStringLiteral("DragonMoonlight"))
{ {
// ── Wire RelayClient signals ────────────────────────────────────────────── // ── Wire RelayClient signals ──────────────────────────────────────────────
connect(&m_relay, &RelayClient::loginDone, connect(&m_relay, &RelayClient::loginSucceeded,
this, &DragonRelayBackend::onLoginDone); this, [this]() { onLoginDone(true, QString()); });
connect(&m_relay, &RelayClient::vpnPeerProvisioned, connect(&m_relay, QOverload<const QString &>::of(&RelayClient::loginFailed),
this, &DragonRelayBackend::onVPNPeerProvisioned); this, [this](const QString &err) { onLoginDone(false, err); });
connect(&m_relay, &RelayClient::vpnError, connect(&m_relay, &RelayClient::vpnProvisioned,
this, &DragonRelayBackend::onVPNError); this, [this](const RelayVPNConf &conf) { onVPNPeerProvisioned(conf); });
connect(&m_relay, &RelayClient::hostsFetched, connect(&m_relay, QOverload<const QString &>::of(&RelayClient::vpnProvisionFailed),
this, &DragonRelayBackend::onHostsFetched); this, [this](const QString &err) { onVPNError(err); });
connect(&m_relay, &RelayClient::hostsError, connect(&m_relay, &RelayClient::hostsReady,
this, &DragonRelayBackend::onHostsError); this, [this](const QList<RelayHost> &hosts) { onHostsFetched(hosts); });
connect(&m_relay, QOverload<const QString &>::of(&RelayClient::hostsFetchFailed),
this, [this](const QString &err) { onHostsError(err); });
// ── Wire TunnelManager signals ──────────────────────────────────────────── // ── Wire TunnelManager signals ────────────────────────────────────────────
connect(&m_tunnel, &TunnelManager::tunnelUp, connect(&m_tunnel, &TunnelManager::tunnelUp,
@ -77,8 +79,7 @@ void DragonRelayBackend::connectRelay(const QString &url,
m_settings.setValue(QStringLiteral("relay/username"), username); m_settings.setValue(QStringLiteral("relay/username"), username);
setStatus(Connecting, QStringLiteral("Logging in…")); setStatus(Connecting, QStringLiteral("Logging in…"));
m_relay.setBaseURL(url); m_relay.login(QUrl(url), username, password);
m_relay.login(username, password);
} }
// ── disconnectRelay ─────────────────────────────────────────────────────────── // ── disconnectRelay ───────────────────────────────────────────────────────────
@ -86,7 +87,7 @@ void DragonRelayBackend::connectRelay(const QString &url,
void DragonRelayBackend::disconnectRelay() { void DragonRelayBackend::disconnectRelay() {
stopHostPoll(); stopHostPoll();
m_tunnel.stop(); // triggers onTunnelDown asynchronously m_tunnel.stop(); // triggers onTunnelDown asynchronously
m_relay.deleteVPNPeer(); // fire-and-forget m_relay.revokeVPN(); // fire-and-forget
m_hosts.clear(); m_hosts.clear();
m_hostDisplays.clear(); m_hostDisplays.clear();
@ -172,7 +173,7 @@ void DragonRelayBackend::onLoginDone(bool ok, const QString &err) {
return; return;
} }
setStatus(Connecting, QStringLiteral("Provisioning VPN peer…")); setStatus(Connecting, QStringLiteral("Provisioning VPN peer…"));
m_relay.provisionVPNPeer(); m_relay.provisionVPN();
} }
void DragonRelayBackend::onVPNPeerProvisioned(const RelayVPNConf &conf) { void DragonRelayBackend::onVPNPeerProvisioned(const RelayVPNConf &conf) {
@ -182,7 +183,7 @@ void DragonRelayBackend::onVPNPeerProvisioned(const RelayVPNConf &conf) {
QString parseErr; QString parseErr;
if (!WireGuardConfig::fromConf(conf.conf, cfg, parseErr)) { if (!WireGuardConfig::fromConf(conf.conf, cfg, parseErr)) {
setStatus(Error, QStringLiteral("Bad VPN config: ") + parseErr); setStatus(Error, QStringLiteral("Bad VPN config: ") + parseErr);
m_relay.deleteVPNPeer(); m_relay.revokeVPN();
return; return;
} }
@ -245,6 +246,6 @@ void DragonRelayBackend::onTunnelDown() {
void DragonRelayBackend::onTunnelError(const QString &err) { void DragonRelayBackend::onTunnelError(const QString &err) {
stopHostPoll(); stopHostPoll();
m_relay.deleteVPNPeer(); m_relay.revokeVPN();
setStatus(Error, QStringLiteral("Tunnel error: ") + err); setStatus(Error, QStringLiteral("Tunnel error: ") + err);
} }