]> nmode's Git Repositories - signal-cli/commitdiff
Update to libsignal 2.15.3_unofficial_2
authorAsamK <asamk@gmx.de>
Wed, 12 Feb 2020 19:36:23 +0000 (20:36 +0100)
committerAsamK <asamk@gmx.de>
Wed, 12 Feb 2020 19:36:23 +0000 (20:36 +0100)
build.gradle
src/main/java/org/asamk/signal/manager/BaseConfig.java
src/main/java/org/asamk/signal/manager/Manager.java
src/main/java/org/asamk/signal/manager/Utils.java
src/main/java/org/asamk/signal/storage/SignalAccount.java
src/main/java/org/asamk/signal/storage/contacts/ContactInfo.java
src/main/java/org/asamk/signal/storage/groups/GroupInfo.java

index a7312bb4122ed5aa50b26414be13c3e6aeb5e1f7..9d5b33a94dcee056449086865fea197f83c0fff9 100644 (file)
@@ -20,7 +20,7 @@ repositories {
 }
 
 dependencies {
-    compile 'com.github.turasa:signal-service-java:2.15.3_unofficial_1'
+    compile 'com.github.turasa:signal-service-java:2.15.3_unofficial_2'
     compile 'org.bouncycastle:bcprov-jdk15on:1.64'
     compile 'net.sourceforge.argparse4j:argparse4j:0.8.1'
     compile 'org.freedesktop.dbus:dbus-java:2.7.0'
index 0f503352426cff327fe7390f4dc2d681b0585866..f204941c7d8d3378b5a473da8ad92426dc2017bb 100644 (file)
@@ -3,15 +3,22 @@ package org.asamk.signal.manager;
 import org.whispersystems.signalservice.api.push.TrustStore;
 import org.whispersystems.signalservice.internal.configuration.SignalCdnUrl;
 import org.whispersystems.signalservice.internal.configuration.SignalContactDiscoveryUrl;
+import org.whispersystems.signalservice.internal.configuration.SignalKeyBackupServiceUrl;
 import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration;
 import org.whispersystems.signalservice.internal.configuration.SignalServiceUrl;
+import org.whispersystems.signalservice.internal.configuration.SignalStorageUrl;
+
+import java.util.Collections;
+import java.util.List;
+
+import okhttp3.Interceptor;
 
 public class BaseConfig {
 
     public final static String PROJECT_NAME = Manager.class.getPackage().getImplementationTitle();
     public final static String PROJECT_VERSION = Manager.class.getPackage().getImplementationVersion();
 
-    final static String USER_AGENT = PROJECT_NAME == null ? null : PROJECT_NAME + " " + PROJECT_VERSION;
+    final static String USER_AGENT = PROJECT_NAME == null ? "signal-cli" : PROJECT_NAME + " " + PROJECT_VERSION;
     final static String UNIDENTIFIED_SENDER_TRUST_ROOT = "BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF";
     final static int PREKEY_MINIMUM_COUNT = 20;
     final static int PREKEY_BATCH_SIZE = 100;
@@ -19,12 +26,24 @@ public class BaseConfig {
 
     private final static String URL = "https://textsecure-service.whispersystems.org";
     private final static String CDN_URL = "https://cdn.signal.org";
+    private final static String SIGNAL_KEY_BACKUP_URL = "https://api.backup.signal.org";
+    private final static String STORAGE_URL = "https://storage.signal.org";
     private final static TrustStore TRUST_STORE = new WhisperTrustStore();
 
+    private final static Interceptor userAgentInterceptor = chain ->
+            chain.proceed(chain.request().newBuilder()
+                    .header("User-Agent", USER_AGENT)
+                    .build());
+
+    private final static List<Interceptor> interceptors = Collections.singletonList(userAgentInterceptor);
+
     final static SignalServiceConfiguration serviceConfiguration = new SignalServiceConfiguration(
             new SignalServiceUrl[]{new SignalServiceUrl(URL, TRUST_STORE)},
             new SignalCdnUrl[]{new SignalCdnUrl(CDN_URL, TRUST_STORE)},
-            new SignalContactDiscoveryUrl[0]
+            new SignalContactDiscoveryUrl[0],
+            new SignalKeyBackupServiceUrl[]{new SignalKeyBackupServiceUrl(SIGNAL_KEY_BACKUP_URL, TRUST_STORE)},
+            new SignalStorageUrl[]{new SignalStorageUrl(STORAGE_URL, TRUST_STORE)},
+            interceptors
     );
 
     private BaseConfig() {
index 590610681b81d7409138d5f2ef4c75c26f2851bb..0847e4840290f738b7157ec61134c9dd9541cb93 100644 (file)
@@ -265,7 +265,7 @@ public class Manager implements Signal {
     }
 
     public void updateAccountAttributes() throws IOException {
-        accountManager.setAccountAttributes(account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, account.getRegistrationLockPin(), getSelfUnidentifiedAccessKey(), false);
+        accountManager.setAccountAttributes(account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, account.getRegistrationLockPin(), account.getRegistrationLock(), getSelfUnidentifiedAccessKey(), false);
     }
 
     public void setProfileName(String name) throws IOException {
@@ -396,7 +396,7 @@ public class Manager implements Signal {
         verificationCode = verificationCode.replace("-", "");
         account.setSignalingKey(KeyUtils.createSignalingKey());
         // TODO make unrestricted unidentified access configurable
-        accountManager.verifyAccountWithCode(verificationCode, account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, pin, getSelfUnidentifiedAccessKey(), false);
+        accountManager.verifyAccountWithCode(verificationCode, account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, pin, null, getSelfUnidentifiedAccessKey(), false);
 
         //accountManager.setGcmId(Optional.of(GoogleCloudMessaging.getInstance(this).register(REGISTRATION_ID)));
         account.setRegistered(true);
@@ -407,11 +407,12 @@ public class Manager implements Signal {
     }
 
     public void setRegistrationLockPin(Optional<String> pin) throws IOException {
-        accountManager.setPin(pin);
         if (pin.isPresent()) {
             account.setRegistrationLockPin(pin.get());
+            throw new RuntimeException("Not implemented anymore, will be replaced with KBS");
         } else {
             account.setRegistrationLockPin(null);
+            accountManager.removeV1Pin();
         }
         account.save();
     }
@@ -1319,6 +1320,8 @@ public class Manager implements Signal {
                                 if (g.getAvatar().isPresent()) {
                                     retrieveGroupAvatarAttachment(g.getAvatar().get(), syncGroup.groupId);
                                 }
+                                syncGroup.inboxPosition = g.getInboxPosition().orNull();
+                                syncGroup.archived = g.isArchived();
                                 account.getGroupStore().updateGroup(syncGroup);
                             }
                         }
@@ -1396,6 +1399,8 @@ public class Manager implements Signal {
                                     account.getThreadStore().updateThread(thread);
                                 }
                                 contact.blocked = c.isBlocked();
+                                contact.inboxPosition = c.getInboxPosition().orNull();
+                                contact.archived = c.isArchived();
                                 account.getContactStore().updateContact(contact);
 
                                 if (c.getAvatar().isPresent()) {
@@ -1523,7 +1528,7 @@ public class Manager implements Signal {
                     out.write(new DeviceGroup(record.groupId, Optional.fromNullable(record.name),
                             new ArrayList<>(record.getMembers()), createGroupAvatarAttachment(record.groupId),
                             record.active, Optional.fromNullable(info != null ? info.messageExpirationTime : null),
-                            Optional.fromNullable(record.color), record.blocked));
+                            Optional.fromNullable(record.color), record.blocked, Optional.fromNullable(record.inboxPosition), record.archived));
                 }
             }
 
@@ -1572,7 +1577,8 @@ public class Manager implements Signal {
                     out.write(new DeviceContact(record.getAddress(), Optional.fromNullable(record.name),
                             createContactAvatarAttachment(record.number), Optional.fromNullable(record.color),
                             Optional.fromNullable(verifiedMessage), Optional.fromNullable(profileKey), record.blocked,
-                            Optional.fromNullable(info != null ? info.messageExpirationTime : null)));
+                            Optional.fromNullable(info != null ? info.messageExpirationTime : null),
+                            Optional.fromNullable(record.inboxPosition), record.archived));
                 }
 
                 if (account.getProfileKey() != null) {
@@ -1581,7 +1587,7 @@ public class Manager implements Signal {
                             Optional.<String>absent(), Optional.<SignalServiceAttachmentStream>absent(),
                             Optional.<String>absent(), Optional.<VerifiedMessage>absent(),
                             Optional.of(account.getProfileKey()),
-                            false, Optional.<Integer>absent()));
+                            false, Optional.<Integer>absent(), Optional.<Integer>absent(), false));
                 }
             }
 
