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