X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/804949ddea13e4201310b219bf9c1fd9f4a2fe56..139fc358a2b6abd8df602a3fb84c2212a0b96352:/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 45adf11f..57a25345 100644 --- a/src/main/java/org/asamk/signal/Main.java +++ b/src/main/java/org/asamk/signal/Main.java @@ -39,6 +39,7 @@ import org.freedesktop.dbus.exceptions.DBusExecutionException; import org.whispersystems.libsignal.InvalidKeyException; import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException; import org.whispersystems.signalservice.api.messages.*; +import org.whispersystems.signalservice.api.messages.calls.*; import org.whispersystems.signalservice.api.messages.multidevice.*; import org.whispersystems.signalservice.api.push.SignalServiceAddress; import org.whispersystems.signalservice.api.push.exceptions.EncapsulatedExceptions; @@ -720,7 +721,8 @@ public class Main { } private static Namespace parseArgs(String[] args) { - ArgumentParser parser = ArgumentParsers.newArgumentParser("signal-cli") + ArgumentParser parser = ArgumentParsers.newFor("signal-cli") + .build() .defaultHelp(true) .description("Commandline interface for Signal.") .version(Manager.PROJECT_NAME + " " + Manager.PROJECT_VERSION); @@ -1012,13 +1014,58 @@ public class Main { } if (syncMessage.getVerified().isPresent()) { System.out.println("Received sync message with verified identities:"); - final List verifiedList = syncMessage.getVerified().get(); - for (VerifiedMessage v : verifiedList) { - System.out.println(" - " + v.getDestination() + ": " + v.getVerified()); - String safetyNumber = formatSafetyNumber(m.computeSafetyNumber(v.getDestination(), v.getIdentityKey())); - System.out.println(" " + safetyNumber); + final VerifiedMessage verifiedMessage = syncMessage.getVerified().get(); + System.out.println(" - " + verifiedMessage.getDestination() + ": " + verifiedMessage.getVerified()); + String safetyNumber = formatSafetyNumber(m.computeSafetyNumber(verifiedMessage.getDestination(), verifiedMessage.getIdentityKey())); + System.out.println(" " + safetyNumber); + } + if (syncMessage.getConfiguration().isPresent()) { + System.out.println("Received sync message with configuration:"); + final ConfigurationMessage configurationMessage = syncMessage.getConfiguration().get(); + if (configurationMessage.getReadReceipts().isPresent()) { + System.out.println(" - Read receipts: " + (configurationMessage.getReadReceipts().get() ? "enabled" : "disabled")); } - + } + } + if (content.getCallMessage().isPresent()) { + System.out.println("Received a call message"); + SignalServiceCallMessage callMessage = content.getCallMessage().get(); + if (callMessage.getAnswerMessage().isPresent()) { + AnswerMessage answerMessage = callMessage.getAnswerMessage().get(); + System.out.println("Answer message: " + answerMessage.getId() + ": " + answerMessage.getDescription()); + } + if (callMessage.getBusyMessage().isPresent()) { + BusyMessage busyMessage = callMessage.getBusyMessage().get(); + System.out.println("Busy message: " + busyMessage.getId()); + } + if (callMessage.getHangupMessage().isPresent()) { + HangupMessage hangupMessage = callMessage.getHangupMessage().get(); + System.out.println("Hangup message: " + hangupMessage.getId()); + } + if (callMessage.getIceUpdateMessages().isPresent()) { + List iceUpdateMessages = callMessage.getIceUpdateMessages().get(); + for (IceUpdateMessage iceUpdateMessage : iceUpdateMessages) { + System.out.println("Ice update message: " + iceUpdateMessage.getId() + ", sdp: " + iceUpdateMessage.getSdp()); + } + } + if (callMessage.getOfferMessage().isPresent()) { + OfferMessage offerMessage = callMessage.getOfferMessage().get(); + System.out.println("Offer message: " + offerMessage.getId() + ": " + offerMessage.getDescription()); + } + } + if (content.getReceiptMessage().isPresent()) { + System.out.println("Received a receipt message"); + SignalServiceReceiptMessage receiptMessage = content.getReceiptMessage().get(); + System.out.println(" - When: " + formatTimestamp(receiptMessage.getWhen())); + if (receiptMessage.isDeliveryReceipt()) { + System.out.println(" - Is delivery receipt"); + } + if (receiptMessage.isReadReceipt()) { + System.out.println(" - Is read receipt"); + } + System.out.println(" - Timestamps:"); + for (long timestamp : receiptMessage.getTimestamps()) { + System.out.println(" " + formatTimestamp(timestamp)); } } } @@ -1068,6 +1115,9 @@ public class Main { if (message.getExpiresInSeconds() > 0) { System.out.println("Expires in: " + message.getExpiresInSeconds() + " seconds"); } + if (message.isProfileKeyUpdate() && message.getProfileKey().isPresent()) { + System.out.println("Profile key update, key length:" + message.getProfileKey().get().length); + } if (message.getAttachments().isPresent()) { System.out.println("Attachments: "); @@ -1085,6 +1135,7 @@ public class Main { System.out.println(" Filename: " + (pointer.getFileName().isPresent() ? pointer.getFileName().get() : "-")); System.out.println(" Size: " + (pointer.getSize().isPresent() ? pointer.getSize().get() + " bytes" : "") + (pointer.getPreview().isPresent() ? " (Preview is available: " + pointer.getPreview().get().length + " bytes)" : "")); System.out.println(" Voice note: " + (pointer.getVoiceNote() ? "yes" : "no")); + System.out.println(" Dimensions: " + pointer.getWidth() + "x" + pointer.getHeight()); File file = m.getAttachmentFile(pointer.getId()); if (file.exists()) { System.out.println(" Stored plaintext in: " + file);