index b253a2ee45b7b7a42eb90392212dec9c8ea0a912..eccc1656bfc81dbde5d86ae0a1d21bf15cbaba95 100644 (file)
@@ -82,7 +82,7 @@ class Utils {
         Optional<byte[]> preview = Optional.absent();
         Optional<String> caption = Optional.absent();
         Optional<String> blurHash = Optional.absent();
-        return new SignalServiceAttachmentStream(attachmentStream, mime, attachmentSize, Optional.of(attachmentFile.getName()), false, preview, 0, 0, caption, blurHash, null);
+        return new SignalServiceAttachmentStream(attachmentStream, mime, attachmentSize, Optional.of(attachmentFile.getName()), false, preview, 0, 0, caption, blurHash, null, null);
     }
 
     static StreamDetails createStreamDetailsFromFile(File file) throws IOException {
index 1ba78f6b83796049cfbd2aa02f6bc150cd1b6a5a..151835cb6afb3ab810e41281ee4d7f63018d61e3 100644 (file)
@@ -291,6 +291,10 @@ public class SignalAccount {
         return registrationLockPin;
     }
 
+    public String getRegistrationLock() {
+        return null; // TODO implement KBS
+    }
+
     public void setRegistrationLockPin(final String registrationLockPin) {
         this.registrationLockPin = registrationLockPin;
     }
index be69b40c6ebc2d6aef1b55b5777d1a30e1bb3f89..2ab2a515e69299959fdb77e44aee178eaf9eb25a 100644 (file)
@@ -22,6 +22,12 @@ public class ContactInfo {
     @JsonProperty(defaultValue = "false")
     public boolean blocked;
 
+    @JsonProperty
+    public Integer inboxPosition;
+
+    @JsonProperty(defaultValue = "false")
+    public boolean archived;
+
     @JsonIgnore
     public SignalServiceAddress getAddress() {
         return new SignalServiceAddress(null, number);
index 1a4e0ec24997dc95d69f3bac1f85f878321c7b57..0387efac54c3fb4a840eb9ee654cfc43826058b9 100644 (file)
@@ -25,6 +25,10 @@ public class GroupInfo {
     public String color;
     @JsonProperty(defaultValue = "false")
     public boolean blocked;
+    @JsonProperty
+    public Integer inboxPosition;
+    @JsonProperty(defaultValue = "false")
+    public boolean archived;
 
     private long avatarId;