]> nmode's Git Repositories - signal-cli/commitdiff
Add unregister command
authorAsamK <asamk@gmx.de>
Sat, 18 Feb 2017 11:01:55 +0000 (12:01 +0100)
committerAsamK <asamk@gmx.de>
Sat, 18 Feb 2017 11:35:32 +0000 (12:35 +0100)
Fixes #57

man/signal-cli.1.txt
src/main/java/org/asamk/signal/Main.java
src/main/java/org/asamk/signal/Manager.java

index ddf855fd31bfc59e59d11e97083d03bcd253972e..79df4d18fc907ea7df6fb1ca3475be7ccb83db64 100644 (file)
@@ -66,6 +66,13 @@ Verify the number using the code received via SMS or voice.
 VERIFICATIONCODE::
        The verification code.
 
+unregister
+~~~~~~~~
+Disable push support for this device, i.e. this device won't receive any more messages.
+If this is the master device, other users can't send messages to this number anymore.
+Use "updateAccount" to undo this.
+To remove a linked device, use "removeDevice" from the master device.
+
 link
 ~~~~
 Link to an existing device, instead of registering a new number.  This shows a
index 633ef469ef353fbee0a509c6940b6c8a278fa576..ff590307d17f7aab23881b163f3959fb5e9b6af4 100644 (file)
@@ -138,6 +138,22 @@ public class Main {
                         return 3;
                     }
                     break;
+                case "unregister":
+                    if (dBusConn != null) {
+                        System.err.println("unregister is not yet implemented via dbus");
+                        return 1;
+                    }
+                    if (!m.isRegistered()) {
+                        System.err.println("User is not registered.");
+                        return 1;
+                    }
+                    try {
+                        m.unregister();
+                    } catch (IOException e) {
+                        System.err.println("Unregister error: " + e.getMessage());
+                        return 3;
+                    }
+                    break;
                 case "verify":
                     if (dBusConn != null) {
                         System.err.println("verify is not yet implemented via dbus");
@@ -679,6 +695,9 @@ public class Main {
                 .help("The verification should be done over voice, not sms.")
                 .action(Arguments.storeTrue());
 
+        Subparser parserUnregister = subparsers.addParser("unregister");
+        parserUnregister.help("Unregister the current device from the signal server.");
+
         Subparser parserVerify = subparsers.addParser("verify");
         parserVerify.addArgument("verificationCode")
                 .help("The verification code you received via sms or voice call.");
index ab1f1191d92a565833b155edc9bceaf8ef3ebbfc..a6dfcae5a7edf779c6421c209bc512c8c6432e98 100644 (file)
@@ -356,6 +356,13 @@ class Manager implements Signal {
         save();
     }
 
+    public void unregister() throws IOException {
+        // When setting an empty GCM id, the Signal-Server also sets the fetchesMessages property to false.
+        // If this is the master device, other users can't send messages to this number anymore.
+        // If this is a linked device, other users can still send messages, but this device doesn't receive them anymore.
+        accountManager.setGcmId(Optional.<String>absent());
+    }
+
     public URI getDeviceLinkUri() throws TimeoutException, IOException {
         password = Util.getSecret(18);