diff --git a/java-examples/scripts/create-bot-jars.sh b/java-examples/scripts/create-bot-jars.sh index 74d8c97..183ab93 100755 --- a/java-examples/scripts/create-bot-jars.sh +++ b/java-examples/scripts/create-bot-jars.sh @@ -49,4 +49,4 @@ extractdistribution ./create-runnable-jar.sh "$GRADLE_DIST_NAME" bisq.bots.TakeBestPricedOfferToSellBsq rm -r "$GRADLE_DIST_TARBALL" -echo "Done" \ No newline at end of file +echo "Done" diff --git a/java-examples/src/main/java/bisq/bots/AbstractBot.java b/java-examples/src/main/java/bisq/bots/AbstractBot.java index 9f59f75..edeb9f0 100644 --- a/java-examples/src/main/java/bisq/bots/AbstractBot.java +++ b/java-examples/src/main/java/bisq/bots/AbstractBot.java @@ -326,6 +326,27 @@ public abstract class AbstractBot { } } + /** + * Attempt to unlock the wallet for 1 second using the given password, and shut down the bot if the + * password check fails for any reason. + * + * @param walletPassword String API daemon's wallet password + */ + protected void validateWalletPassword(String walletPassword) { + try { + var request = UnlockWalletRequest.newBuilder() + .setPassword(walletPassword) + .setTimeout(1) + .build(); + //noinspection ResultOfMethodCallIgnored + grpcStubs.walletsService.unlockWallet(request); + } catch (StatusRuntimeException grpcException) { + log.error("Wallet password check failed."); + log.error((toCleanErrorMessage.apply(grpcException))); + exit(1); + } + } + /** * Returns PaymentAccount for given paymentAccountId, else throws an IllegalArgumentException. * diff --git a/java-examples/src/main/java/bisq/bots/BotUtils.java b/java-examples/src/main/java/bisq/bots/BotUtils.java index 86646ff..98ae329 100644 --- a/java-examples/src/main/java/bisq/bots/BotUtils.java +++ b/java-examples/src/main/java/bisq/bots/BotUtils.java @@ -253,7 +253,7 @@ public class BotUtils { */ public static String readWalletPassword(String prompt) { String walletPassword; - var console = console(); // Returns null in IDE console! + var console = console(); // System.console() returns null if you do not launch your java application with a real console. if (console == null) { // Have to read it in a less secure way in the IDE's virtual console. diff --git a/java-examples/src/main/java/bisq/bots/OfferTaker.java b/java-examples/src/main/java/bisq/bots/OfferTaker.java index 08a29b3..ada4056 100644 --- a/java-examples/src/main/java/bisq/bots/OfferTaker.java +++ b/java-examples/src/main/java/bisq/bots/OfferTaker.java @@ -237,7 +237,7 @@ class OfferTaker { + " Shut down the API bot and server, then check the server log.")); } } - + /** * Wait and block until a new trade is fully initialized, with a trade contract and the user's trade role. *
diff --git a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBsq.java b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBsq.java
index b9b1226..e7079ce 100644
--- a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBsq.java
+++ b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBsq.java
@@ -262,9 +262,8 @@ public class TakeBestPricedOfferToBuyBsq extends AbstractBot {
public static void main(String[] args) {
@SuppressWarnings("unused")
String prompt = "An encrypted wallet must be unlocked before any offer can be taken.\n"
- + " Please enter your wallet password:";
- String walletPassword = "be careful"; // readWalletPassword(prompt);
- log.info("Your wallet password is {}", walletPassword.isBlank() ? "blank" : walletPassword);
+ + "Please enter your wallet password:";
+ String walletPassword = readWalletPassword(prompt);
TakeBestPricedOfferToBuyBsq bot = new TakeBestPricedOfferToBuyBsq(appendWalletPasswordOpt(args, walletPassword));
bot.run();
}
diff --git a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBtc.java b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBtc.java
index a6f1d9a..db81b77 100644
--- a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBtc.java
+++ b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBtc.java
@@ -133,6 +133,7 @@ public class TakeBestPricedOfferToBuyBtc extends AbstractBot {
public void run() {
var startTime = new Date().getTime();
validatePollingInterval(pollingInterval);
+ validateWalletPassword(walletPassword);
validateTradeFeeCurrencyCode(bisqTradeFeeCurrency);
validatePaymentAccount(paymentAccount);
printBotConfiguration();
@@ -329,9 +330,8 @@ public class TakeBestPricedOfferToBuyBtc extends AbstractBot {
public static void main(String[] args) {
@SuppressWarnings("unused")
String prompt = "An encrypted wallet must be unlocked before any offer can be taken.\n"
- + " Please enter your wallet password:";
- String walletPassword = "be careful"; // readWalletPassword(prompt);
- log.info("Your wallet password is {}", walletPassword.isBlank() ? "blank" : walletPassword);
+ + "Please enter your wallet password:";
+ String walletPassword = readWalletPassword(prompt);
TakeBestPricedOfferToBuyBtc bot = new TakeBestPricedOfferToBuyBtc(appendWalletPasswordOpt(args, walletPassword));
bot.run();
}
@@ -404,7 +404,7 @@ public class TakeBestPricedOfferToBuyBtc extends AbstractBot {
var filterResultsByLabel = new LinkedHashMap