X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/ef5d3a65f8de2ae8e17adfb7c307d88b0c04778a..208e12bdc6bfcfd141d46a40b105d2559340ead0:/src/main/java/cli/Main.java?ds=inline diff --git a/src/main/java/cli/Main.java b/src/main/java/cli/Main.java index 49975daa..28854846 100644 --- a/src/main/java/cli/Main.java +++ b/src/main/java/cli/Main.java @@ -20,6 +20,8 @@ import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.impl.Arguments; import net.sourceforge.argparse4j.inf.*; import org.apache.commons.io.IOUtils; +import org.freedesktop.dbus.DBusConnection; +import org.freedesktop.dbus.exceptions.DBusException; import org.whispersystems.textsecure.api.crypto.UntrustedIdentityException; import org.whispersystems.textsecure.api.messages.*; import org.whispersystems.textsecure.api.messages.multidevice.TextSecureSyncMessage; @@ -95,7 +97,7 @@ public class Main { System.exit(1); } try { - m.sendEndSessionMessage(ns.getList("recipient")); + m.sendEndSessionMessage(ns.getList("recipient")); } catch (IOException e) { handleIOException(e); } catch (EncapsulatedExceptions e) { @@ -120,7 +122,7 @@ public class Main { byte[] groupId = decodeGroupId(ns.getString("group")); m.sendGroupMessage(messageText, ns.getList("attachment"), groupId); } else { - m.sendMessage(messageText, ns.getList("attachment"), ns.getList("recipient")); + m.sendMessage(messageText, ns.getList("attachment"), ns.getList("recipient")); } } catch (IOException e) { handleIOException(e); @@ -155,13 +157,10 @@ public class Main { try { m.receiveMessages(timeout, returnOnTimeout, new ReceiveMessageHandler(m)); } catch (IOException e) { - System.err.println("Error while receiving message: " + e.getMessage()); + System.err.println("Error while receiving messages: " + e.getMessage()); System.exit(3); } catch (AssertionError e) { - System.err.println("Failed to receive message (Assertion): " + e.getMessage()); - System.err.println(e.getStackTrace()); - System.err.println("If you use an Oracle JRE please check if you have unlimited strength crypto enabled, see README"); - System.exit(1); + handleAssertionError(e); } break; case "quitGroup": @@ -194,7 +193,7 @@ public class Main { if (ns.getString("group") != null) { groupId = decodeGroupId(ns.getString("group")); } - byte[] newGroupId = m.sendUpdateGroupMessage(groupId, ns.getString("name"), ns.getList("member"), ns.getString("avatar")); + byte[] newGroupId = m.sendUpdateGroupMessage(groupId, ns.getString("name"), ns.getList("member"), ns.getString("avatar")); if (groupId == null) { System.out.println("Creating new group \"" + Base64.encodeBytes(newGroupId) + "\" …"); } @@ -210,9 +209,37 @@ public class Main { handleEncapsulatedExceptions(e); } + break; + case "daemon": + if (!m.isRegistered()) { + System.err.println("User is not registered."); + System.exit(1); + } + try { + int busType; + if (ns.getBoolean("system")) { + busType = DBusConnection.SYSTEM; + } else { + busType = DBusConnection.SESSION; + } + DBusConnection conn = DBusConnection.getConnection(busType); + conn.requestBusName("org.asamk.TextSecure"); + conn.exportObject("/org/asamk/TextSecure", m); + } catch (DBusException e) { + e.printStackTrace(); + System.exit(3); + } + try { + m.receiveMessages(3600, false, new ReceiveMessageHandler(m)); + } catch (IOException e) { + System.err.println("Error while receiving messages: " + e.getMessage()); + System.exit(3); + } catch (AssertionError e) { + handleAssertionError(e); + } + break; } - m.save(); System.exit(0); } @@ -296,6 +323,11 @@ public class Main { .type(int.class) .help("Number of seconds to wait for new messages (negative values disable timeout)"); + Subparser parserDaemon = subparsers.addParser("daemon"); + parserDaemon.addArgument("--system") + .action(Arguments.storeTrue()) + .help("Use DBus system bus instead of user bus."); + try { Namespace ns = parser.parseArgs(args); if (ns.getString("username") == null) { @@ -319,7 +351,7 @@ public class Main { } private static void handleAssertionError(AssertionError e) { - System.err.println("Failed to send message (Assertion): " + e.getMessage()); + System.err.println("Failed to send/receive message (Assertion): " + e.getMessage()); System.err.println(e.getStackTrace()); System.err.println("If you use an Oracle JRE please check if you have unlimited strength crypto enabled, see README"); System.exit(1);