mirror of
https://github.com/bisq-network/bisq.git
synced 2024-11-19 01:41:11 +01:00
Migrate Socks5SeedOnionDiscovery to BitcoinCoreSeedListDiscovery
Our Socks5SeedOnionDiscovery contains deprecated Tor V2 onion addresses that are not supported anymore. BitcoinCoreSeedListDiscovery contains Tor V3 addresses that are shipped with Bitcoin Core.
This commit is contained in:
parent
c959f7b52c
commit
e1c7a0dc30
@ -20,8 +20,6 @@ package bisq.network;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.net.discovery.PeerDiscovery;
|
||||
import org.bitcoinj.net.discovery.PeerDiscoveryException;
|
||||
import org.bitcoinj.net.discovery.SeedPeers;
|
||||
import org.bitcoinj.params.MainNetParams;
|
||||
|
||||
import com.runjva.sourceforge.jsocks.protocol.Socks5Proxy;
|
||||
|
||||
@ -59,13 +57,9 @@ public class Socks5MultiDiscovery implements PeerDiscovery {
|
||||
* SOCKS5_DISCOVER_ALL
|
||||
*/
|
||||
public Socks5MultiDiscovery(Socks5Proxy proxy, NetworkParameters params, int mode) {
|
||||
if ((mode & SOCKS5_DISCOVER_ONION) != 0)
|
||||
discoveryList.add(new Socks5SeedOnionDiscovery(proxy, params));
|
||||
|
||||
// Testnet has no addrSeeds so SeedPeers is not supported (would throw a nullPointer)
|
||||
if ((mode & SOCKS5_DISCOVER_ADDR) != 0 && params == MainNetParams.get())
|
||||
// note: SeedPeers does not perform any network operations, so does not use proxy.
|
||||
discoveryList.add(new SeedPeers(params));
|
||||
if ((mode & SOCKS5_DISCOVER_ONION) != 0 || (mode & SOCKS5_DISCOVER_ADDR) != 0) {
|
||||
discoveryList.add(new BitcoinCoreSeedListDiscovery(mode));
|
||||
}
|
||||
|
||||
if ((mode & SOCKS5_DISCOVER_DNS) != 0)
|
||||
discoveryList.add(new Socks5DnsDiscovery(proxy, params));
|
||||
|
@ -1,177 +0,0 @@
|
||||
/*
|
||||
* This file is part of Bisq.
|
||||
*
|
||||
* Bisq is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* Bisq is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
|
||||
* License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Bisq. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package bisq.network;
|
||||
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.net.discovery.PeerDiscovery;
|
||||
import org.bitcoinj.net.discovery.PeerDiscoveryException;
|
||||
|
||||
import com.runjva.sourceforge.jsocks.protocol.Socks5Proxy;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* Socks5SeedOnionDiscovery provides a list of known Bitcoin .onion seeds.
|
||||
* These are nodes running as hidden services on the Tor network.
|
||||
*/
|
||||
public class Socks5SeedOnionDiscovery implements PeerDiscovery {
|
||||
private InetSocketAddress[] seedAddrs;
|
||||
|
||||
/**
|
||||
* Supports finding peers by hostname over a socks5 proxy.
|
||||
*
|
||||
* @param proxy proxy the socks5 proxy to connect over.
|
||||
* @param params param to be used for seed and port information.
|
||||
*/
|
||||
public Socks5SeedOnionDiscovery(@SuppressWarnings("UnusedParameters") Socks5Proxy proxy, NetworkParameters params) {
|
||||
// We do this because NetworkParameters does not contain any .onion
|
||||
// seeds. Perhaps someday...
|
||||
String[] seedAddresses = {};
|
||||
switch (params.getId()) {
|
||||
case NetworkParameters.ID_MAINNET:
|
||||
seedAddresses = mainNetSeeds();
|
||||
break;
|
||||
case NetworkParameters.ID_TESTNET:
|
||||
seedAddresses = testNet3Seeds();
|
||||
break;
|
||||
}
|
||||
|
||||
this.seedAddrs = convertAddrsString(seedAddresses, params.getPort());
|
||||
}
|
||||
|
||||
/**
|
||||
* returns .onion nodes available on mainnet
|
||||
*/
|
||||
private String[] mainNetSeeds() {
|
||||
// List copied from bitcoin-core on 2017-11-03
|
||||
// https://raw.githubusercontent.com/bitcoin/bitcoin/master/contrib/seeds/nodes_main.txt
|
||||
|
||||
return new String[]{
|
||||
"226eupdnaouu4h2v.onion",
|
||||
"2frgxpe5mheghyom.onion",
|
||||
"3ihjnsvwc3x6dp2o.onion",
|
||||
"3w77hrilg6q64opl.onion",
|
||||
"4ls4o6iszcd7mkfw.onion",
|
||||
"4p3abjxqppzxi7qi.onion",
|
||||
"546esc6botbjfbxb.onion",
|
||||
"5msftytzlsskr4ut.onion",
|
||||
"5ty6rxpgrkmdnk4a.onion",
|
||||
"akmqyuidrf56ip26.onion",
|
||||
"alhlegtjkdmbqsvt.onion",
|
||||
"bafk5ioatlgt7dgl.onion",
|
||||
"bup5n5e3kurvjzf3.onion",
|
||||
"cjygd7pu5lqkky5j.onion",
|
||||
"cyvpgt25274i5b7c.onion",
|
||||
"dekj4wacywpqsad3.onion",
|
||||
"dqpxwlpnv3z3hznl.onion",
|
||||
"drarzpycbtxwbcld.onion",
|
||||
"drp4pvejybx2ejdr.onion",
|
||||
"dxkmtmwiq7ddtgul.onion",
|
||||
"e6j57zkyibu2smad.onion",
|
||||
"ejcqevujcqltqn7d.onion",
|
||||
"eqgbt2ghfvsshbvo.onion",
|
||||
"fgizgkdnndilo6ka.onion",
|
||||
"fqxup4oev33eeidg.onion",
|
||||
"gb5ypqt63du3wfhn.onion",
|
||||
"ggdy2pb2avlbtjwq.onion",
|
||||
"hahhloezyfqh3hci.onion",
|
||||
"ihdv6bzz2gx72fs7.onion",
|
||||
"in7r5ieo7ogkxbne.onion",
|
||||
"kvd44sw7skb5folw.onion",
|
||||
"mn744hbioayn3ojs.onion",
|
||||
"ms4ntrrisfxzpvmy.onion",
|
||||
"n5lqwpjabqg62ihx.onion",
|
||||
"o4sl5na6jeqgi3l6.onion",
|
||||
"omjv24nbck4k5ud6.onion",
|
||||
"po3j2hfkmf7sh36o.onion",
|
||||
"psco6bxjewljrczx.onion",
|
||||
"qi5yr6lvlckzffor.onion",
|
||||
"qlv6py6hdtzipntn.onion",
|
||||
"qynmpgdbp23xyfnj.onion",
|
||||
"rhtawcs7xak4gi3t.onion",
|
||||
"rjacws757ai66lre.onion",
|
||||
"rjlnp3hwvrsmap6e.onion",
|
||||
"rkdvqcrtfv6yt4oy.onion",
|
||||
"rlafimkctvz63llg.onion",
|
||||
"rlj4ppok4dnsdu5n.onion",
|
||||
"seoskudzk6vn6mqz.onion",
|
||||
"tayqi57tfiy7x3vk.onion",
|
||||
"tchop676j6yppwwm.onion",
|
||||
"trrtyp3sirmwttyu.onion",
|
||||
"tx4zd7d5exonnblh.onion",
|
||||
"u4ecb7txxi6l3gix.onion",
|
||||
"umcxcmfycvejw264.onion",
|
||||
"v7xqd42ocemalurd.onion",
|
||||
"vb267mt3lnwfdmdb.onion",
|
||||
"vev3n5fxfrtqj6e5.onion",
|
||||
"visevrizz3quyagj.onion",
|
||||
"vpg6p5e5ln33dqtp.onion",
|
||||
"vr2ruasinafoy3fl.onion",
|
||||
"x6pthvd5x6abyfo7.onion",
|
||||
"xbwbzrspvav7u5ie.onion",
|
||||
"xfcevnql2chnawko.onion",
|
||||
"ycivnom44dmxx4ob.onion",
|
||||
"yzdvlv5daitafekn.onion"
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* returns .onion nodes available on testnet3
|
||||
*/
|
||||
private String[] testNet3Seeds() {
|
||||
// this list copied from bitcoin-core on 2017-01-19
|
||||
// https://github.com/bitcoin/bitcoin/blob/57b34599b2deb179ff1bd97ffeab91ec9f904d85/contrib/seeds/nodes_test.txt
|
||||
return new String[]{
|
||||
"thfsmmn2jbitcoin.onion",
|
||||
"it2pj4f7657g3rhi.onion",
|
||||
"nkf5e6b7pl4jfd4a.onion",
|
||||
"4zhkir2ofl7orfom.onion",
|
||||
"t6xj6wilh4ytvcs7.onion",
|
||||
"i6y6ivorwakd7nw3.onion",
|
||||
"ubqj4rsu3nqtxmtp.onion"
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array containing all the Bitcoin nodes within the list.
|
||||
*/
|
||||
@Override
|
||||
public InetSocketAddress[] getPeers(long services, long timeoutValue, TimeUnit timeoutUnit) throws PeerDiscoveryException {
|
||||
if (services != 0)
|
||||
throw new PeerDiscoveryException("DNS seeds cannot filter by services: " + services);
|
||||
return seedAddrs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an array of hostnames to array of unresolved InetSocketAddress
|
||||
*/
|
||||
private InetSocketAddress[] convertAddrsString(String[] addrs, int port) {
|
||||
InetSocketAddress[] list = new InetSocketAddress[addrs.length];
|
||||
for (int i = 0; i < addrs.length; i++) {
|
||||
list[i] = InetSocketAddress.createUnresolved(addrs[i], port);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
//TODO should we add a DnsLookupTor.shutdown() ?
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user