From f697bdfe47d371d3b214b231414fb0f291d89a75 Mon Sep 17 00:00:00 2001 From: Joep Mulder Date: Mon, 18 Mar 2024 23:58:41 +0100 Subject: [PATCH] added own ip & pk to debug dashboard --- .../ui/bitcoin/DebugDashboardFragment.kt | 73 +++++++++------ .../currencyii/ui/bitcoin/PeerListAdapter.kt | 4 +- .../res/layout/fragment_debug_dashboard.xml | 89 ++++++++++++++++--- .../src/main/res/layout/peer_row_data.xml | 11 +++ 4 files changed, 137 insertions(+), 40 deletions(-) diff --git a/currencyii/src/main/java/nl/tudelft/trustchain/currencyii/ui/bitcoin/DebugDashboardFragment.kt b/currencyii/src/main/java/nl/tudelft/trustchain/currencyii/ui/bitcoin/DebugDashboardFragment.kt index cbfddebc..11c28c14 100644 --- a/currencyii/src/main/java/nl/tudelft/trustchain/currencyii/ui/bitcoin/DebugDashboardFragment.kt +++ b/currencyii/src/main/java/nl/tudelft/trustchain/currencyii/ui/bitcoin/DebugDashboardFragment.kt @@ -1,32 +1,23 @@ package nl.tudelft.trustchain.currencyii.ui.bitcoin + import android.os.Bundle -import android.util.Log +import android.text.format.Formatter import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope -import androidx.navigation.fragment.findNavController -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import nl.tudelft.ipv8.android.IPv8Android -import nl.tudelft.ipv8.attestation.trustchain.TrustChainBlock -import nl.tudelft.ipv8.util.toHex import nl.tudelft.trustchain.currencyii.CoinCommunity import nl.tudelft.trustchain.currencyii.R -import nl.tudelft.trustchain.currencyii.coin.BitcoinNetworkOptions -import nl.tudelft.trustchain.currencyii.coin.MAIN_NET_WALLET_NAME -import nl.tudelft.trustchain.currencyii.coin.REG_TEST_WALLET_NAME -import nl.tudelft.trustchain.currencyii.coin.TEST_NET_WALLET_NAME -import nl.tudelft.trustchain.currencyii.coin.WalletManagerAndroid -import nl.tudelft.trustchain.currencyii.coin.WalletManagerConfiguration import nl.tudelft.trustchain.currencyii.databinding.FragmentDebugDashboardBinding -import nl.tudelft.trustchain.currencyii.databinding.FragmentMyDaosBinding -import nl.tudelft.trustchain.currencyii.sharedWallet.SWJoinBlockTransactionData import nl.tudelft.trustchain.currencyii.ui.BaseFragment -import java.io.File +import java.net.InetAddress +import java.net.NetworkInterface +import java.util.Collections +import java.util.Locale + /** * A simple [Fragment] subclass. @@ -39,6 +30,9 @@ class DebugDashboardFragment : BaseFragment(R.layout.fragment_debug_dashboard) { private val binding get() = _binding!! private var adapter: PeerListAdapter? = null private var isFetching: Boolean = false + private var ipv8 = IPv8Android.getInstance() + + @Deprecated("Deprecated in Java") @@ -50,7 +44,7 @@ class DebugDashboardFragment : BaseFragment(R.layout.fragment_debug_dashboard) { } private fun initListeners() { - binding.joinDaoRefreshSwiper.setOnRefreshListener { + binding.connectedPeersRefreshSwiper.setOnRefreshListener { this.refresh() } } @@ -65,14 +59,14 @@ class DebugDashboardFragment : BaseFragment(R.layout.fragment_debug_dashboard) { private fun enableRefresher() { try { this.isFetching = true - binding.joinDaoRefreshSwiper.isRefreshing = true + binding.connectedPeersRefreshSwiper.isRefreshing = true } catch (_: Exception) { } } private fun disableRefresher() { try { - binding.joinDaoRefreshSwiper.isRefreshing = false + binding.connectedPeersRefreshSwiper.isRefreshing = false } catch (_: Exception) { } } @@ -85,6 +79,8 @@ class DebugDashboardFragment : BaseFragment(R.layout.fragment_debug_dashboard) { // Inflate the layout for this fragment showNavBar() _binding = FragmentDebugDashboardBinding.inflate(inflater, container, false) + + return binding.root } @@ -98,23 +94,48 @@ class DebugDashboardFragment : BaseFragment(R.layout.fragment_debug_dashboard) { } private fun getPeersAndUpdateUI() { - val peers = IPv8Android.getInstance().getOverlay()!!.getPeers(); + val peers = ipv8.getOverlay()!!.getPeers(); + + adapter = PeerListAdapter( this@DebugDashboardFragment, peers) - binding.listView.adapter = adapter + binding.listView.adapter = adapter; + // ipv8.myPeer.address is empty so have to get IP with method below + binding.myIpv4.text = getMyIPv4Address(); + binding.myPublicKey.text = ipv8.myPeer.publicKey.toString() + disableRefresher() } - - - - - companion object { @JvmStatic fun newInstance() = DebugDashboardFragment() } + + fun getMyIPv4Address(): String? { + try { + val interfaces: List = + Collections.list(NetworkInterface.getNetworkInterfaces()) + for (intf in interfaces) { + val addrs: List = Collections.list(intf.inetAddresses) + for (addr in addrs) { + if (!addr.isLoopbackAddress) { + val sAddr = addr.hostAddress + val isIPv4 = sAddr.indexOf(':') < 0 + if (isIPv4) { + val x = sAddr + val ip = Formatter.formatIpAddress(sAddr.hashCode()); + return ip + } + } + } + } + } catch (ignored: java.lang.Exception) { + return "No IP found" + } + return "" + } } diff --git a/currencyii/src/main/java/nl/tudelft/trustchain/currencyii/ui/bitcoin/PeerListAdapter.kt b/currencyii/src/main/java/nl/tudelft/trustchain/currencyii/ui/bitcoin/PeerListAdapter.kt index 3a624049..bc683e73 100644 --- a/currencyii/src/main/java/nl/tudelft/trustchain/currencyii/ui/bitcoin/PeerListAdapter.kt +++ b/currencyii/src/main/java/nl/tudelft/trustchain/currencyii/ui/bitcoin/PeerListAdapter.kt @@ -40,13 +40,15 @@ class PeerListAdapter( val ipv4 = binding.ipv4 var last_request = binding.lastRequest; - var last_response = binding.lastResponse + var last_response = binding.lastResponse; + var public_key = binding.publicKey ipv4.text = peer.address.ip last_request.text = peer.lastRequest?.let { formatter.format(it) }; last_response.text = peer.lastResponse?.let { formatter.format(it) }; + public_key.text = peer.publicKey.toString(); return view diff --git a/currencyii/src/main/res/layout/fragment_debug_dashboard.xml b/currencyii/src/main/res/layout/fragment_debug_dashboard.xml index b266e1fd..293cb0e6 100644 --- a/currencyii/src/main/res/layout/fragment_debug_dashboard.xml +++ b/currencyii/src/main/res/layout/fragment_debug_dashboard.xml @@ -12,23 +12,86 @@ android:layout_height="match_parent" android:orientation="vertical"> - + android:layout_height="match_parent" + android:gravity="center_horizontal" + android:orientation="vertical"> - + + + + + + + + + + + + + + + - + + + + + - + android:layout_height="wrap_content" + android:textSize="20sp" + android:text="Connected peers:" /> + + + + + + + + + + + diff --git a/currencyii/src/main/res/layout/peer_row_data.xml b/currencyii/src/main/res/layout/peer_row_data.xml index 643bdefd..7a1d9b08 100644 --- a/currencyii/src/main/res/layout/peer_row_data.xml +++ b/currencyii/src/main/res/layout/peer_row_data.xml @@ -39,6 +39,11 @@ android:layout_height="wrap_content" android:paddingRight="10dp" android:text="Last request:" /> + @@ -67,6 +72,12 @@ android:layout_height="wrap_content" android:gravity="center_vertical" android:text="text" /> +