From: AsamK Date: Sat, 16 Apr 2016 12:36:56 +0000 (+0200) Subject: Add method to list linked devices X-Git-Tag: v0.4.0~17 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/17ff7531d493266bca9c97fdf61290ead7262227 Add method to list linked devices --- diff --git a/src/main/java/org/asamk/signal/Main.java b/src/main/java/org/asamk/signal/Main.java index 9ffcb660..a6d36d0f 100644 --- a/src/main/java/org/asamk/signal/Main.java +++ b/src/main/java/org/asamk/signal/Main.java @@ -29,6 +29,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.multidevice.DeviceInfo; import org.whispersystems.signalservice.api.messages.multidevice.ReadMessage; import org.whispersystems.signalservice.api.messages.multidevice.SentTranscriptMessage; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; @@ -201,6 +202,28 @@ public class Main { System.exit(2); } break; + case "listDevices": + if (dBusConn != null) { + System.err.println("listDevices is not yet implemented via dbus"); + System.exit(1); + } + if (!m.isRegistered()) { + System.err.println("User is not registered."); + System.exit(1); + } + try { + List devices = m.getLinkedDevices(); + for (DeviceInfo d : devices) { + System.out.println("Device " + d.getId() + (d.getId() == m.getDeviceId() ? " (this device)" : "") + ":"); + System.out.println(" Name: " + d.getName()); + System.out.println(" Created: " + d.getCreated()); + System.out.println(" Last seen: " + d.getLastSeen()); + } + } catch (IOException e) { + e.printStackTrace(); + System.exit(3); + } + break; case "send": if (dBusConn == null && !m.isRegistered()) { System.err.println("User is not registered."); @@ -491,6 +514,8 @@ public class Main { .required(true) .help("Specify the uri contained in the QR code shown by the new device."); + Subparser parserDevices = subparsers.addParser("listDevices"); + Subparser parserRegister = subparsers.addParser("register"); parserRegister.addArgument("-v", "--voice") .help("The verification should be done over voice, not sms.") diff --git a/src/main/java/org/asamk/signal/Manager.java b/src/main/java/org/asamk/signal/Manager.java index a38eed5a..961be232 100644 --- a/src/main/java/org/asamk/signal/Manager.java +++ b/src/main/java/org/asamk/signal/Manager.java @@ -79,7 +79,7 @@ class Manager implements Signal { private final ObjectMapper jsonProcessot = new ObjectMapper(); private String username; - int deviceId = SignalServiceAddress.DEFAULT_DEVICE_ID; + private int deviceId = SignalServiceAddress.DEFAULT_DEVICE_ID; private String password; private String signalingKey; private int preKeyIdOffset; @@ -107,6 +107,10 @@ class Manager implements Signal { return username; } + public int getDeviceId() { + return deviceId; + } + public String getFileName() { new File(dataPath).mkdirs(); return dataPath + "/" + username; @@ -256,6 +260,9 @@ class Manager implements Signal { save(); } + public List getLinkedDevices() throws IOException { + return accountManager.getDevices(); + } public static Map getQueryMap(String query) { String[] params = query.split("&");