Skip to content

Commit dc8d854

Browse files
committed
show available monero nodes in network settings
1 parent 1f38532 commit dc8d854

22 files changed

+100
-95
lines changed

core/src/main/java/haveno/core/api/XmrConnectionService.java

+16-25
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import java.util.HashSet;
4141
import java.util.List;
4242
import java.util.Set;
43-
import java.util.stream.Collectors;
4443

4544
import org.apache.commons.lang3.exception.ExceptionUtils;
4645

@@ -64,7 +63,6 @@
6463
import monero.common.TaskLooper;
6564
import monero.daemon.MoneroDaemonRpc;
6665
import monero.daemon.model.MoneroDaemonInfo;
67-
import monero.daemon.model.MoneroPeer;
6866

6967
@Slf4j
7068
@Singleton
@@ -85,9 +83,9 @@ public final class XmrConnectionService {
8583
private final XmrLocalNode xmrLocalNode;
8684
private final MoneroConnectionManager connectionManager;
8785
private final EncryptedConnectionList connectionList;
88-
private final ObjectProperty<List<MoneroPeer>> peers = new SimpleObjectProperty<>();
86+
private final ObjectProperty<List<MoneroRpcConnection>> connections = new SimpleObjectProperty<>();
87+
private final IntegerProperty numConnections = new SimpleIntegerProperty(0);
8988
private final ObjectProperty<MoneroRpcConnection> connectionProperty = new SimpleObjectProperty<>();
90-
private final IntegerProperty numPeers = new SimpleIntegerProperty(0);
9189
private final LongProperty chainHeight = new SimpleLongProperty(0);
9290
private final DownloadListener downloadListener = new DownloadListener();
9391
@Getter
@@ -390,20 +388,20 @@ public Long getTargetHeight() {
390388

391389
// ----------------------------- APP METHODS ------------------------------
392390

393-
public ReadOnlyIntegerProperty numPeersProperty() {
394-
return numPeers;
391+
public ReadOnlyIntegerProperty numConnectionsProperty() {
392+
return numConnections;
395393
}
396394

397-
public ReadOnlyObjectProperty<List<MoneroPeer>> peerConnectionsProperty() {
398-
return peers;
395+
public ReadOnlyObjectProperty<List<MoneroRpcConnection>> connectionsProperty() {
396+
return connections;
399397
}
400398

401399
public ReadOnlyObjectProperty<MoneroRpcConnection> connectionProperty() {
402400
return connectionProperty;
403401
}
404402

405403
public boolean hasSufficientPeersForBroadcast() {
406-
return numPeers.get() >= getMinBroadcastConnections();
404+
return numConnections.get() >= getMinBroadcastConnections();
407405
}
408406

409407
public LongProperty chainHeightProperty() {
@@ -782,16 +780,15 @@ else if (lastInfo.isBusySyncing()) {
782780
downloadListener.progress(percent, blocksLeft, null);
783781
}
784782

785-
// set peer connections
786-
// TODO: peers often uknown due to restricted RPC call, skipping call to get peer connections
787-
// try {
788-
// peers.set(getOnlinePeers());
789-
// } catch (Exception err) {
790-
// // TODO: peers unknown due to restricted RPC call
791-
// }
792-
// numPeers.set(peers.get().size());
793-
numPeers.set(lastInfo.getNumOutgoingConnections() + lastInfo.getNumIncomingConnections());
794-
peers.set(new ArrayList<MoneroPeer>());
783+
// set available connections
784+
List<MoneroRpcConnection> availableConnections = new ArrayList<>();
785+
for (MoneroRpcConnection connection : connectionManager.getConnections()) {
786+
if (Boolean.TRUE.equals(connection.isOnline()) && Boolean.TRUE.equals(connection.isAuthenticated())) {
787+
availableConnections.add(connection);
788+
}
789+
}
790+
connections.set(availableConnections);
791+
numConnections.set(availableConnections.size());
795792

796793
// notify update
797794
numUpdates.set(numUpdates.get() + 1);
@@ -821,12 +818,6 @@ else if (lastInfo.isBusySyncing()) {
821818
}
822819
}
823820

824-
private List<MoneroPeer> getOnlinePeers() {
825-
return daemon.getPeers().stream()
826-
.filter(peer -> peer.isOnline())
827-
.collect(Collectors.toList());
828-
}
829-
830821
private boolean isFixedConnection() {
831822
return !"".equals(config.xmrNode) || preferences.getMoneroNodesOption() == XmrNodes.MoneroNodesOption.CUSTOM;
832823
}

core/src/main/java/haveno/core/app/AppStartupState.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void onDataReceived() {
7373
isWalletSynced.set(true);
7474
});
7575

76-
xmrConnectionService.numPeersProperty().addListener((observable, oldValue, newValue) -> {
76+
xmrConnectionService.numConnectionsProperty().addListener((observable, oldValue, newValue) -> {
7777
if (xmrConnectionService.hasSufficientPeersForBroadcast())
7878
hasSufficientPeersForBroadcast.set(true);
7979
});

core/src/main/java/haveno/core/app/P2PNetworkSetup.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ BooleanProperty init(Runnable onReadyHandler, @Nullable Consumer<Boolean> displa
8787
BooleanProperty initialP2PNetworkDataReceived = new SimpleBooleanProperty();
8888

8989
p2PNetworkInfoBinding = EasyBind.combine(bootstrapState, bootstrapWarning, p2PService.getNumConnectedPeers(),
90-
xmrConnectionService.numPeersProperty(), hiddenServicePublished, initialP2PNetworkDataReceived,
90+
xmrConnectionService.numConnectionsProperty(), hiddenServicePublished, initialP2PNetworkDataReceived,
9191
(state, warning, numP2pPeers, numXmrPeers, hiddenService, dataReceived) -> {
9292
String result;
9393
int p2pPeers = (int) numP2pPeers;

core/src/main/resources/i18n/displayStrings.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1315,6 +1315,8 @@ settings.net.p2pHeader=Haveno network
13151315
settings.net.onionAddressLabel=My onion address
13161316
settings.net.xmrNodesLabel=Use custom Monero nodes
13171317
settings.net.moneroPeersLabel=Connected peers
1318+
settings.net.connection=Connection
1319+
settings.net.connected=Connected
13181320
settings.net.useTorForXmrJLabel=Use Tor for Monero network
13191321
settings.net.useTorForXmrAfterSyncRadio=After wallet is synchronized
13201322
settings.net.useTorForXmrOffRadio=Never

core/src/main/resources/i18n/displayStrings_cs.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,8 @@ settings.net.p2pHeader=Síť Haveno
10431043
settings.net.onionAddressLabel=Moje onion adresa
10441044
settings.net.xmrNodesLabel=Použijte vlastní Monero node
10451045
settings.net.moneroPeersLabel=Připojené peer uzly
1046+
settings.net.connection=Připojení
1047+
settings.net.connected=Připojeno
10461048
settings.net.useTorForXmrJLabel=Použít Tor pro Monero síť
10471049
settings.net.moneroNodesLabel=Monero nody, pro připojení
10481050
settings.net.useProvidedNodesRadio=Použijte nabízené Monero Core nody

core/src/main/resources/i18n/displayStrings_de.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,8 @@ settings.net.p2pHeader=Haveno-Netzwerk
10431043
settings.net.onionAddressLabel=Meine Onion-Adresse
10441044
settings.net.xmrNodesLabel=Spezifische Monero-Knoten verwenden
10451045
settings.net.moneroPeersLabel=Verbundene Peers
1046+
settings.net.connection=Verbindung
1047+
settings.net.connected=Verbunden
10461048
settings.net.useTorForXmrJLabel=Tor für das Monero-Netzwerk verwenden
10471049
settings.net.moneroNodesLabel=Mit Monero-Knoten verbinden
10481050
settings.net.useProvidedNodesRadio=Bereitgestellte Monero-Core-Knoten verwenden

core/src/main/resources/i18n/displayStrings_es.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1044,6 +1044,8 @@ settings.net.p2pHeader=Red Haveno
10441044
settings.net.onionAddressLabel=Mi dirección onion
10451045
settings.net.xmrNodesLabel=Utilizar nodos Monero personalizados
10461046
settings.net.moneroPeersLabel=Pares conectados
1047+
settings.net.connection=Conexión
1048+
settings.net.connected=Conectado
10471049
settings.net.useTorForXmrJLabel=Usar Tor para la red Monero
10481050
settings.net.moneroNodesLabel=Nodos Monero para conectarse
10491051
settings.net.useProvidedNodesRadio=Utilizar nodos Monero Core proporcionados

core/src/main/resources/i18n/displayStrings_fa.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1040,6 +1040,8 @@ settings.net.p2pHeader=Haveno network
10401040
settings.net.onionAddressLabel=آدرس onion من
10411041
settings.net.xmrNodesLabel=استفاده از گره‌های Monero اختصاصی
10421042
settings.net.moneroPeersLabel=همتایان متصل
1043+
settings.net.connection=اتصال
1044+
settings.net.connected=متصل
10431045
settings.net.useTorForXmrJLabel=استفاده از Tor برای شبکه مونرو
10441046
settings.net.moneroNodesLabel=گره‌های Monero در دسترس
10451047
settings.net.useProvidedNodesRadio=استفاده از نودهای بیتکوین ارائه شده

core/src/main/resources/i18n/displayStrings_fr.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1045,6 +1045,8 @@ settings.net.p2pHeader=Le réseau Haveno
10451045
settings.net.onionAddressLabel=Mon adresse onion
10461046
settings.net.xmrNodesLabel=Utiliser des nœuds Monero personnalisés
10471047
settings.net.moneroPeersLabel=Pairs connectés
1048+
settings.net.connection=Connexion
1049+
settings.net.connected=Connecté
10481050
settings.net.useTorForXmrJLabel=Utiliser Tor pour le réseau Monero
10491051
settings.net.moneroNodesLabel=Nœuds Monero pour se connecter à
10501052
settings.net.useProvidedNodesRadio=Utiliser les nœuds Monero Core fournis

core/src/main/resources/i18n/displayStrings_it.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1042,6 +1042,8 @@ settings.net.p2pHeader=Rete Haveno
10421042
settings.net.onionAddressLabel=Il mio indirizzo onion
10431043
settings.net.xmrNodesLabel=Usa nodi Monero personalizzati
10441044
settings.net.moneroPeersLabel=Peer connessi
1045+
settings.net.connection=Connessione
1046+
settings.net.connected=Connesso
10451047
settings.net.useTorForXmrJLabel=Usa Tor per la rete Monero
10461048
settings.net.moneroNodesLabel=Nodi Monero a cui connettersi
10471049
settings.net.useProvidedNodesRadio=Usa i nodi Monero Core forniti

core/src/main/resources/i18n/displayStrings_ja.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,8 @@ settings.net.p2pHeader=Havenoネットワーク
10431043
settings.net.onionAddressLabel=私のonionアドレス
10441044
settings.net.xmrNodesLabel=任意のモネロノードを使う
10451045
settings.net.moneroPeersLabel=接続されたピア
1046+
settings.net.connection=接続
1047+
settings.net.connected=接続されました
10461048
settings.net.useTorForXmrJLabel=MoneroネットワークにTorを使用
10471049
settings.net.moneroNodesLabel=接続するMoneroノード:
10481050
settings.net.useProvidedNodesRadio=提供されたMonero Core ノードを使う

core/src/main/resources/i18n/displayStrings_pt-br.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1044,6 +1044,8 @@ settings.net.p2pHeader=Rede Haveno
10441044
settings.net.onionAddressLabel=Meu endereço onion
10451045
settings.net.xmrNodesLabel=Usar nodos personalizados do Monero
10461046
settings.net.moneroPeersLabel=Pares conectados
1047+
settings.net.connection=Conexão
1048+
settings.net.connected=Conectado
10471049
settings.net.useTorForXmrJLabel=Usar Tor na rede Monero
10481050
settings.net.moneroNodesLabel=Conexão a nodos do Monero
10491051
settings.net.useProvidedNodesRadio=Usar nodos do Monero Core fornecidos

core/src/main/resources/i18n/displayStrings_pt.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1041,6 +1041,8 @@ settings.net.p2pHeader=Rede do Haveno
10411041
settings.net.onionAddressLabel=O meu endereço onion
10421042
settings.net.xmrNodesLabel=Usar nós de Monero personalizados
10431043
settings.net.moneroPeersLabel=Pares conectados
1044+
settings.net.connection=Conexão
1045+
settings.net.connected=Conectado
10441046
settings.net.useTorForXmrJLabel=Usar Tor para a rede de Monero
10451047
settings.net.moneroNodesLabel=Nós de Monero para conectar
10461048
settings.net.useProvidedNodesRadio=Usar nós de Monero Core providenciados

core/src/main/resources/i18n/displayStrings_ru.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1040,6 +1040,8 @@ settings.net.p2pHeader=Haveno network
10401040
settings.net.onionAddressLabel=Мой onion-адрес
10411041
settings.net.xmrNodesLabel=Использовать особые узлы Monero
10421042
settings.net.moneroPeersLabel=Подключенные пиры
1043+
settings.net.connection=Соединение
1044+
settings.net.connected=Подключено
10431045
settings.net.useTorForXmrJLabel=Использовать Tor для сети Monero
10441046
settings.net.moneroNodesLabel=Узлы Monero для подключения
10451047
settings.net.useProvidedNodesRadio=Использовать предоставленные узлы Monero Core

core/src/main/resources/i18n/displayStrings_th.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1040,6 +1040,8 @@ settings.net.p2pHeader=Haveno network
10401040
settings.net.onionAddressLabel=ที่อยู่ onion ของฉัน
10411041
settings.net.xmrNodesLabel=ใช้โหนดเครือข่าย Monero ที่กำหนดเอง
10421042
settings.net.moneroPeersLabel=เชื่อมต่อกับเน็ตเวิร์ก peers แล้ว
1043+
settings.net.connection=การเชื่อมต่อ
1044+
settings.net.connected=เชื่อมต่อ
10431045
settings.net.useTorForXmrJLabel=ใช้ Tor สำหรับเครือข่าย Monero
10441046
settings.net.moneroNodesLabel=ใช้โหนดเครือข่าย Monero เพื่อเชื่อมต่อ
10451047
settings.net.useProvidedNodesRadio=ใช้โหนดเครือข่าย Monero ที่ให้มา

core/src/main/resources/i18n/displayStrings_tr.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1310,6 +1310,8 @@ settings.net.p2pHeader=Haveno ağı
13101310
settings.net.onionAddressLabel=Onion adresim
13111311
settings.net.xmrNodesLabel=Özel Monero düğümleri kullan
13121312
settings.net.moneroPeersLabel=Bağlı eşler
1313+
settings.net.connection=Bağlantı
1314+
settings.net.connected=Bağlı
13131315
settings.net.useTorForXmrJLabel=Monero ağı için Tor kullan
13141316
settings.net.useTorForXmrAfterSyncRadio=Cüzdan senkronize edildikten sonra
13151317
settings.net.useTorForXmrOffRadio=Asla

core/src/main/resources/i18n/displayStrings_vi.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1042,6 +1042,8 @@ settings.net.p2pHeader=Haveno network
10421042
settings.net.onionAddressLabel=Địa chỉ onion của tôi
10431043
settings.net.xmrNodesLabel=Sử dụng nút Monero thông dụng
10441044
settings.net.moneroPeersLabel=Các đối tác được kết nối
1045+
settings.net.connection=Kết nối
1046+
settings.net.connected=Kết nối
10451047
settings.net.useTorForXmrJLabel=Sử dụng Tor cho mạng Monero
10461048
settings.net.moneroNodesLabel=nút Monero để kết nối
10471049
settings.net.useProvidedNodesRadio=Sử dụng các nút Monero Core đã cung cấp

core/src/main/resources/i18n/displayStrings_zh-hans.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,8 @@ settings.net.p2pHeader=Haveno 网络
10431043
settings.net.onionAddressLabel=我的匿名地址
10441044
settings.net.xmrNodesLabel=使用自定义比特币主节点
10451045
settings.net.moneroPeersLabel=已连接节点
1046+
settings.net.connection=连接
1047+
settings.net.connected=连接
10461048
settings.net.useTorForXmrJLabel=使用 Tor 连接 Monero 网络
10471049
settings.net.moneroNodesLabel=需要连接 Monero
10481050
settings.net.useProvidedNodesRadio=使用公共比特币核心节点

core/src/main/resources/i18n/displayStrings_zh-hant.properties

+2
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,8 @@ settings.net.p2pHeader=Haveno 網絡
10431043
settings.net.onionAddressLabel=我的匿名地址
10441044
settings.net.xmrNodesLabel=使用自定义Monero节点
10451045
settings.net.moneroPeersLabel=已連接節點
1046+
settings.net.connection=連接
1047+
settings.net.connected=連接完成
10461048
settings.net.useTorForXmrJLabel=使用 Tor 連接 Monero 網絡
10471049
settings.net.moneroNodesLabel=需要連接 Monero
10481050
settings.net.useProvidedNodesRadio=使用公共比特幣核心節點

desktop/src/main/java/haveno/desktop/main/settings/network/MoneroNetworkListItem.java

+12-17
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,23 @@
1717

1818
package haveno.desktop.main.settings.network;
1919

20-
import monero.daemon.model.MoneroPeer;
20+
import haveno.core.locale.Res;
21+
import monero.common.MoneroRpcConnection;
2122

2223
public class MoneroNetworkListItem {
23-
private final MoneroPeer peer;
24-
25-
public MoneroNetworkListItem(MoneroPeer peer) {
26-
this.peer = peer;
27-
}
28-
29-
public String getOnionAddress() {
30-
return peer.getHost() + ":" + peer.getPort();
31-
}
32-
33-
public String getVersion() {
34-
return "";
24+
private final MoneroRpcConnection connection;
25+
private final boolean connected;
26+
27+
public MoneroNetworkListItem(MoneroRpcConnection connection, boolean connected) {
28+
this.connection = connection;
29+
this.connected = connected;
3530
}
3631

37-
public String getSubVersion() {
38-
return "";
32+
public String getAddress() {
33+
return connection.getUri();
3934
}
4035

41-
public String getHeight() {
42-
return String.valueOf(peer.getHeight());
36+
public String getConnected() {
37+
return connected ? Res.get("settings.net.connected") : "";
4338
}
4439
}

desktop/src/main/java/haveno/desktop/main/settings/network/NetworkSettingsView.fxml

+6-16
Original file line numberDiff line numberDiff line change
@@ -45,27 +45,17 @@
4545

4646
<TitledGroupBg fx:id="btcHeader" GridPane.rowSpan="5"/>
4747
<VBox GridPane.rowIndex="0" GridPane.hgrow="ALWAYS" GridPane.vgrow="SOMETIMES">
48-
<AutoTooltipLabel fx:id="moneroPeersLabel" styleClass="small-text"/>
49-
<TableView fx:id="moneroPeersTableView">
48+
<AutoTooltipLabel fx:id="moneroConnectionsLabel" styleClass="small-text"/>
49+
<TableView fx:id="moneroConnectionsTableView">
5050
<columns>
51-
<TableColumn fx:id="moneroPeerAddressColumn" minWidth="220">
51+
<TableColumn fx:id="moneroConnectionAddressColumn" minWidth="220">
5252
<cellValueFactory>
53-
<PropertyValueFactory property="onionAddress"/>
54-
</cellValueFactory>
55-
</TableColumn>
56-
<TableColumn fx:id="moneroPeerVersionColumn" minWidth="80" maxWidth="90">
57-
<cellValueFactory>
58-
<PropertyValueFactory property="version"/>
59-
</cellValueFactory>
60-
</TableColumn>
61-
<TableColumn fx:id="moneroPeerSubVersionColumn" minWidth="180" maxWidth="180">
62-
<cellValueFactory>
63-
<PropertyValueFactory property="subVersion"/>
53+
<PropertyValueFactory property="address"/>
6454
</cellValueFactory>
6555
</TableColumn>
66-
<TableColumn fx:id="moneroPeerHeightColumn" minWidth="80" maxWidth="80">
56+
<TableColumn fx:id="moneroConnectionConnectedColumn" minWidth="80" maxWidth="90">
6757
<cellValueFactory>
68-
<PropertyValueFactory property="height"/>
58+
<PropertyValueFactory property="connected"/>
6959
</cellValueFactory>
7060
</TableColumn>
7161
</columns>

0 commit comments

Comments
 (0)