|
|
|
|
@ -4,16 +4,23 @@
|
|
|
|
|
|
|
|
|
|
#import <AFNetworking/AFHTTPSessionManager.h>
|
|
|
|
|
|
|
|
|
|
#import "OWSSignalService.h"
|
|
|
|
|
#import "OWSCensorshipConfiguration.h"
|
|
|
|
|
#import "OWSHTTPSecurityPolicy.h"
|
|
|
|
|
#import "TSConstants.h"
|
|
|
|
|
#import "OWSSignalService.h"
|
|
|
|
|
#import "TSAccountManager.h"
|
|
|
|
|
#import "TSConstants.h"
|
|
|
|
|
#import "TSStorageManager.h"
|
|
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
|
|
|
|
|
|
NSString *const kNSUserDefaults_isCensorshipCircumventionManuallyActivated =
|
|
|
|
|
@"kNSUserDefaults_isCensorshipCircumventionManuallyActivated";
|
|
|
|
|
NSString *const kTSStorageManager_OWSSignalService = @"kTSStorageManager_OWSSignalService";
|
|
|
|
|
NSString *const kTSStorageManager_isCensorshipCircumventionManuallyActivated =
|
|
|
|
|
@"kTSStorageManager_isCensorshipCircumventionManuallyActivated";
|
|
|
|
|
NSString *const kTSStorageManager_ManualCensorshipCircumventionDomain =
|
|
|
|
|
@"kTSStorageManager_ManualCensorshipCircumventionDomain";
|
|
|
|
|
NSString *const kTSStorageManager_ManualCensorshipCircumventionCountryCode =
|
|
|
|
|
@"kTSStorageManager_ManualCensorshipCircumventionCountryCode";
|
|
|
|
|
|
|
|
|
|
NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange =
|
|
|
|
|
@"kNSNotificationName_IsCensorshipCircumventionActiveDidChange";
|
|
|
|
|
|
|
|
|
|
@ -97,19 +104,17 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange =
|
|
|
|
|
|
|
|
|
|
- (BOOL)isCensorshipCircumventionManuallyActivated
|
|
|
|
|
{
|
|
|
|
|
OWSAssert([NSThread isMainThread]);
|
|
|
|
|
|
|
|
|
|
return [[NSUserDefaults.standardUserDefaults
|
|
|
|
|
objectForKey:kNSUserDefaults_isCensorshipCircumventionManuallyActivated] boolValue];
|
|
|
|
|
return [[TSStorageManager sharedManager] boolForKey:kTSStorageManager_isCensorshipCircumventionManuallyActivated
|
|
|
|
|
inCollection:kTSStorageManager_OWSSignalService];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)setIsCensorshipCircumventionManuallyActivated:(BOOL)value
|
|
|
|
|
{
|
|
|
|
|
OWSAssert([NSThread isMainThread]);
|
|
|
|
|
|
|
|
|
|
[NSUserDefaults.standardUserDefaults setObject:@(value)
|
|
|
|
|
forKey:kNSUserDefaults_isCensorshipCircumventionManuallyActivated];
|
|
|
|
|
[NSUserDefaults.standardUserDefaults synchronize];
|
|
|
|
|
[[TSStorageManager sharedManager] setObject:@(value)
|
|
|
|
|
forKey:kTSStorageManager_isCensorshipCircumventionManuallyActivated
|
|
|
|
|
inCollection:kTSStorageManager_OWSSignalService];
|
|
|
|
|
|
|
|
|
|
[self updateIsCensorshipCircumventionActive];
|
|
|
|
|
}
|
|
|
|
|
@ -180,6 +185,11 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange =
|
|
|
|
|
OWSAssert(localNumber.length > 0);
|
|
|
|
|
|
|
|
|
|
// Target fronting domain
|
|
|
|
|
OWSAssert(self.isCensorshipCircumventionActive);
|
|
|
|
|
NSString *frontingHost = [self.censorshipConfiguration frontingHost:localNumber];
|
|
|
|
|
if (self.isCensorshipCircumventionManuallyActivated && self.manualCensorshipCircumventionDomain.length > 0) {
|
|
|
|
|
frontingHost = self.manualCensorshipCircumventionDomain;
|
|
|
|
|
};
|
|
|
|
|
NSURL *baseURL = [[NSURL alloc] initWithString:[self.censorshipConfiguration frontingHost:localNumber]];
|
|
|
|
|
NSURLSessionConfiguration *sessionConf = NSURLSessionConfiguration.ephemeralSessionConfiguration;
|
|
|
|
|
AFHTTPSessionManager *sessionManager =
|
|
|
|
|
@ -247,6 +257,40 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange =
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#pragma mark - Manual Censorship Circumvention
|
|
|
|
|
|
|
|
|
|
- (NSString *)manualCensorshipCircumventionDomain
|
|
|
|
|
{
|
|
|
|
|
return [[TSStorageManager sharedManager] objectForKey:kTSStorageManager_ManualCensorshipCircumventionDomain
|
|
|
|
|
inCollection:kTSStorageManager_OWSSignalService];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)setManualCensorshipCircumventionDomain:(NSString *)value
|
|
|
|
|
{
|
|
|
|
|
OWSAssert([NSThread isMainThread]);
|
|
|
|
|
|
|
|
|
|
[[TSStorageManager sharedManager] setObject:value
|
|
|
|
|
forKey:kTSStorageManager_ManualCensorshipCircumventionDomain
|
|
|
|
|
inCollection:kTSStorageManager_OWSSignalService];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (NSString *)manualCensorshipCircumventionCountryCode
|
|
|
|
|
{
|
|
|
|
|
OWSAssert([NSThread isMainThread]);
|
|
|
|
|
|
|
|
|
|
return [[TSStorageManager sharedManager] objectForKey:kTSStorageManager_ManualCensorshipCircumventionCountryCode
|
|
|
|
|
inCollection:kTSStorageManager_OWSSignalService];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)setManualCensorshipCircumventionCountryCode:(NSString *)value
|
|
|
|
|
{
|
|
|
|
|
OWSAssert([NSThread isMainThread]);
|
|
|
|
|
|
|
|
|
|
[[TSStorageManager sharedManager] setObject:value
|
|
|
|
|
forKey:kTSStorageManager_ManualCensorshipCircumventionCountryCode
|
|
|
|
|
inCollection:kTSStorageManager_OWSSignalService];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#pragma mark - Logging
|
|
|
|
|
|
|
|
|
|
+ (NSString *)tag
|
|
|
|
|
|