Let users manually specify the domain fronting country.

// FREEBIE
pull/1/head
Matthew Chen 9 years ago
parent 98ff7e5aba
commit 58edbdfbd9

@ -1,5 +1,6 @@
// Created by Michael Kirk on 12/20/16.
// Copyright © 2016 Open Whisper Systems. All rights reserved.
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
NS_ASSUME_NONNULL_BEGIN
@ -7,9 +8,9 @@ NS_ASSUME_NONNULL_BEGIN
@interface OWSCensorshipConfiguration : NSObject
- (NSString *)frontingHost:(NSString *)e164PhonNumber;
- (NSString *)frontingHost:(NSString *)e164PhoneNumber;
- (NSString *)reflectorHost;
- (BOOL)isCensoredPhoneNumber:(NSString *)e164PhonNumber;
- (BOOL)isCensoredPhoneNumber:(NSString *)e164PhoneNumber;
@end

@ -11,13 +11,13 @@ NSString *const OWSCensorshipConfigurationReflectorHost = @"signal-reflector-mee
@implementation OWSCensorshipConfiguration
- (NSString *)frontingHost:(NSString *)e164PhonNumber
- (NSString *)frontingHost:(NSString *)e164PhoneNumber
{
OWSAssert(e164PhonNumber.length > 0);
OWSAssert(e164PhoneNumber.length > 0);
NSString *domain = nil;
for (NSString *countryCode in self.censoredCountryCodes) {
if ([e164PhonNumber hasPrefix:countryCode]) {
if ([e164PhoneNumber hasPrefix:countryCode]) {
domain = self.censoredCountryCodes[countryCode];
}
}
@ -60,10 +60,10 @@ NSString *const OWSCensorshipConfigurationReflectorHost = @"signal-reflector-mee
};
}
- (BOOL)isCensoredPhoneNumber:(NSString *)e164PhonNumber
- (BOOL)isCensoredPhoneNumber:(NSString *)e164PhoneNumber
{
for (NSString *countryCode in self.censoredCountryCodes) {
if ([e164PhonNumber hasPrefix:countryCode]) {
if ([e164PhoneNumber hasPrefix:countryCode]) {
return YES;
}
}

@ -25,6 +25,14 @@ extern NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidCha
- (BOOL)isCensorshipCircumventionManuallyActivated;
- (void)setIsCensorshipCircumventionManuallyActivated:(BOOL)value;
#pragma mark - Censorship Circumvention Domain
- (NSString *)manualCensorshipCircumventionDomain;
- (void)setManualCensorshipCircumventionDomain:(NSString *)value;
- (NSString *)manualCensorshipCircumventionCountryCode;
- (void)setManualCensorshipCircumventionCountryCode:(NSString *)value;
@end
NS_ASSUME_NONNULL_END

@ -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

Loading…
Cancel
Save