From 7115d45d08c68feb891a3f4446ef97a959bc11b0 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 18 Oct 2018 13:44:09 -0400 Subject: [PATCH] Changes for UD in production. --- .../src/Messages/UD/OWSUDManager.swift | 13 ++++-- .../src/Network/API/TSNetworkManager.m | 44 +++++++++++-------- SignalServiceKit/src/TSConstants.h | 34 +++++++------- 3 files changed, 52 insertions(+), 39 deletions(-) diff --git a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift index cb7dc7ce7..d85334f43 100644 --- a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift +++ b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift @@ -64,7 +64,8 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { // MARK: Local Configuration State private let kUDCollection = "kUDCollection" - private let kUDCurrentSenderCertificateKey = "kUDCurrentSenderCertificateKey" + private let kUDCurrentSenderCertificateKey_Production = "kUDCurrentSenderCertificateKey_Production" + private let kUDCurrentSenderCertificateKey_Staging = "kUDCurrentSenderCertificateKey_Staging" private let kUDUnrestrictedAccessKey = "kUDUnrestrictedAccessKey" // MARK: Recipient State @@ -201,7 +202,7 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { #endif private func senderCertificate() -> SMKSenderCertificate? { - guard let certificateData = dbConnection.object(forKey: kUDCurrentSenderCertificateKey, inCollection: kUDCollection) as? Data else { + guard let certificateData = dbConnection.object(forKey: senderCertificateKey(), inCollection: kUDCollection) as? Data else { return nil } @@ -221,7 +222,11 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { } func setSenderCertificate(_ certificateData: Data) { - dbConnection.setObject(certificateData, forKey: kUDCurrentSenderCertificateKey, inCollection: kUDCollection) + dbConnection.setObject(certificateData, forKey: senderCertificateKey(), inCollection: kUDCollection) + } + + private func senderCertificateKey() -> String { + return IsUsingProductionService() ? kUDCurrentSenderCertificateKey_Production : kUDCurrentSenderCertificateKey_Staging } @objc @@ -286,7 +291,7 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { @objc public func isUDEnabled() -> Bool { - return !IsUsingProductionService() + return true } @objc diff --git a/SignalServiceKit/src/Network/API/TSNetworkManager.m b/SignalServiceKit/src/Network/API/TSNetworkManager.m index 181c24820..324fa4f35 100644 --- a/SignalServiceKit/src/Network/API/TSNetworkManager.m +++ b/SignalServiceKit/src/Network/API/TSNetworkManager.m @@ -255,44 +255,52 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error); case 411: { OWSLogInfo( @"Multi-device pairing: %ld, %@, %@", (long)statusCode, networkError.debugDescription, request); - failureBlock(task, - [self errorWithHTTPCode:statusCode - description:NSLocalizedString(@"MULTIDEVICE_PAIRING_MAX_DESC", @"alert title: cannot link - reached max linked devices") - failureReason:networkError.localizedFailureReason - recoverySuggestion:NSLocalizedString(@"MULTIDEVICE_PAIRING_MAX_RECOVERY", @"alert body: cannot link - reached max linked devices") - fallbackError:networkError]); + NSError *customError = + [self errorWithHTTPCode:statusCode + description:NSLocalizedString(@"MULTIDEVICE_PAIRING_MAX_DESC", + @"alert title: cannot link - reached max linked devices") + failureReason:networkError.localizedFailureReason + recoverySuggestion:NSLocalizedString(@"MULTIDEVICE_PAIRING_MAX_RECOVERY", + @"alert body: cannot link - reached max linked devices") + fallbackError:networkError]; + error.isRetryable = NO; + failureBlock(task, error); break; } case 413: { OWSLogWarn(@"Rate limit exceeded: %@", request); - failureBlock(task, - [self errorWithHTTPCode:statusCode - description:NSLocalizedString(@"REGISTRATION_ERROR", nil) - failureReason:networkError.localizedFailureReason - recoverySuggestion:NSLocalizedString(@"REGISTER_RATE_LIMITING_BODY", nil) - fallbackError:networkError]); + NSError *customError = [self errorWithHTTPCode:statusCode + description:NSLocalizedString(@"REGISTRATION_ERROR", nil) + failureReason:networkError.localizedFailureReason + recoverySuggestion:NSLocalizedString(@"REGISTER_RATE_LIMITING_BODY", nil) + fallbackError:networkError]; + error.isRetryable = NO; + failureBlock(task, error); break; } case 417: { // TODO: Is this response code obsolete? OWSLogWarn(@"The number is already registered on a relay. Please unregister there first: %@", request); - failureBlock(task, - [self errorWithHTTPCode:statusCode - description:NSLocalizedString(@"REGISTRATION_ERROR", nil) - failureReason:networkError.localizedFailureReason - recoverySuggestion:NSLocalizedString(@"RELAY_REGISTERED_ERROR_RECOVERY", nil) - fallbackError:networkError]); + NSError *customError = [self errorWithHTTPCode:statusCode + description:NSLocalizedString(@"REGISTRATION_ERROR", nil) + failureReason:networkError.localizedFailureReason + recoverySuggestion:NSLocalizedString(@"RELAY_REGISTERED_ERROR_RECOVERY", nil) + fallbackError:networkError]; + customError.isRetryable = NO; + failureBlock(task, customError); break; } case 422: { OWSLogError(@"The registration was requested over an unknown transport: %@, %@", networkError.debugDescription, request); + error.isRetryable = NO; failureBlock(task, error); break; } default: { OWSLogWarn(@"Unknown error: %ld, %@, %@", (long)statusCode, networkError.debugDescription, request); + error.isRetryable = NO; failureBlock(task, error); break; } diff --git a/SignalServiceKit/src/TSConstants.h b/SignalServiceKit/src/TSConstants.h index 080671e8a..42c37ce35 100644 --- a/SignalServiceKit/src/TSConstants.h +++ b/SignalServiceKit/src/TSConstants.h @@ -24,27 +24,27 @@ typedef NS_ENUM(NSInteger, TSWhisperMessageType) { //#ifndef DEBUG // Production -//#define textSecureWebSocketAPI @"wss://textsecure-service.whispersystems.org/v1/websocket/" -//#define textSecureServerURL @"https://textsecure-service.whispersystems.org/" -//#define textSecureCDNServerURL @"https://cdn.signal.org" -//// Use same reflector for service and CDN -//#define textSecureServiceReflectorHost @"textsecure-service-reflected.whispersystems.org" -//#define textSecureCDNReflectorHost @"textsecure-service-reflected.whispersystems.org" -//#define contactDiscoveryURL @"https://api.directory.signal.org" -//// TODO: The production value is not yet known. -//#define kUDTrustRoot @"BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF" -//#define USING_PRODUCTION_SERVICE +#define textSecureWebSocketAPI @"wss://textsecure-service.whispersystems.org/v1/websocket/" +#define textSecureServerURL @"https://textsecure-service.whispersystems.org/" +#define textSecureCDNServerURL @"https://cdn.signal.org" +// Use same reflector for service and CDN +#define textSecureServiceReflectorHost @"textsecure-service-reflected.whispersystems.org" +#define textSecureCDNReflectorHost @"textsecure-service-reflected.whispersystems.org" +#define contactDiscoveryURL @"https://api.directory.signal.org" +// TODO: The production value is not yet known. +#define kUDTrustRoot @"BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF" +#define USING_PRODUCTION_SERVICE //#else // Staging -#define textSecureWebSocketAPI @"wss://textsecure-service-staging.whispersystems.org/v1/websocket/" -#define textSecureServerURL @"https://textsecure-service-staging.whispersystems.org/" -#define textSecureCDNServerURL @"https://cdn-staging.signal.org" -#define textSecureServiceReflectorHost @"meek-signal-service-staging.appspot.com"; -#define textSecureCDNReflectorHost @"meek-signal-cdn-staging.appspot.com"; -#define contactDiscoveryURL @"https://api-staging.directory.signal.org" -#define kUDTrustRoot @"BbqY1DzohE4NUZoVF+L18oUPrK3kILllLEJh2UnPSsEx" +//#define textSecureWebSocketAPI @"wss://textsecure-service-staging.whispersystems.org/v1/websocket/" +//#define textSecureServerURL @"https://textsecure-service-staging.whispersystems.org/" +//#define textSecureCDNServerURL @"https://cdn-staging.signal.org" +//#define textSecureServiceReflectorHost @"meek-signal-service-staging.appspot.com"; +//#define textSecureCDNReflectorHost @"meek-signal-cdn-staging.appspot.com"; +//#define contactDiscoveryURL @"https://api-staging.directory.signal.org" +//#define kUDTrustRoot @"BbqY1DzohE4NUZoVF+L18oUPrK3kILllLEJh2UnPSsEx" //#endif