From 24928bce51b769b1383f6fbe500ef6bc742c0846 Mon Sep 17 00:00:00 2001 From: Alva Swanson Date: Wed, 22 May 2024 16:35:16 +0000 Subject: [PATCH 1/4] WhonixTorController: Implement TAKEOWNERSHIP command --- .../tor/controller/ControlCommandFailedException.java | 4 ++++ .../java/bisq/tor/controller/WhonixTorController.java | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/network/tor/tor/src/main/java/bisq/tor/controller/ControlCommandFailedException.java b/network/tor/tor/src/main/java/bisq/tor/controller/ControlCommandFailedException.java index 67476d2fe3..18e0e435e6 100644 --- a/network/tor/tor/src/main/java/bisq/tor/controller/ControlCommandFailedException.java +++ b/network/tor/tor/src/main/java/bisq/tor/controller/ControlCommandFailedException.java @@ -18,6 +18,10 @@ package bisq.tor.controller; public class ControlCommandFailedException extends RuntimeException { + public ControlCommandFailedException(String message) { + super(message); + } + public ControlCommandFailedException(String message, Throwable cause) { super(message, cause); } diff --git a/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java b/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java index 4610c844c5..c3b4ccb939 100644 --- a/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java +++ b/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java @@ -52,6 +52,15 @@ public void addOnion(TorKeyPair torKeyPair, int onionPort, int localPort) throws String reply = receiveReply(); } + public void takeOwnership() throws IOException { + String command = "TAKEOWNERSHIP\r\n"; + sendCommand(command); + String reply = receiveReply(); + if (!reply.equals("250 OK")) { + throw new ControlCommandFailedException("Couldn't take ownership"); + } + } + private void sendCommand(String command) throws IOException { byte[] commandBytes = command.getBytes(StandardCharsets.US_ASCII); outputStream.write(commandBytes); From f06155f48db8a6a4ff0c5c45e59611e711b3224e Mon Sep 17 00:00:00 2001 From: Alva Swanson Date: Wed, 22 May 2024 16:40:39 +0000 Subject: [PATCH 2/4] WhonixTorController: Implement RESETCONF command --- .../java/bisq/tor/controller/WhonixTorController.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java b/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java index c3b4ccb939..d16f2c5d55 100644 --- a/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java +++ b/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java @@ -52,6 +52,15 @@ public void addOnion(TorKeyPair torKeyPair, int onionPort, int localPort) throws String reply = receiveReply(); } + public void resetConf(String configName) throws IOException { + String command = "RESETCONF " + configName + "\r\n"; + sendCommand(command); + String reply = receiveReply(); + if (!reply.equals("250 OK")) { + throw new ControlCommandFailedException("Couldn't reset config: " + configName); + } + } + public void takeOwnership() throws IOException { String command = "TAKEOWNERSHIP\r\n"; sendCommand(command); From b9ad688cb0a85cca55e7fea3d73790f40b789685 Mon Sep 17 00:00:00 2001 From: Alva Swanson Date: Wed, 22 May 2024 16:48:39 +0000 Subject: [PATCH 3/4] WhonixTorController: Implement SETEVENTS command --- .../bisq/tor/controller/WhonixTorController.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java b/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java index d16f2c5d55..dbdde8447b 100644 --- a/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java +++ b/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java @@ -7,6 +7,7 @@ import java.io.*; import java.net.Socket; import java.nio.charset.StandardCharsets; +import java.util.List; public class WhonixTorController implements AutoCloseable { private final Socket controlSocket; @@ -61,6 +62,19 @@ public void resetConf(String configName) throws IOException { } } + public void setEvents(List events) throws IOException { + var stringBuilder = new StringBuffer("SETEVENTS"); + events.forEach(event -> stringBuilder.append(" ").append(event)); + stringBuilder.append("\r\n"); + + String command = stringBuilder.toString(); + sendCommand(command); + String reply = receiveReply(); + if (!reply.equals("250 OK")) { + throw new ControlCommandFailedException("Couldn't set events: " + events); + } + } + public void takeOwnership() throws IOException { String command = "TAKEOWNERSHIP\r\n"; sendCommand(command); From 513513fa2af716c980b8a89424647b0f7b3bd5b7 Mon Sep 17 00:00:00 2001 From: Alva Swanson Date: Wed, 22 May 2024 16:53:20 +0000 Subject: [PATCH 4/4] WhonixTorController: Implement SETCONF command --- .../java/bisq/tor/controller/WhonixTorController.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java b/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java index dbdde8447b..821a915c47 100644 --- a/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java +++ b/network/tor/tor/src/main/java/bisq/tor/controller/WhonixTorController.java @@ -62,6 +62,15 @@ public void resetConf(String configName) throws IOException { } } + public void setConfig(String configName, String configValue) throws IOException { + String command = "SETCONF " + configName + "=" + configValue + "\r\n"; + sendCommand(command); + String reply = receiveReply(); + if (!reply.equals("250 OK")) { + throw new ControlCommandFailedException("Couldn't set config: " + configName + "=" + configValue); + } + } + public void setEvents(List events) throws IOException { var stringBuilder = new StringBuffer("SETEVENTS"); events.forEach(event -> stringBuilder.append(" ").append(event));