diff --git a/src/main/java/org/qortal/network/Network.java b/src/main/java/org/qortal/network/Network.java index 0ef7d5a0..f9e394ef 100644 --- a/src/main/java/org/qortal/network/Network.java +++ b/src/main/java/org/qortal/network/Network.java @@ -150,9 +150,23 @@ public class Network { } // Load all known peers from repository - try (Repository repository = RepositoryManager.getRepository()) { - synchronized (this.allKnownPeers) { - this.allKnownPeers.addAll(repository.getNetworkRepository().getAllPeers()); + synchronized (this.allKnownPeers) { List fixedNetwork = Settings.getInstance().getFixedNetwork(); + if (fixedNetwork != null && !fixedNetwork.isEmpty()) { + Long addedWhen = NTP.getTime(); + String addedBy = "fixedNetwork"; + List peerAddresses = new ArrayList<>(); + for (String address : fixedNetwork) { + PeerAddress peerAddress = PeerAddress.fromString(address); + peerAddresses.add(peerAddress); + } + List peers = peerAddresses.stream() + .map(peerAddress -> new PeerData(peerAddress, addedWhen, addedBy)) + .collect(Collectors.toList()); + this.allKnownPeers.addAll(peers); + } else { + try (Repository repository = RepositoryManager.getRepository()) { + this.allKnownPeers.addAll(repository.getNetworkRepository().getAllPeers()); + } } } @@ -1115,6 +1129,10 @@ public class Network { private boolean mergePeers(Repository repository, String addedBy, long addedWhen, List peerAddresses) throws DataException { + List fixedNetwork = Settings.getInstance().getFixedNetwork(); + if (fixedNetwork != null && !fixedNetwork.isEmpty()) { + return false; + } List newPeers; synchronized (this.allKnownPeers) { for (PeerData knownPeerData : this.allKnownPeers) { diff --git a/src/main/java/org/qortal/settings/Settings.java b/src/main/java/org/qortal/settings/Settings.java index 164223c9..1c3a8ce4 100644 --- a/src/main/java/org/qortal/settings/Settings.java +++ b/src/main/java/org/qortal/settings/Settings.java @@ -5,6 +5,7 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.Reader; +import java.util.List; import java.util.Locale; import javax.xml.bind.JAXBContext; @@ -147,6 +148,7 @@ public class Settings { private String repositoryPath = "db"; /** Repository connection pool size. Needs to be a bit bigger than maxNetworkThreadPoolSize */ private int repositoryConnectionPoolSize = 100; + private List fixedNetwork; // Auto-update sources private String[] autoUpdateRepos = new String[] { @@ -507,4 +509,7 @@ public class Settings { return this.onlineSignaturesTrimBatchSize; } + public List getFixedNetwork() { + return fixedNetwork; + } }