set xmr node on startup w/ xmrNode, xmrNodeUsername, and xmrNodePassword

This commit is contained in:
woodser 2022-07-08 17:19:13 -04:00
parent 0f3b835abc
commit 896380218e
3 changed files with 40 additions and 5 deletions

View file

@ -99,6 +99,9 @@ public class Config {
public static final String SEND_MSG_THROTTLE_SLEEP = "sendMsgThrottleSleep"; public static final String SEND_MSG_THROTTLE_SLEEP = "sendMsgThrottleSleep";
public static final String IGNORE_LOCAL_BTC_NODE = "ignoreLocalBtcNode"; public static final String IGNORE_LOCAL_BTC_NODE = "ignoreLocalBtcNode";
public static final String BITCOIN_REGTEST_HOST = "bitcoinRegtestHost"; public static final String BITCOIN_REGTEST_HOST = "bitcoinRegtestHost";
public static final String XMR_NODE = "xmrNode";
public static final String XMR_NODE_USERNAME = "xmrNodeUsername";
public static final String XMR_NODE_PASSWORD = "xmrNodePassword";
public static final String BTC_NODES = "btcNodes"; public static final String BTC_NODES = "btcNodes";
public static final String SOCKS5_DISCOVER_MODE = "socks5DiscoverMode"; public static final String SOCKS5_DISCOVER_MODE = "socks5DiscoverMode";
public static final String USE_ALL_PROVIDED_NODES = "useAllProvidedNodes"; public static final String USE_ALL_PROVIDED_NODES = "useAllProvidedNodes";
@ -179,6 +182,9 @@ public class Config {
public final int msgThrottlePer10Sec; public final int msgThrottlePer10Sec;
public final int sendMsgThrottleTrigger; public final int sendMsgThrottleTrigger;
public final int sendMsgThrottleSleep; public final int sendMsgThrottleSleep;
public final String xmrNode;
public final String xmrNodeUsername;
public final String xmrNodePassword;
public final String btcNodes; public final String btcNodes;
public final boolean useTorForBtc; public final boolean useTorForBtc;
public final boolean useTorForBtcOptionSetExplicitly; public final boolean useTorForBtcOptionSetExplicitly;
@ -326,14 +332,14 @@ public class Config {
.withValuesConvertedBy(new EnumValueConverter(BaseCurrencyNetwork.class)) .withValuesConvertedBy(new EnumValueConverter(BaseCurrencyNetwork.class))
.defaultsTo(BaseCurrencyNetwork.XMR_MAINNET); .defaultsTo(BaseCurrencyNetwork.XMR_MAINNET);
ArgumentAcceptingOptionSpec<Boolean> ignoreLocalBtcNodeOpt = ArgumentAcceptingOptionSpec<Boolean> ignoreLocalBtcNodeOpt = // TODO: update this to ignore local XMR node
parser.accepts(IGNORE_LOCAL_BTC_NODE, parser.accepts(IGNORE_LOCAL_BTC_NODE,
"If set to true a Bitcoin Core node running locally will be ignored") "If set to true a Monero node running locally will be ignored")
.withRequiredArg() .withRequiredArg()
.ofType(Boolean.class) .ofType(Boolean.class)
.defaultsTo(false); .defaultsTo(false);
ArgumentAcceptingOptionSpec<String> bitcoinRegtestHostOpt = ArgumentAcceptingOptionSpec<String> bitcoinRegtestHostOpt = // TODO: remove?
parser.accepts(BITCOIN_REGTEST_HOST, "Bitcoin Core node when using XMR_STAGENET network") parser.accepts(BITCOIN_REGTEST_HOST, "Bitcoin Core node when using XMR_STAGENET network")
.withRequiredArg() .withRequiredArg()
.ofType(String.class) .ofType(String.class)
@ -500,6 +506,21 @@ public class Config {
.ofType(int.class) .ofType(int.class)
.defaultsTo(50); // Pause in ms to sleep if we get too many messages to send .defaultsTo(50); // Pause in ms to sleep if we get too many messages to send
ArgumentAcceptingOptionSpec<String> xmrNodeOpt =
parser.accepts(XMR_NODE, "URI of custom Monero node to use")
.withRequiredArg()
.defaultsTo("");
ArgumentAcceptingOptionSpec<String> xmrNodeUsernameOpt =
parser.accepts(XMR_NODE_USERNAME, "Username of custom Monero node to use")
.withRequiredArg()
.defaultsTo("");
ArgumentAcceptingOptionSpec<String> xmrNodePasswordOpt =
parser.accepts(XMR_NODE_PASSWORD, "Password of custom Monero node to use")
.withRequiredArg()
.defaultsTo("");
ArgumentAcceptingOptionSpec<String> btcNodesOpt = ArgumentAcceptingOptionSpec<String> btcNodesOpt =
parser.accepts(BTC_NODES, "Custom nodes used for BitcoinJ as comma separated IP addresses.") parser.accepts(BTC_NODES, "Custom nodes used for BitcoinJ as comma separated IP addresses.")
.withRequiredArg() .withRequiredArg()
@ -682,6 +703,9 @@ public class Config {
this.msgThrottlePer10Sec = options.valueOf(msgThrottlePer10SecOpt); this.msgThrottlePer10Sec = options.valueOf(msgThrottlePer10SecOpt);
this.sendMsgThrottleTrigger = options.valueOf(sendMsgThrottleTriggerOpt); this.sendMsgThrottleTrigger = options.valueOf(sendMsgThrottleTriggerOpt);
this.sendMsgThrottleSleep = options.valueOf(sendMsgThrottleSleepOpt); this.sendMsgThrottleSleep = options.valueOf(sendMsgThrottleSleepOpt);
this.xmrNode = options.valueOf(xmrNodeOpt);
this.xmrNodeUsername = options.valueOf(xmrNodeUsernameOpt);
this.xmrNodePassword = options.valueOf(xmrNodePasswordOpt);
this.btcNodes = options.valueOf(btcNodesOpt); this.btcNodes = options.valueOf(btcNodesOpt);
this.useTorForBtc = options.valueOf(useTorForBtcOpt); this.useTorForBtc = options.valueOf(useTorForBtcOpt);
this.useTorForBtcOptionSetExplicitly = options.has(useTorForBtcOpt); this.useTorForBtcOptionSetExplicitly = options.has(useTorForBtcOpt);

View file

@ -68,6 +68,7 @@ public final class CoreMoneroConnectionsService {
} }
private final Object lock = new Object(); private final Object lock = new Object();
private final Config config;
private final CoreContext coreContext; private final CoreContext coreContext;
private final CoreAccountService accountService; private final CoreAccountService accountService;
private final CoreMoneroNodeService nodeService; private final CoreMoneroNodeService nodeService;
@ -85,12 +86,14 @@ public final class CoreMoneroConnectionsService {
private TaskLooper updateDaemonLooper;; private TaskLooper updateDaemonLooper;;
@Inject @Inject
public CoreMoneroConnectionsService(CoreContext coreContext, public CoreMoneroConnectionsService(Config config,
CoreContext coreContext,
WalletsSetup walletsSetup, WalletsSetup walletsSetup,
CoreAccountService accountService, CoreAccountService accountService,
CoreMoneroNodeService nodeService, CoreMoneroNodeService nodeService,
MoneroConnectionManager connectionManager, MoneroConnectionManager connectionManager,
EncryptedConnectionList connectionList) { EncryptedConnectionList connectionList) {
this.config = config;
this.coreContext = coreContext; this.coreContext = coreContext;
this.accountService = accountService; this.accountService = accountService;
this.nodeService = nodeService; this.nodeService = nodeService;
@ -328,6 +331,11 @@ public final class CoreMoneroConnectionsService {
// run once // run once
if (!isInitialized) { if (!isInitialized) {
// set monero connection from startup arguments
if (!"".equals(config.xmrNode)) {
connectionManager.setConnection(new MoneroRpcConnection(config.xmrNode, config.xmrNodeUsername, config.xmrNodePassword).setPriority(1));
}
// register connection change listener // register connection change listener
connectionManager.addListener(this::onConnectionChanged); connectionManager.addListener(this::onConnectionChanged);
@ -362,7 +370,7 @@ public final class CoreMoneroConnectionsService {
}); });
// connect to local node if available // connect to local node if available
if (nodeService.isMoneroNodeRunning() && (connectionManager.getAutoSwitch() || !connectionManager.isConnected())) { if (nodeService.isMoneroNodeRunning() && (!connectionManager.isConnected() || connectionManager.getAutoSwitch())) {
MoneroRpcConnection connection = connectionManager.getConnectionByUri(nodeService.getDaemon().getRpcConnection().getUri()); MoneroRpcConnection connection = connectionManager.getConnectionByUri(nodeService.getDaemon().getRpcConnection().getUri());
if (connection != null) { if (connection != null) {
connection.checkConnection(connectionManager.getTimeout()); connection.checkConnection(connectionManager.getTimeout());

View file

@ -75,6 +75,9 @@ public class BitcoinModule extends AppModule {
bind(File.class).annotatedWith(named(WALLET_DIR)).toInstance(config.walletDir); bind(File.class).annotatedWith(named(WALLET_DIR)).toInstance(config.walletDir);
bind(int.class).annotatedWith(named(WALLET_RPC_BIND_PORT)).toInstance(config.walletRpcBindPort); bind(int.class).annotatedWith(named(WALLET_RPC_BIND_PORT)).toInstance(config.walletRpcBindPort);
bindConstant().annotatedWith(named(Config.XMR_NODE)).to(config.xmrNode);
bindConstant().annotatedWith(named(Config.XMR_NODE_USERNAME)).to(config.xmrNodeUsername);
bindConstant().annotatedWith(named(Config.XMR_NODE_PASSWORD)).to(config.xmrNodePassword);
bindConstant().annotatedWith(named(Config.BTC_NODES)).to(config.btcNodes); bindConstant().annotatedWith(named(Config.BTC_NODES)).to(config.btcNodes);
bindConstant().annotatedWith(named(Config.USER_AGENT)).to(config.userAgent); bindConstant().annotatedWith(named(Config.USER_AGENT)).to(config.userAgent);
bindConstant().annotatedWith(named(Config.NUM_CONNECTIONS_FOR_BTC)).to(config.numConnectionsForBtc); bindConstant().annotatedWith(named(Config.NUM_CONNECTIONS_FOR_BTC)).to(config.numConnectionsForBtc);