From 8c6fb5df9b09870e8da0333b677799960b1938fb Mon Sep 17 00:00:00 2001 From: tobtoht Date: Tue, 12 Jan 2021 12:56:44 +0100 Subject: [PATCH] Nodes: Fallback to hardcoded list if nothing cached --- src/assets.qrc | 1 + src/assets/nodes.json | 37 +++++++++++++++++++++++++++++++++++++ src/utils/nodes.cpp | 31 +++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 src/assets/nodes.json diff --git a/src/assets.qrc b/src/assets.qrc index c37e4da..347779c 100644 --- a/src/assets.qrc +++ b/src/assets.qrc @@ -4,6 +4,7 @@ assets/ack.txt assets/contributors.txt assets/feather.desktop + assets/nodes.json assets/images/appicons/32x32.png assets/images/appicons/48x48.png assets/images/appicons/64x64.png diff --git a/src/assets/nodes.json b/src/assets/nodes.json new file mode 100644 index 0000000..69a373d --- /dev/null +++ b/src/assets/nodes.json @@ -0,0 +1,37 @@ +{ + "mainnet": { + "tor": [ + "xmrtolujkxnlinre.onion:18081", + "xmrag4hf5xlabmob.onion:18081", + "monero26mmldsallmxok2kwamne4ve3mybvvn2yijsvss7ey63hc4yyd.onion:18081", + "monero5sjoz5xmjn.onion:18081", + "mxcd4577fldb3ppzy7obmmhnu3tf57gbcbd4qhwr2kxyjj2qi3dnbfqd.onion:18081", + "moneroxmrxw44lku6qniyarpwgznpcwml4drq7vb24ppatlcg4kmxpqd.onion:18089", + "3hvpnd4xejtzcuowvru2wfjum5wjf7synigm44rrizr3k4v5vzam2bad.onion:18081", + "3t7v5zpcfxq2tocdofdcwxgrldco3elotz3iis4jtbbnscy5alezw7yd.onion:18081", + "4mslnrs5sfjxrb35.onion:18081", + "aytzr6aoxsegx2y6.onion:18081" + ], + "clearnet": [ + "eu-west.node.xmr.pm:18089", + "eu-west-2.node.xmr.pm:18089", + "usa-east-va.node.xmr.pm:18089", + "canada.node.xmr.pm:18089", + "singapore.node.xmr.pm:18089", + "nodes.hashvault.pro:18081", + "node.supportxmr.com:18081", + "xmr-node-eu.cakewallet.com:18081", + "xmr-node-usa-east.cakewallet.com:18081", + "node.xmr.ru:18081", + "selsta1.featherwallet.net:18081", + "selsta2.featherwallet.net:18081" + ] + }, + "stagenet": { + "tor": [], + "clearnet": [ + "run.your.own.node.xmr.pm:38089", + "super.fast.node.xmr.pm:38089" + ] + } +} diff --git a/src/utils/nodes.cpp b/src/utils/nodes.cpp index e8aa58a..dfea265 100644 --- a/src/utils/nodes.cpp +++ b/src/utils/nodes.cpp @@ -83,6 +83,37 @@ void Nodes::loadConfig() { qDebug() << QString("Loaded %1 custom nodes from config").arg(m_customNodes.count()); } + // No nodes cached, fallback to hardcorded list + if (m_websocketNodes.count() == 0) { + QByteArray file = Utils::fileOpenQRC(":/assets/nodes.json"); + QJsonDocument nodes_json = QJsonDocument::fromJson(file); + QJsonObject nodes_obj = nodes_json.object(); + + QString netKey; + if (m_ctx->networkType == NetworkType::MAINNET) { + netKey = "mainnet"; + } else if (m_ctx->networkType == NetworkType::STAGENET) { + netKey = "stagenet"; + } + + if (nodes_obj.contains(netKey)) { + QJsonArray nodes_list; + if (m_ctx->isTails || m_ctx->isWhonix || m_ctx->isTorSocks) { + nodes_list = nodes_json[netKey].toObject()["tor"].toArray(); + } else { + nodes_list = nodes_json[netKey].toObject()["clearnet"].toArray(); + } + for (auto node: nodes_list) { + auto wsNode = FeatherNode(node.toString()); + wsNode.custom = false; + wsNode.online = true; + m_websocketNodes.append(wsNode); + } + } + + qDebug() << QString("Loaded %1 nodes from hardcoded list").arg(m_websocketNodes.count()); + } + m_configJson[key] = obj; this->writeConfig(); this->updateModels();