X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/eabd361405a54a5b7122bf537cb299306f098e45..af8a27e87f7844e733d1b42419c3976f0b41ae58:/src/main/java/org/asamk/signal/Main.java diff --git a/src/main/java/org/asamk/signal/Main.java b/src/main/java/org/asamk/signal/Main.java index a4e50bb4..d562c4e1 100644 --- a/src/main/java/org/asamk/signal/Main.java +++ b/src/main/java/org/asamk/signal/Main.java @@ -28,6 +28,7 @@ import org.freedesktop.dbus.exceptions.DBusExecutionException; import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException; import org.whispersystems.signalservice.api.messages.*; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; +import org.whispersystems.signalservice.api.push.SignalServiceAddress; import org.whispersystems.signalservice.api.push.exceptions.EncapsulatedExceptions; import org.whispersystems.signalservice.api.push.exceptions.NetworkFailureException; import org.whispersystems.signalservice.api.push.exceptions.UnregisteredUserException; @@ -83,6 +84,12 @@ public class Main { String settingsPath = ns.getString("config"); if (TextUtils.isEmpty(settingsPath)) { settingsPath = System.getProperty("user.home") + "/.config/signal"; + if (!new File(settingsPath).exists()) { + String legacySettingsPath = System.getProperty("user.home") + "/.config/textsecure"; + if (new File(legacySettingsPath).exists()) { + settingsPath = legacySettingsPath; + } + } } m = new Manager(username, settingsPath); @@ -456,7 +463,7 @@ public class Main { private static void handleAssertionError(AssertionError e) { System.err.println("Failed to send/receive message (Assertion): " + e.getMessage()); - System.err.println(e.getStackTrace()); + e.printStackTrace(); System.err.println("If you use an Oracle JRE please check if you have unlimited strength crypto enabled, see README"); System.exit(1); } @@ -487,7 +494,11 @@ public class Main { @Override public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, GroupInfo group) { - System.out.println("Envelope from: " + envelope.getSource()); + SignalServiceAddress source = envelope.getSourceAddress(); + System.out.println(String.format("Envelope from: %s (device: %d)", source.getNumber(), envelope.getSourceDevice())); + if (source.getRelay().isPresent()) { + System.out.println("Relayed by: " + source.getRelay().get()); + } System.out.println("Timestamp: " + envelope.getTimestamp()); if (envelope.isReceipt()) { @@ -562,94 +573,46 @@ public class Main { } } - private static class DbusReceiveMessageHandler implements Manager.ReceiveMessageHandler { - final Manager m; + private static class DbusReceiveMessageHandler extends ReceiveMessageHandler { final DBusConnection conn; public DbusReceiveMessageHandler(Manager m, DBusConnection conn) { - this.m = m; + super(m); this.conn = conn; } @Override public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, GroupInfo group) { - System.out.println("Envelope from: " + envelope.getSource()); - System.out.println("Timestamp: " + envelope.getTimestamp()); - - if (envelope.isReceipt()) { - System.out.println("Got receipt."); - } else if (envelope.isSignalMessage() | envelope.isPreKeySignalMessage()) { - if (content == null) { - System.out.println("Failed to decrypt message."); - } else { - if (content.getDataMessage().isPresent()) { - SignalServiceDataMessage message = content.getDataMessage().get(); - - System.out.println("Message timestamp: " + message.getTimestamp()); - - if (message.getBody().isPresent()) { - System.out.println("Body: " + message.getBody().get()); - } - - if (message.getGroupInfo().isPresent()) { - SignalServiceGroup groupInfo = message.getGroupInfo().get(); - System.out.println("Group info:"); - System.out.println(" Id: " + Base64.encodeBytes(groupInfo.getGroupId())); - if (groupInfo.getName().isPresent()) { - System.out.println(" Name: " + groupInfo.getName().get()); - } else if (group != null) { - System.out.println(" Name: " + group.name); - } else { - System.out.println(" Name: "); - } - System.out.println(" Type: " + groupInfo.getType()); - if (groupInfo.getMembers().isPresent()) { - for (String member : groupInfo.getMembers().get()) { - System.out.println(" Member: " + member); - } - } - if (groupInfo.getAvatar().isPresent()) { - System.out.println(" Avatar:"); - printAttachment(groupInfo.getAvatar().get()); - } - } - if (message.isEndSession()) { - System.out.println("Is end session"); - } - - List attachments = new ArrayList<>(); - if (message.getAttachments().isPresent()) { - System.out.println("Attachments: "); - for (SignalServiceAttachment attachment : message.getAttachments().get()) { - if (attachment.isPointer()) { - attachments.add(m.getAttachmentFile(attachment.asPointer().getId()).getAbsolutePath()); - } - printAttachment(attachment); - } - } - if (!message.isEndSession() && - !(message.getGroupInfo().isPresent() && message.getGroupInfo().get().getType() != SignalServiceGroup.Type.DELIVER)) { - try { - conn.sendSignal(new Signal.MessageReceived( - SIGNAL_OBJECTPATH, - envelope.getSource(), - message.getGroupInfo().isPresent() ? message.getGroupInfo().get().getGroupId() : new byte[0], - message.getBody().isPresent() ? message.getBody().get() : "", - attachments)); - } catch (DBusException e) { - e.printStackTrace(); + super.handleMessage(envelope, content, group); + + if (!envelope.isReceipt() && content != null && content.getDataMessage().isPresent()) { + SignalServiceDataMessage message = content.getDataMessage().get(); + + if (!message.isEndSession() && + !(message.getGroupInfo().isPresent() && + message.getGroupInfo().get().getType() != SignalServiceGroup.Type.DELIVER)) { + List attachments = new ArrayList<>(); + if (message.getAttachments().isPresent()) { + for (SignalServiceAttachment attachment : message.getAttachments().get()) { + if (attachment.isPointer()) { + attachments.add(m.getAttachmentFile(attachment.asPointer().getId()).getAbsolutePath()); } } } - if (content.getSyncMessage().isPresent()) { - SignalServiceSyncMessage syncMessage = content.getSyncMessage().get(); - System.out.println("Received sync message"); + + try { + conn.sendSignal(new Signal.MessageReceived( + SIGNAL_OBJECTPATH, + message.getTimestamp(), + envelope.getSource(), + message.getGroupInfo().isPresent() ? message.getGroupInfo().get().getGroupId() : new byte[0], + message.getBody().isPresent() ? message.getBody().get() : "", + attachments)); + } catch (DBusException e) { + e.printStackTrace(); } } - } else { - System.out.println("Unknown message received."); } - System.out.println(); } private void printAttachment(SignalServiceAttachment attachment) {