mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-27 16:09:20 +00:00
Add synchronous NSURLConnection with delegate
Add ssl check
This commit is contained in:
parent
8cdd223595
commit
cf0bd4557e
14 changed files with 540 additions and 72 deletions
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
@end
|
||||
|
||||
@interface BuschJaegerConfiguration : NSObject {
|
||||
@interface BuschJaegerConfiguration : NSObject<NSURLConnectionDelegate> {
|
||||
}
|
||||
|
||||
typedef enum _BuschJaegerConfigurationRequestType{
|
||||
|
|
@ -45,6 +45,7 @@ typedef enum _BuschJaegerConfigurationRequestType{
|
|||
@property (readonly) NSMutableSet *outdoorStations;
|
||||
@property (readonly) Network *network;
|
||||
@property (readonly) LevelPushButton *levelPushButton;
|
||||
@property (readonly) CFArrayRef certificates;
|
||||
|
||||
- (void)reset;
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#import "BuschJaegerConfiguration.h"
|
||||
#import "LinphoneManager.h"
|
||||
#import "Utils.h"
|
||||
#import "NSURLConnection+SynchronousDelegate.h"
|
||||
|
||||
@implementation BuschJaegerConfiguration
|
||||
|
||||
|
|
@ -28,6 +29,7 @@
|
|||
@synthesize network;
|
||||
@synthesize history;
|
||||
@synthesize levelPushButton;
|
||||
@synthesize certificates;
|
||||
|
||||
/********
|
||||
[outdoorstation_0]
|
||||
|
|
@ -94,6 +96,8 @@
|
|||
history = [[NSMutableSet alloc] init];
|
||||
network = [[Network alloc] init];
|
||||
levelPushButton = [[LevelPushButton alloc] init];
|
||||
certificates = NULL;
|
||||
[self reloadCertificates];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
|
@ -104,6 +108,9 @@
|
|||
[history release];
|
||||
[network release];
|
||||
[levelPushButton release];
|
||||
if(certificates != NULL) {
|
||||
CFRelease(certificates);
|
||||
}
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
|
@ -172,6 +179,7 @@
|
|||
last_section = subStr;
|
||||
last_index = i + 1;
|
||||
} else {
|
||||
[self reset];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationError:NSLocalizedString(@"Invalid configuration file", nil)];
|
||||
});
|
||||
|
|
@ -187,6 +195,84 @@
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL)downloadCertificates:(id<BuschJaegerConfigurationDelegate>)delegate {
|
||||
if(network.tlsCertificate && [network.tlsCertificate length] > 0) {
|
||||
NSURL *url = [NSURL URLWithString:network.tlsCertificate];
|
||||
if(url != nil) {
|
||||
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:5];
|
||||
if(request != nil) {
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) {
|
||||
NSURLResponse *response = nil;
|
||||
NSError *error = nil;
|
||||
NSData *data = nil;
|
||||
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error delegate:self];
|
||||
if(data == nil) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationError:[error localizedDescription]];
|
||||
});
|
||||
} else {
|
||||
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse*) response;
|
||||
if(urlResponse.statusCode == 200) {
|
||||
if([data writeToFile:[LinphoneManager documentFile:kLinphonePEMPath] atomically:TRUE]) {
|
||||
[self reloadCertificates];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationSuccess];
|
||||
});
|
||||
} else {
|
||||
[self reset];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationError:NSLocalizedString(@"Unknown issue when saving configuration", nil)];
|
||||
});
|
||||
}
|
||||
} else {
|
||||
[self reset];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationError:[NSString stringWithFormat:@"Request not succeed (Status code:%d)", urlResponse.statusCode]];
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
return TRUE;
|
||||
}
|
||||
} else {
|
||||
[self reset];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationError:NSLocalizedString(@"Invalid configuration file", nil)];
|
||||
});
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
- (void)unloadCertificates {
|
||||
}
|
||||
|
||||
- (void)reloadCertificates {
|
||||
[self unloadCertificates];
|
||||
[self loadCertificates];
|
||||
}
|
||||
|
||||
- (void)loadCertificates {
|
||||
|
||||
if(certificates != NULL) {
|
||||
CFRelease(certificates);
|
||||
certificates = NULL;
|
||||
}
|
||||
NSData *data = [NSData dataWithContentsOfFile:[LinphoneManager documentFile:kLinphonePEMPath]];
|
||||
if(data != NULL) {
|
||||
SecCertificateRef rootcert = SecCertificateCreateWithData(kCFAllocatorDefault, (CFDataRef)data);
|
||||
if(rootcert) {
|
||||
const void *certs[] = { rootcert };
|
||||
certificates = CFArrayCreate(NULL, (const void**)certs, sizeof(certs) / sizeof(certs[0]), &kCFTypeArrayCallBacks);
|
||||
[LinphoneLogger log:LinphoneLoggerLog format:@"Certificates loaded"];
|
||||
} else {
|
||||
[LinphoneLogger log:LinphoneLoggerError format:@"Can't load certificates"];
|
||||
}
|
||||
} else {
|
||||
[LinphoneLogger log:LinphoneLoggerError format:@"Certificates file doesn't exist"];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)reset {
|
||||
[history removeAllObjects];
|
||||
[outdoorStations removeAllObjects];
|
||||
|
|
@ -212,9 +298,7 @@
|
|||
[data appendString:[network write]];
|
||||
[data appendString:[levelPushButton write]];
|
||||
|
||||
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
NSString *documentsPath = [paths objectAtIndex:0];
|
||||
NSString *databaseDocumentPath = [documentsPath stringByAppendingPathComponent:file];
|
||||
NSString *databaseDocumentPath = [LinphoneManager documentFile:file];
|
||||
|
||||
NSError *error;
|
||||
if(![data writeToFile:databaseDocumentPath atomically:FALSE encoding:NSUTF8StringEncoding error:&error]) {
|
||||
|
|
@ -228,9 +312,7 @@
|
|||
[self reset];
|
||||
|
||||
NSFileManager *fileManager = [NSFileManager defaultManager];
|
||||
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
NSString *documentsPath = [paths objectAtIndex:0];
|
||||
NSString *databaseDocumentPath = [documentsPath stringByAppendingPathComponent:file];
|
||||
NSString *databaseDocumentPath = [LinphoneManager documentFile:file];
|
||||
if ([fileManager fileExistsAtPath:databaseDocumentPath] == NO) {
|
||||
[LinphoneLogger log:LinphoneLoggerError format:@"BuschJaeger ini file doesn't exist: %@", file];
|
||||
return FALSE;
|
||||
|
|
@ -241,7 +323,7 @@
|
|||
[LinphoneLogger log:LinphoneLoggerError format:@"Can't read BuschJaeger ini file: %@", [error localizedDescription]];
|
||||
return FALSE;
|
||||
}
|
||||
return [self parseConfig:data delegate:nil];;
|
||||
return [self parseConfig:data delegate:nil];
|
||||
}
|
||||
|
||||
- (BOOL)parseQRCode:(NSString*)data delegate:(id<BuschJaegerConfigurationDelegate>)delegate {
|
||||
|
|
@ -257,7 +339,7 @@
|
|||
NSURLResponse *response = nil;
|
||||
NSError *error = nil;
|
||||
NSData *data = nil;
|
||||
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
|
||||
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error delegate:self];
|
||||
if(data == nil) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationError:[error localizedDescription]];
|
||||
|
|
@ -270,11 +352,14 @@
|
|||
[[NSUserDefaults standardUserDefaults] setObject:network.domain forKey:@"domain_preference"];
|
||||
[[NSUserDefaults standardUserDefaults] setObject:passwordString forKey:@"password_preference"];
|
||||
[[LinphoneManager instance] reconfigureLinphone];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationSuccess];
|
||||
});
|
||||
if(![self downloadCertificates:delegate]) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationSuccess];
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
[self reset];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationError:[NSString stringWithFormat:@"Request not succeed (Status code:%d)", urlResponse.statusCode]];
|
||||
});
|
||||
|
|
@ -296,7 +381,7 @@
|
|||
NSURLResponse *response = nil;
|
||||
NSError *error = nil;
|
||||
NSData *data = nil;
|
||||
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
|
||||
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error delegate:self];
|
||||
if(data == nil) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationError:[error localizedDescription]];
|
||||
|
|
@ -331,7 +416,7 @@
|
|||
NSURLResponse *response = nil;
|
||||
NSError *error = nil;
|
||||
NSData *data = nil;
|
||||
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
|
||||
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error delegate:self];
|
||||
if(data == nil) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[delegate buschJaegerConfigurationError:[error localizedDescription]];
|
||||
|
|
@ -383,4 +468,33 @@
|
|||
return nil;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - NSURLConnectionDelegate Function
|
||||
|
||||
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
|
||||
return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
|
||||
}
|
||||
|
||||
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
|
||||
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
|
||||
SecTrustRef trust = [challenge.protectionSpace serverTrust];
|
||||
NSArray *anchors = (NSArray*)certificates;
|
||||
SecTrustSetAnchorCertificates(trust, (CFArrayRef)anchors);
|
||||
SecTrustSetAnchorCertificatesOnly(trust, YES);
|
||||
|
||||
SecTrustResultType result = kSecTrustResultInvalid;
|
||||
OSStatus sanityChesk = SecTrustEvaluate(trust, &result);
|
||||
|
||||
if (sanityChesk == noErr) {
|
||||
if(result == kSecTrustResultConfirm || result == kSecTrustResultProceed || result == kSecTrustResultUnspecified) {
|
||||
[[challenge sender] useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
|
||||
return;
|
||||
}
|
||||
}
|
||||
[challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
|
||||
} else {
|
||||
[challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@
|
|||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="IBUIActivityIndicatorView" id="294663888">
|
||||
<reference key="NSNextResponder" ref="664811608"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">301</int>
|
||||
<string key="NSFrame">{{142, 211}, {37, 37}}</string>
|
||||
<reference key="NSSuperview" ref="664811608"/>
|
||||
<reference key="NSWindow"/>
|
||||
|
|
|
|||
|
|
@ -25,11 +25,15 @@
|
|||
#import "BuschJaegerHistoryView.h"
|
||||
#import "BuschJaegerHistoryDetailsView.h"
|
||||
|
||||
@interface UINavigationControllerEx : UINavigationController
|
||||
|
||||
@end
|
||||
|
||||
@interface BuschJaegerMainView : UIViewController {
|
||||
|
||||
}
|
||||
|
||||
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
|
||||
@property (nonatomic, retain) IBOutlet UINavigationControllerEx *navigationController;
|
||||
@property (nonatomic, retain) IBOutlet BuschJaegerCallView *callView;
|
||||
@property (nonatomic, retain) IBOutlet BuschJaegerSettingsView *settingsView;
|
||||
@property (nonatomic, retain) IBOutlet BuschJaegerWelcomeView *welcomeView;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,42 @@
|
|||
|
||||
#import "BuschJaegerMainView.h"
|
||||
|
||||
@implementation UINavigationControllerEx
|
||||
|
||||
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
|
||||
[viewController view];
|
||||
UIViewController *oldTopViewController = self.topViewController;
|
||||
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) {
|
||||
[oldTopViewController viewWillDisappear:animated];
|
||||
}
|
||||
[viewController viewWillAppear:animated];
|
||||
[super pushViewController:viewController animated:animated];
|
||||
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) {
|
||||
[self.topViewController viewDidAppear:animated];
|
||||
[oldTopViewController viewDidDisappear:animated];
|
||||
}
|
||||
}
|
||||
|
||||
- (UIViewController *)popViewControllerAnimated:(BOOL)animated {
|
||||
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) {
|
||||
[self.topViewController viewWillDisappear:animated];
|
||||
UIViewController *nextView = nil;
|
||||
int count = [self.viewControllers count];
|
||||
if(count > 1) {
|
||||
nextView = [self.viewControllers objectAtIndex:count - 2];
|
||||
}
|
||||
[nextView viewWillAppear:animated];
|
||||
}
|
||||
UIViewController * ret = [super popViewControllerAnimated:animated];
|
||||
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) {
|
||||
[ret viewDidDisappear:animated];
|
||||
[self.topViewController viewDidAppear:animated];
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation BuschJaegerMainView
|
||||
|
||||
@synthesize navigationController;
|
||||
|
|
@ -31,6 +67,7 @@
|
|||
static BuschJaegerMainView* mainViewInstance=nil;
|
||||
|
||||
|
||||
|
||||
#pragma mark - Lifecycle Functions
|
||||
|
||||
- (void)initBuschJaegerMainView {
|
||||
|
|
@ -87,7 +124,7 @@ static BuschJaegerMainView* mainViewInstance=nil;
|
|||
UIView *view = navigationController.view;
|
||||
[view setFrame:[self.view bounds]];
|
||||
[self.view addSubview:view];
|
||||
[navigationController setViewControllers:[NSArray arrayWithObject:welcomeView]];
|
||||
[navigationController pushViewController:welcomeView animated:FALSE];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
|
|
@ -120,6 +157,10 @@ static BuschJaegerMainView* mainViewInstance=nil;
|
|||
object:nil];
|
||||
}
|
||||
|
||||
- (NSUInteger)supportedInterfaceOrientations {
|
||||
return UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskPortrait;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - Event Functions
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1296</int>
|
||||
<int key="IBDocument.SystemTarget">1536</int>
|
||||
<string key="IBDocument.SystemVersion">11E53</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2549</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2840</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.47</string>
|
||||
<string key="IBDocument.HIToolboxVersion">569.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">1498</string>
|
||||
<string key="NS.object.0">1926</string>
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>IBProxyObject</string>
|
||||
|
|
@ -280,6 +280,7 @@
|
|||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="10.CustomClassName">BuschJaegerCallView</string>
|
||||
<string key="10.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="16.CustomClassName">UINavigationControllerEx</string>
|
||||
<string key="16.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="17.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="18.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
|
|
@ -306,12 +307,12 @@
|
|||
<string key="className">BuschJaegerCallView</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<dictionary class="NSMutableDictionary" key="actions">
|
||||
<string key="startCall:">id</string>
|
||||
<string key="onSnapshotClick:">id</string>
|
||||
<string key="takeCall:">id</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||
<object class="IBActionInfo" key="startCall:">
|
||||
<string key="name">startCall:</string>
|
||||
<object class="IBActionInfo" key="onSnapshotClick:">
|
||||
<string key="name">onSnapshotClick:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="takeCall:">
|
||||
|
|
@ -327,7 +328,7 @@
|
|||
<string key="lightsButton">UIDigitButton</string>
|
||||
<string key="microButton">UIToggleButton</string>
|
||||
<string key="openDoorButton">UIDigitButton</string>
|
||||
<string key="startCallButton">UIButton</string>
|
||||
<string key="snapshotButton">UIButton</string>
|
||||
<string key="takeCallButton">UIButton</string>
|
||||
<string key="videoView">UIView</string>
|
||||
</dictionary>
|
||||
|
|
@ -360,8 +361,8 @@
|
|||
<string key="name">openDoorButton</string>
|
||||
<string key="candidateClassName">UIDigitButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="startCallButton">
|
||||
<string key="name">startCallButton</string>
|
||||
<object class="IBToOneOutletInfo" key="snapshotButton">
|
||||
<string key="name">snapshotButton</string>
|
||||
<string key="candidateClassName">UIButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="takeCallButton">
|
||||
|
|
@ -381,17 +382,79 @@
|
|||
<object class="IBPartialClassDescription">
|
||||
<string key="className">BuschJaegerHistoryDetailsView</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">tableViewController</string>
|
||||
<string key="NS.object.0">UITableViewController</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">tableViewController</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">tableViewController</string>
|
||||
<dictionary class="NSMutableDictionary" key="actions">
|
||||
<string key="hideImage:">id</string>
|
||||
<string key="nextImage:">id</string>
|
||||
<string key="onBackClick:">id</string>
|
||||
<string key="onDeleteClick:">id</string>
|
||||
<string key="previousImage:">id</string>
|
||||
<string key="saveImage:">id</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||
<object class="IBActionInfo" key="hideImage:">
|
||||
<string key="name">hideImage:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="nextImage:">
|
||||
<string key="name">nextImage:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="onBackClick:">
|
||||
<string key="name">onBackClick:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="onDeleteClick:">
|
||||
<string key="name">onDeleteClick:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="previousImage:">
|
||||
<string key="name">previousImage:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="saveImage:">
|
||||
<string key="name">saveImage:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="backButton">UIView</string>
|
||||
<string key="dateLabel">UILabel</string>
|
||||
<string key="fullscreenView">UIView</string>
|
||||
<string key="imageView">UIRemoteImageView</string>
|
||||
<string key="saveButton">UIButton</string>
|
||||
<string key="stationLabel">UILabel</string>
|
||||
<string key="tableController">UITableViewController</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<object class="IBToOneOutletInfo" key="backButton">
|
||||
<string key="name">backButton</string>
|
||||
<string key="candidateClassName">UIView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="dateLabel">
|
||||
<string key="name">dateLabel</string>
|
||||
<string key="candidateClassName">UILabel</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="fullscreenView">
|
||||
<string key="name">fullscreenView</string>
|
||||
<string key="candidateClassName">UIView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="imageView">
|
||||
<string key="name">imageView</string>
|
||||
<string key="candidateClassName">UIRemoteImageView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="saveButton">
|
||||
<string key="name">saveButton</string>
|
||||
<string key="candidateClassName">UIButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="stationLabel">
|
||||
<string key="name">stationLabel</string>
|
||||
<string key="candidateClassName">UILabel</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="tableController">
|
||||
<string key="name">tableController</string>
|
||||
<string key="candidateClassName">UITableViewController</string>
|
||||
</object>
|
||||
</object>
|
||||
</dictionary>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/BuschJaegerHistoryDetailsView.h</string>
|
||||
|
|
@ -400,6 +463,17 @@
|
|||
<object class="IBPartialClassDescription">
|
||||
<string key="className">BuschJaegerHistoryTableViewController</string>
|
||||
<string key="superclassName">UITableViewController</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">waitView</string>
|
||||
<string key="NS.object.0">UIView</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">waitView</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">waitView</string>
|
||||
<string key="candidateClassName">UIView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/BuschJaegerHistoryTableViewController.h</string>
|
||||
|
|
@ -450,7 +524,7 @@
|
|||
<string key="callView">BuschJaegerCallView</string>
|
||||
<string key="historyDetailsView">BuschJaegerHistoryDetailsView</string>
|
||||
<string key="historyView">BuschJaegerHistoryView</string>
|
||||
<string key="navigationController">UINavigationController</string>
|
||||
<string key="navigationController">UINavigationControllerEx</string>
|
||||
<string key="settingsView">BuschJaegerSettingsView</string>
|
||||
<string key="welcomeView">BuschJaegerWelcomeView</string>
|
||||
</dictionary>
|
||||
|
|
@ -469,7 +543,7 @@
|
|||
</object>
|
||||
<object class="IBToOneOutletInfo" key="navigationController">
|
||||
<string key="name">navigationController</string>
|
||||
<string key="candidateClassName">UINavigationController</string>
|
||||
<string key="candidateClassName">UINavigationControllerEx</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="settingsView">
|
||||
<string key="name">settingsView</string>
|
||||
|
|
@ -610,6 +684,22 @@
|
|||
<string key="minorKey">./Classes/UILongTouchButton.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UINavigationControllerEx</string>
|
||||
<string key="superclassName">UINavigationController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/UINavigationControllerEx.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIRemoteImageView</string>
|
||||
<string key="superclassName">UIImageView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/UIRemoteImageView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIToggleButton</string>
|
||||
<string key="superclassName">UIButton</string>
|
||||
|
|
@ -624,10 +714,10 @@
|
|||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<real value="1296" key="NS.object.0"/>
|
||||
<real value="1536" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">1498</string>
|
||||
<string key="IBCocoaTouchPluginVersion">1926</string>
|
||||
</data>
|
||||
</archive>
|
||||
|
|
|
|||
|
|
@ -184,11 +184,11 @@
|
|||
</object>
|
||||
<object class="IBUIView" id="508446153">
|
||||
<reference key="NSNextResponder" ref="823940774"/>
|
||||
<int key="NSvFlags">306</int>
|
||||
<int key="NSvFlags">274</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="IBUIActivityIndicatorView" id="759552209">
|
||||
<reference key="NSNextResponder" ref="508446153"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">301</int>
|
||||
<string key="NSFrame">{{142, 211}, {37, 37}}</string>
|
||||
<reference key="NSSuperview" ref="508446153"/>
|
||||
<reference key="NSWindow"/>
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@
|
|||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
[self updateConfiguration:[LinphoneManager instance].configuration];
|
||||
[tableController.view setBackgroundColor:[UIColor clearColor]];
|
||||
}
|
||||
|
||||
|
|
@ -56,9 +55,10 @@
|
|||
selector:@selector(configurationUpdateEvent:)
|
||||
name:kLinphoneConfigurationUpdate
|
||||
object:nil];
|
||||
[self updateConfiguration:[LinphoneManager instance].configuration];
|
||||
}
|
||||
|
||||
- (void)vieWillDisappear:(BOOL)animated{
|
||||
- (void)viewWillDisappear:(BOOL)animated{
|
||||
[super viewWillDisappear:animated];
|
||||
|
||||
// Remove observer
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
@property (copy) NSString* globalAddress;
|
||||
@property (copy) NSString* localHistory;
|
||||
@property (copy) NSString* globalHistory;
|
||||
@property (copy) NSString* tlsCertificate;
|
||||
|
||||
- (NSString*)write;
|
||||
+ (id)parse:(NSString*)section array:(NSArray*)array;
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
@synthesize globalAddress;
|
||||
@synthesize localHistory;
|
||||
@synthesize globalHistory;
|
||||
|
||||
@synthesize tlsCertificate;
|
||||
/*
|
||||
domain=abb
|
||||
|
||||
|
|
@ -39,6 +39,8 @@
|
|||
local-history=http://192.168.1.1:8080/history.ini
|
||||
|
||||
global-history=http://welcome.dyndns.org:8080/history.ini
|
||||
|
||||
tls-certificate=http://192.168.1.1:8080/cert.pem
|
||||
*/
|
||||
|
||||
- (void)dealloc {
|
||||
|
|
@ -47,6 +49,7 @@
|
|||
[globalAddress release];
|
||||
[localHistory release];
|
||||
[globalHistory release];
|
||||
[tlsCertificate release];
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
|
@ -59,6 +62,7 @@
|
|||
[str appendString:[NSString stringWithFormat:@"global-address=%@\n", globalAddress]];
|
||||
[str appendString:[NSString stringWithFormat:@"local-history=%@\n", localHistory]];
|
||||
[str appendString:[NSString stringWithFormat:@"global-history=%@\n", globalHistory]];
|
||||
[str appendString:[NSString stringWithFormat:@"tls-certificate=%@\n", tlsCertificate]];
|
||||
return str;
|
||||
}
|
||||
|
||||
|
|
@ -79,6 +83,8 @@
|
|||
net.localHistory = param;
|
||||
} else if((param = [BuschJaegerConfiguration getRegexValue:@"^global-history=(.*)$" data:entry]) != nil) {
|
||||
net.globalHistory = param;
|
||||
} else if((param = [BuschJaegerConfiguration getRegexValue:@"^tls-certificate=(.*)$" data:entry]) != nil) {
|
||||
net.tlsCertificate = param;
|
||||
} else if([[entry stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0){
|
||||
[LinphoneLogger log:LinphoneLoggerWarning format:@"Unknown entry in %@ section: %@", section, entry];
|
||||
}
|
||||
|
|
|
|||
26
Classes/Utils/NSURLConnection+SynchronousDelegate.h
Normal file
26
Classes/Utils/NSURLConnection+SynchronousDelegate.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
/* NSURLConnection+SynchronousDelegate.h
|
||||
*
|
||||
* Copyright (C) 2012 Belledonne Comunications, Grenoble, France
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface NSURLConnection (SynchronousDelegate)
|
||||
|
||||
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error delegate:(id) delegate;
|
||||
|
||||
@end
|
||||
177
Classes/Utils/NSURLConnection+SynchronousDelegate.m
Normal file
177
Classes/Utils/NSURLConnection+SynchronousDelegate.m
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
/* NSURLConnection+SynchronousDelegate.m
|
||||
*
|
||||
* Copyright (C) 2012 Belledonne Comunications, Grenoble, France
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#import "NSURLConnection+SynchronousDelegate.h"
|
||||
|
||||
@interface NSURLConnectionSynchronousDelegate : NSObject<NSURLConnectionDelegate, NSURLConnectionDataDelegate> {
|
||||
@private
|
||||
id _delegate;
|
||||
dispatch_group_t _group;
|
||||
}
|
||||
|
||||
@property (readonly) NSMutableData *data;
|
||||
@property (readonly) NSError *error;
|
||||
@property (readonly) NSURLResponse *response;
|
||||
|
||||
- (id)initWithDelegate:(id)delagate group:(dispatch_group_t)group;
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSURLConnectionSynchronousDelegate
|
||||
|
||||
@synthesize data;
|
||||
@synthesize error;
|
||||
@synthesize response;
|
||||
|
||||
- (id)initWithDelegate:(id)delagate group:(dispatch_group_t)group{
|
||||
self = [super init];
|
||||
if(self) {
|
||||
self->_delegate = [delagate retain];
|
||||
self->_group = group;
|
||||
self->data = nil;
|
||||
self->error = nil;
|
||||
self->response = nil;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[_delegate release];
|
||||
[data release];
|
||||
[error release];
|
||||
[response release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)aerror {
|
||||
error = [aerror retain];
|
||||
if([_delegate respondsToSelector:@selector(connection:didFailWithError:)]) {
|
||||
[_delegate connection:connection didFailWithError:aerror];
|
||||
}
|
||||
dispatch_group_leave(_group);
|
||||
CFRunLoopStop(CFRunLoopGetCurrent());
|
||||
}
|
||||
|
||||
- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection {
|
||||
if([_delegate respondsToSelector:@selector(connectionShouldUseCredentialStorage:)]) {
|
||||
return [_delegate connectionShouldUseCredentialStorage:connection];
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
|
||||
if([_delegate respondsToSelector:@selector(connection:canAuthenticateAgainstProtectionSpace:)]) {
|
||||
return [_delegate connection:connection canAuthenticateAgainstProtectionSpace:protectionSpace];
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
|
||||
if([_delegate respondsToSelector:@selector(connection:didReceiveAuthenticationChallenge:)]) {
|
||||
[_delegate connection:connection didReceiveAuthenticationChallenge:challenge];
|
||||
} else {
|
||||
[challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)connection:(NSURLConnection *)connection didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
|
||||
if([_delegate respondsToSelector:@selector(connection:didCancelAuthenticationChallenge:)]) {
|
||||
[_delegate connection:connection didCancelAuthenticationChallenge:challenge];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)aresponse {
|
||||
if([_delegate respondsToSelector:@selector(connection:willSendRequest:redirectResponse:)]) {
|
||||
return [_delegate connection:connection willSendRequest:request redirectResponse:aresponse];
|
||||
}
|
||||
return request;
|
||||
}
|
||||
|
||||
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)aresponse {
|
||||
response = [aresponse retain];
|
||||
if([_delegate respondsToSelector:@selector(connection:didReceiveResponse:)]) {
|
||||
[_delegate connection:connection didReceiveResponse:aresponse];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)adata {
|
||||
if([_delegate respondsToSelector:@selector(connection:didReceiveData:)]) {
|
||||
[_delegate connection:connection didReceiveData:adata];
|
||||
}
|
||||
if(data == nil) {
|
||||
data = [[NSMutableData alloc] initWithCapacity:[adata length]];
|
||||
}
|
||||
[data appendData:adata];
|
||||
}
|
||||
|
||||
- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite {
|
||||
if([_delegate respondsToSelector:@selector(connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:)]) {
|
||||
return [_delegate connection:connection didSendBodyData:bytesWritten totalBytesWritten:totalBytesWritten totalBytesExpectedToWrite:totalBytesExpectedToWrite];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse {
|
||||
if([_delegate respondsToSelector:@selector(connection:willCacheResponse:)]) {
|
||||
return [_delegate connection:connection willCacheResponse:cachedResponse];
|
||||
}
|
||||
return cachedResponse;
|
||||
}
|
||||
|
||||
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
|
||||
if([_delegate respondsToSelector:@selector(connectionDidFinishLoading:)]) {
|
||||
[_delegate connectionDidFinishLoading:connection];
|
||||
}
|
||||
dispatch_group_leave(_group);
|
||||
CFRunLoopStop(CFRunLoopGetCurrent());
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSURLConnection (SynchronousDelegate)
|
||||
|
||||
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error delegate:(id) delegate {
|
||||
dispatch_group_t group = dispatch_group_create();
|
||||
dispatch_group_enter(group);
|
||||
|
||||
NSURLConnectionSynchronousDelegate *privateDelegate = [[NSURLConnectionSynchronousDelegate alloc] initWithDelegate:delegate group:group];
|
||||
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^() {
|
||||
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:privateDelegate];
|
||||
if(connection) {
|
||||
[connection start];
|
||||
|
||||
CFRunLoopRun();
|
||||
}
|
||||
});
|
||||
|
||||
// wait for block finished
|
||||
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
|
||||
dispatch_release(group);
|
||||
|
||||
NSData *data = [privateDelegate data];
|
||||
*error = [privateDelegate error];
|
||||
*response = [privateDelegate response];
|
||||
|
||||
[delegate release];
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -72,5 +72,7 @@
|
|||
<true/>
|
||||
<key>UIStatusBarStyle</key>
|
||||
<string>UIStatusBarStyleBlackOpaque</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
|||
|
|
@ -106,8 +106,6 @@
|
|||
344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; };
|
||||
344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
570B130115FE44AF00DE62B6 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 570B130015FE44AF00DE62B6 /* libmediastreamer_voip.a */; };
|
||||
570B130315FE44ED00DE62B6 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 570B130215FE44ED00DE62B6 /* libmediastreamer_base.a */; };
|
||||
57F005C415EE2CCF00914747 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C315EE2CCF00914747 /* linphonerc */; };
|
||||
57F005C515EE2CCF00914747 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C315EE2CCF00914747 /* linphonerc */; };
|
||||
7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; };
|
||||
|
|
@ -159,6 +157,8 @@
|
|||
D35E7582159328EB0066B1C1 /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7580159328EB0066B1C1 /* UIAddressTextField.m */; };
|
||||
D36FB2D51589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; };
|
||||
D36FB2D61589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; };
|
||||
D37490841612E3F200A62D02 /* NSURLConnection+SynchronousDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D37490831612E3F200A62D02 /* NSURLConnection+SynchronousDelegate.m */; };
|
||||
D37490851612E3F200A62D02 /* NSURLConnection+SynchronousDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D37490831612E3F200A62D02 /* NSURLConnection+SynchronousDelegate.m */; };
|
||||
D376EAE1160082A4007C8226 /* trash.png in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE0160082A4007C8226 /* trash.png */; };
|
||||
D376EAE2160082A4007C8226 /* trash.png in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE0160082A4007C8226 /* trash.png */; };
|
||||
D376EAE816008454007C8226 /* ringtone_01_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE316008454007C8226 /* ringtone_01_1600.wav */; };
|
||||
|
|
@ -257,12 +257,6 @@
|
|||
D37CD3A215E2452C0028869A /* BuschJaegerStationTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37CD3A015E2452B0028869A /* BuschJaegerStationTableViewController.m */; };
|
||||
D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; };
|
||||
D37DC7191594AF3F00B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; };
|
||||
D37EE10916032DA4003608A6 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EE916006F0700B92522 /* libmediastreamer_base.a */; };
|
||||
D37EE10A16032DA4003608A6 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EEA16006F0700B92522 /* libmediastreamer_voip.a */; };
|
||||
D37EE10B16032DC2003608A6 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EE916006F0700B92522 /* libmediastreamer_base.a */; };
|
||||
D37EE10C16032DC2003608A6 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EEA16006F0700B92522 /* libmediastreamer_voip.a */; };
|
||||
D37EE162160377D7003608A6 /* DTActionSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = D37EE161160377D7003608A6 /* DTActionSheet.m */; };
|
||||
D37EE163160377D7003608A6 /* DTActionSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = D37EE161160377D7003608A6 /* DTActionSheet.m */; };
|
||||
D380800515C28A7A005BE9BC /* UILinphone.m in Sources */ = {isa = PBXBuildFile; fileRef = D380800415C28A7A005BE9BC /* UILinphone.m */; };
|
||||
D380800615C28A7A005BE9BC /* UILinphone.m in Sources */ = {isa = PBXBuildFile; fileRef = D380800415C28A7A005BE9BC /* UILinphone.m */; };
|
||||
D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */ = {isa = PBXBuildFile; fileRef = D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */; };
|
||||
|
|
@ -289,6 +283,8 @@
|
|||
D3C6526815AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */; };
|
||||
D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; };
|
||||
D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; };
|
||||
D3F5F9801609C1F000D3DA1A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22744043106F33FC006EC466 /* Security.framework */; };
|
||||
D3F5F9821609C1FF00D3DA1A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22744043106F33FC006EC466 /* Security.framework */; };
|
||||
D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; };
|
||||
D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; };
|
||||
D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; };
|
||||
|
|
@ -578,8 +574,6 @@
|
|||
344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = "<group>"; };
|
||||
344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; };
|
||||
344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; };
|
||||
570B130015FE44AF00DE62B6 /* libmediastreamer_voip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_voip.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_voip.a"; sourceTree = "<group>"; };
|
||||
570B130215FE44ED00DE62B6 /* libmediastreamer_base.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_base.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_base.a"; sourceTree = "<group>"; };
|
||||
57F005C315EE2CCF00914747 /* linphonerc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = linphonerc; path = Resources/linphonerc; sourceTree = "<group>"; };
|
||||
7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = "<group>"; };
|
||||
70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
|
||||
|
|
@ -617,6 +611,8 @@
|
|||
D35E7580159328EB0066B1C1 /* UIAddressTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIAddressTextField.m; sourceTree = "<group>"; };
|
||||
D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPauseButton.h; sourceTree = "<group>"; };
|
||||
D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPauseButton.m; sourceTree = "<group>"; };
|
||||
D37490821612E3F200A62D02 /* NSURLConnection+SynchronousDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSURLConnection+SynchronousDelegate.h"; path = "Classes/Utils/NSURLConnection+SynchronousDelegate.h"; sourceTree = SOURCE_ROOT; };
|
||||
D37490831612E3F200A62D02 /* NSURLConnection+SynchronousDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSURLConnection+SynchronousDelegate.m"; path = "Classes/Utils/NSURLConnection+SynchronousDelegate.m"; sourceTree = SOURCE_ROOT; };
|
||||
D376EAE0160082A4007C8226 /* trash.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = trash.png; path = Resources/trash.png; sourceTree = "<group>"; };
|
||||
D376EAE316008454007C8226 /* ringtone_01_1600.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringtone_01_1600.wav; path = Resources/ringtone_01_1600.wav; sourceTree = "<group>"; };
|
||||
D376EAE416008454007C8226 /* ringtone_02_1600.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringtone_02_1600.wav; path = Resources/ringtone_02_1600.wav; sourceTree = "<group>"; };
|
||||
|
|
@ -755,6 +751,7 @@
|
|||
D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */,
|
||||
70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */,
|
||||
70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */,
|
||||
D3F5F9821609C1FF00D3DA1A /* Security.framework in Frameworks */,
|
||||
2264B6D211200342002C2C53 /* SystemConfiguration.framework in Frameworks */,
|
||||
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
|
||||
344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */,
|
||||
|
|
@ -813,6 +810,7 @@
|
|||
D37DC7191594AF3F00B2A5EB /* MessageUI.framework in Frameworks */,
|
||||
22D8F15D147548E2008C97DB /* OpenGLES.framework in Frameworks */,
|
||||
22D8F15C147548E2008C97DB /* QuartzCore.framework in Frameworks */,
|
||||
D3F5F9801609C1F000D3DA1A /* Security.framework in Frameworks */,
|
||||
22D8F173147548E2008C97DB /* SystemConfiguration.framework in Frameworks */,
|
||||
22D8F166147548E2008C97DB /* UIKit.framework in Frameworks */,
|
||||
22D8F178147548E2008C97DB /* libresolv.dylib in Frameworks */,
|
||||
|
|
@ -1228,8 +1226,6 @@
|
|||
220FAD2910765B400068D98F /* libgsm.a */,
|
||||
223148E31178A08200637D6A /* libilbc.a */,
|
||||
2211DB911475562600DEE054 /* liblinphone.a */,
|
||||
22405EE916006F0700B92522 /* libmediastreamer_base.a */,
|
||||
22405EEA16006F0700B92522 /* libmediastreamer_voip.a */,
|
||||
226F2ED51344B0EF00F6EF27 /* libmsamr.a */,
|
||||
226CDADE14E2D0B800513B67 /* libmsbcg729.a */,
|
||||
223148E51178A09900637D6A /* libmsilbc.a */,
|
||||
|
|
@ -1352,6 +1348,8 @@
|
|||
D37EE15F160377D7003608A6 /* DTFoundation */,
|
||||
D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */,
|
||||
D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */,
|
||||
D37490821612E3F200A62D02 /* NSURLConnection+SynchronousDelegate.h */,
|
||||
D37490831612E3F200A62D02 /* NSURLConnection+SynchronousDelegate.m */,
|
||||
D326483615887D5200930C67 /* OrderedDictionary.h */,
|
||||
D326483715887D5200930C67 /* OrderedDictionary.m */,
|
||||
D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */,
|
||||
|
|
@ -1391,16 +1389,6 @@
|
|||
path = Utils/ZBarSDK;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D37EE15F160377D7003608A6 /* DTFoundation */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D37EE160160377D7003608A6 /* DTActionSheet.h */,
|
||||
D37EE161160377D7003608A6 /* DTActionSheet.m */,
|
||||
);
|
||||
name = DTFoundation;
|
||||
path = Utils/DTFoundation;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D37CD35615E22B0C0028869A /* Headers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -1455,6 +1443,16 @@
|
|||
path = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D37EE15F160377D7003608A6 /* DTFoundation */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D37EE160160377D7003608A6 /* DTActionSheet.h */,
|
||||
D37EE161160377D7003608A6 /* DTActionSheet.m */,
|
||||
);
|
||||
name = DTFoundation;
|
||||
path = Utils/DTFoundation;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -1745,6 +1743,7 @@
|
|||
D3FE9F4B15E790D80024F3E4 /* UIHistoryDetailsCell.m in Sources */,
|
||||
D376EAF416008DF1007C8226 /* User.m in Sources */,
|
||||
D32EDD9B1600C450009A84C7 /* LevelPushButton.m in Sources */,
|
||||
D37490841612E3F200A62D02 /* NSURLConnection+SynchronousDelegate.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -1799,6 +1798,7 @@
|
|||
D3FE9F4C15E790D80024F3E4 /* UIHistoryDetailsCell.m in Sources */,
|
||||
D376EAF516008DF1007C8226 /* User.m in Sources */,
|
||||
D32EDD9C1600C450009A84C7 /* LevelPushButton.m in Sources */,
|
||||
D37490851612E3F200A62D02 /* NSURLConnection+SynchronousDelegate.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -1847,6 +1847,7 @@
|
|||
submodules/externals/speex/include,
|
||||
);
|
||||
INFOPLIST_FILE = "buschjaeger-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(BUILT_PRODUCTS_DIR)",
|
||||
"\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"",
|
||||
|
|
@ -1915,6 +1916,7 @@
|
|||
submodules/externals/speex/include,
|
||||
);
|
||||
INFOPLIST_FILE = "buschjaeger-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(BUILT_PRODUCTS_DIR)",
|
||||
"\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"",
|
||||
|
|
@ -1958,6 +1960,7 @@
|
|||
submodules/externals/speex/include,
|
||||
);
|
||||
INFOPLIST_FILE = "buschjaeger-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(BUILT_PRODUCTS_DIR)",
|
||||
"\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"",
|
||||
|
|
@ -1969,7 +1972,7 @@
|
|||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = "buschjaeger-no-gpl-thirdparties";
|
||||
SKIP_INSTALL = NO;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
|
|
@ -2000,6 +2003,7 @@
|
|||
submodules/externals/speex/include,
|
||||
);
|
||||
INFOPLIST_FILE = "buschjaeger-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(BUILT_PRODUCTS_DIR)",
|
||||
"\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"",
|
||||
|
|
@ -2011,7 +2015,7 @@
|
|||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = "buschjaeger-no-gpl-thirdparties";
|
||||
SKIP_INSTALL = NO;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
|
@ -2043,6 +2047,7 @@
|
|||
submodules/externals/speex/include,
|
||||
);
|
||||
INFOPLIST_FILE = "buschjaeger-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(BUILT_PRODUCTS_DIR)",
|
||||
"\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"",
|
||||
|
|
@ -2054,7 +2059,7 @@
|
|||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = "buschjaeger-no-gpl-thirdparties";
|
||||
SKIP_INSTALL = NO;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Distribution;
|
||||
};
|
||||
|
|
@ -2086,6 +2091,7 @@
|
|||
submodules/externals/speex/include,
|
||||
);
|
||||
INFOPLIST_FILE = "buschjaeger-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(BUILT_PRODUCTS_DIR)",
|
||||
"\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"",
|
||||
|
|
@ -2097,7 +2103,7 @@
|
|||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = "buschjaeger-no-gpl-thirdparties";
|
||||
SKIP_INSTALL = NO;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = DistributionAdhoc;
|
||||
};
|
||||
|
|
@ -2154,7 +2160,7 @@
|
|||
submodules/externals/speex/include,
|
||||
);
|
||||
INFOPLIST_FILE = "buschjaeger-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(BUILT_PRODUCTS_DIR)",
|
||||
"\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"",
|
||||
|
|
@ -2224,7 +2230,7 @@
|
|||
submodules/externals/speex/include,
|
||||
);
|
||||
INFOPLIST_FILE = "buschjaeger-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(BUILT_PRODUCTS_DIR)",
|
||||
"\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue