Commits

Anonymous committed 40821cc

Committing some really old stuff from the beginning of 2011.

Comments (0)

Files changed (11)

 syntax: glob
 build
+xcuserdata

Classes/MessedUpAkamaiViewController.h

 
 #import <UIKit/UIKit.h>
 
-@interface MessedUpAkamaiViewController : UIViewController {
+#import "NetworkDetailsTableViewController.h"
+
+@interface MessedUpAkamaiViewController : UIViewController<UIGestureRecognizerDelegate> {
+	NetworkDetailsTableViewController *controller;
+	
+	UIBarButtonItem *detailsItem;
 	UILabel *label;
+	UIToolbar *toolbar;
+	UIView *detailsView;
+	UIView *infoView;
 }
 
 @end

Classes/MessedUpAkamaiViewController.m

 #import "MessedUpAkamaiViewController.h"
 
 #define GEOIPTOOL_URL		@"http://www.geoiptool.com/en/?IP=%@"
-#define WHATISMYIP_URL		@"http://www.whatismyip.com/automation/n09230945.asp"
+#define WHATISMYIP_URL		@"http://automation.whatismyip.com/n09230945.asp"
 
 @implementation MessedUpAkamaiViewController
 
+- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
+    return YES;
+}
+
 - (void)showAlert:(NSString*)title AndMessage:(NSString *)message {
 	UIAlertView* alertView = [[UIAlertView alloc] 
 							  initWithTitle:title message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
 	[alertView release];
 }
 
-
 - (NSString *)getIpForHostname:(NSString *)hostname {
 	Boolean result;
 	CFHostRef hostRef;
 }
 
 - (void)refresh {
+	if (label) {
+		label.text = @"";
+	}
+	
 	[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
 	
-	NSString *akamaiIp = [self getIpForHostname:@"rogue.blizzard.com.edgesuite.net"];
-	NSString *akamaiCountry = [self getCountryForIp:akamaiIp];
-	//NSLog(@"Your Akamai server is %@ in %@.\n", akamaiIp, akamaiCountry);
+	controller.akamaiIp = [self getIpForHostname:@"rogue.blizzard.com.edgesuite.net"];
+	controller.akamaiCountry = [self getCountryForIp:controller.akamaiIp];
 	
-	NSString *myIp = [self getIpFromWhatIsMyIpCom];
-	NSString *myCountry = [self getCountryForIp:myIp];
-	//NSLog(@"Your IP is %@ in %@.\n", akamaiIp, akamaiCountry);
+	controller.myIp = [self getIpFromWhatIsMyIpCom];
+	controller.myCountry = [self getCountryForIp:controller.myIp];
 	
 	[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
 	
 	if (!label) {
-		label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 200, 100)];
+		label = [[UILabel alloc] initWithFrame:CGRectMake(130, 150, 200, 100)];
 		label.font = [UIFont boldSystemFontOfSize:40.0];
 		[self.view addSubview:label];
 	}
 	
-	if (!akamaiIp || !akamaiCountry || !myIp || !myCountry) {
+	if (!controller.akamaiIp || !controller.akamaiCountry || !controller.myIp || !controller.myCountry) {
+		detailsItem.enabled = NO;
 		label.text = @"Error.";
 	} else {
-		if ([myCountry isEqualToString:akamaiCountry]) {
+		detailsItem.enabled = YES;
+		if ([controller.myCountry isEqualToString:controller.akamaiCountry]) {
 			label.text = @"No.";
 		} else {
 			label.text = @"Yes.";
 	}
 }
 
+-(void)createDetailsView {
+	int border = 10;
+	CGSize size = self.view.frame.size;
+	CGRect viewFrame = CGRectMake(border, border, 
+								  size.width - 2 * border, 
+								  size.height - 2 * border);
+	
+	detailsView = [[UIView alloc] initWithFrame:viewFrame];
+	detailsView.backgroundColor = [UIColor clearColor];
+	
+	viewFrame.origin.x = 0;
+	viewFrame.origin.y = 0;
+	UIView *transparentView = [[UIView alloc] initWithFrame:viewFrame];
+	transparentView.backgroundColor = [UIColor darkTextColor];
+	transparentView.alpha = 0.5f;
+	[detailsView addSubview:transparentView];
+	[transparentView release];
+	
+	int tableVerticalBorder = 125;
+	controller = [[NetworkDetailsTableViewController alloc] initWithFrame:CGRectMake(border * 2, tableVerticalBorder, 
+																					 size.width - 6 * border, 
+																					 size.height - 2 * border - 2 * tableVerticalBorder)];
+	[detailsView addSubview:controller.view];
+	
+	UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissDetails:)];
+    tapRecognizer.numberOfTapsRequired = 1;
+    [detailsView addGestureRecognizer:tapRecognizer];
+    tapRecognizer.delegate = self;
+    [tapRecognizer release];
+}
+
+-(void)createInfoView {
+	int border = 10;
+	CGSize size = self.view.frame.size;
+	
+	infoView = [[UIView alloc] initWithFrame:CGRectMake(border, border, 
+																size.width - 2 * border, 
+																size.height - 2 * border)];
+	infoView.backgroundColor = [UIColor darkTextColor];
+	infoView.alpha = 0.5f;
+	
+	UILabel *infoText = [[UILabel alloc] initWithFrame:CGRectMake(border * 2, border * 2, 
+																  size.width - 6 * border, 
+																  size.height - 6 * border)];
+	[infoView addSubview:infoText];
+	[infoText release];
+	
+	infoText.text = @"The advent of Google DNS and OpenDNS caused people to mess with their networks. " \
+	@"Unfortunately, many did this without knowing the facts. " \
+	@"Akamai serves up lots of content these days, including everything in the iTunes Store. " \
+	@"This app performs the simple network debugging task of determining if Akamai gives " \
+	@"you a host located in your country or one from somewhere else, naturally being much slower.";
+	infoText.backgroundColor = [UIColor darkTextColor];
+	infoText.textColor = [UIColor lightTextColor];
+	infoText.lineBreakMode = UILineBreakModeWordWrap;
+	infoText.numberOfLines = 0;
+	infoText.textAlignment = UITextAlignmentCenter;
+	
+	UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissInfo:)];
+    tapRecognizer.numberOfTapsRequired = 1;
+    [infoView addGestureRecognizer:tapRecognizer];
+    tapRecognizer.delegate = self;
+    [tapRecognizer release];
+}
+
+-(void)infoClicked:(id)sender {
+	[label removeFromSuperview];
+	[self.view addSubview:infoView];
+}
+
+-(void)dismissInfo:(id)sender {
+	[infoView removeFromSuperview];
+	[self.view addSubview:label];
+}
+
+-(void)refreshClicked:(id)sender {
+	[self refresh];
+}
+
+-(void)detailsClicked:(id)sender {
+	[self.view addSubview:detailsView];
+}
+
+-(void)dismissDetails:(id)sender {
+	[detailsView removeFromSuperview];
+}
+
+- (void)createToolbar {
+	toolbar = [UIToolbar new];
+	toolbar.barStyle = UIBarStyleDefault;
+	[toolbar sizeToFit];
+	toolbar.frame = CGRectMake(0, 410, 320, 50);
+	
+	UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
+																				 target:self
+																				 action:@selector(refreshClicked:)];
+	
+	UIBarButtonItem *infoItem = [[UIBarButtonItem alloc] initWithTitle:@"Info" 
+																style:UIBarButtonItemStyleBordered
+																target:self
+																action:@selector(infoClicked:)];
+	
+	detailsItem = [[UIBarButtonItem alloc]
+				   initWithBarButtonSystemItem:UIBarButtonSystemItemPageCurl
+				   target:self action:@selector(detailsClicked:)];
+	
+	UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
+																			  target:nil
+																			  action:nil];
+	
+	NSArray *items = [NSArray arrayWithObjects: refreshItem, flexItem, infoItem, flexItem, detailsItem, nil];
+	
+	[refreshItem release];
+	[infoItem release];
+	[flexItem release];
+	
+	[toolbar setItems:items animated:NO];
+	
+	[self.view addSubview:toolbar];
+}
+
 - (void)viewDidLoad {
     [super viewDidLoad];
+	[self createDetailsView];
+	[self createInfoView];
+	[self createToolbar];
 	label = nil;
 	[self refresh];
 }
 }
 
 - (void)viewDidUnload {
+	[controller release];
+	[detailsItem release];
+	[infoView release];
 	[label release];
+	[toolbar release];
 }
 
 - (void)dealloc {

Classes/NetworkDetailsTableViewController.h

+//
+//  NetworkDetailsTableViewController.h
+//
+//  Created by Boris Buegling on 06.02.11.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface NetworkDetailsTableViewController : UITableViewController {
+	CGRect frame;
+	
+	NSString *akamaiCountry;
+	NSString *akamaiIp;
+	NSString *myCountry;
+	NSString *myIp;
+}
+
+@property (retain, readwrite) NSString *akamaiCountry;
+@property (retain, readwrite) NSString *akamaiIp;
+@property (retain, readwrite) NSString *myCountry;
+@property (retain, readwrite) NSString *myIp;
+
+- (id)initWithFrame:(CGRect)_frame;
+
+@end

Classes/NetworkDetailsTableViewController.m

+//
+//  NetworkDetailsTableViewController.m
+//
+//  Created by Boris Buegling on 06.02.11.
+//
+
+#import "NetworkDetailsTableViewController.h"
+
+@implementation NetworkDetailsTableViewController
+
+@synthesize akamaiCountry;
+@synthesize akamaiIp;
+@synthesize myCountry;
+@synthesize myIp;
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return 4;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    static NSString *cellID = @"NetworkCell";
+    
+    UITableViewCell *cell = [table dequeueReusableCellWithIdentifier:cellID];
+    if (cell == nil) {
+        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
+                                       reuseIdentifier:cellID] autorelease];
+    }
+    
+    CGRect _frame = cell.textLabel.frame;
+    _frame.size.width = 200;
+    cell.textLabel.frame = _frame;
+	
+	NSLog(@"cellForRowAtIndexPath: %i\n", indexPath.row);
+	//NSLog(@"cellForRowAtIndexPath: %i - %@ - %@ - %@ - %@\n", indexPath.row, akamaiIp, akamaiCountry, myIp, myCountry);
+	
+	switch (indexPath.row) {
+        case 0: {
+            cell.detailTextLabel.text = @"Akamai IP";
+            cell.textLabel.text = akamaiIp;
+        } break;
+        case 1: {
+            cell.detailTextLabel.text = @"Akamai Country";
+            cell.textLabel.text = akamaiCountry;
+        } break;
+        case 2: {
+            cell.detailTextLabel.text = @"Your IP";
+            cell.textLabel.text = myIp;
+        } break;
+        case 3: {
+            cell.detailTextLabel.text = @"Your Country";
+            cell.textLabel.text = myCountry;
+        } break;
+        default: {
+            cell.textLabel.text = @"";
+            cell.detailTextLabel.text = @"";
+        } break;
+    }
+    
+    return cell;
+}
+
+- (id)initWithFrame:(CGRect)_frame {
+	self = [super initWithNibName:nil bundle:nil];
+	frame = _frame;
+	akamaiIp = @"";
+	akamaiCountry = @"";
+	myIp = @"";
+	myCountry = @"";
+	return self;
+}
+
+- (void)loadView {
+	self.tableView = [[UITableView alloc] initWithFrame:frame];
+	self.view = self.tableView;
+}
+
+@end

Entitlements.plist

+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+    <!--- Required entitlements (in most cases shouldn't be changed) --->
+    <key>application-identifier</key>
+    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
+    <key>keychain-access-groups</key>
+    <array>
+        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
+    </array>
+    
+    <!--- Custom entitlements below --->
+
+
+</dict>
+</plist>

Icon.png

Old
Old image
New
New image

MessedUpAkamai-Info.plist

 	<key>CFBundleIconFile</key>
 	<string></string>
 	<key>CFBundleIdentifier</key>
-	<string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
+	<string>org.vu0.didimessupmyakamai</string>
 	<key>CFBundleInfoDictionaryVersion</key>
 	<string>6.0</string>
 	<key>CFBundleName</key>
 	<string>${PRODUCT_NAME}</string>
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.1</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>
-	<string>1.0</string>
+	<string>1.1</string>
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
 	<key>NSMainNibFile</key>

MessedUpAkamai.xcodeproj/neocool.mode1v3

 			<key>Layout</key>
 			<array>
 				<dict>
+					<key>BecomeActive</key>
+					<true/>
 					<key>ContentConfiguration</key>
 					<dict>
 						<key>PBXBottomSmartGroupGIDs</key>
 					<key>Dock</key>
 					<array>
 						<dict>
-							<key>BecomeActive</key>
-							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
 								<key>PBXProjectModuleGUID</key>
 								<string>1CE0B20306471E060097A5F4</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>MessedUpAkamaiViewController.m</string>
+								<string>NetworkDetailsTableViewController.m</string>
 								<key>PBXSplitModuleInNavigatorKey</key>
 								<dict>
 									<key>Split0</key>
 										<key>PBXProjectModuleGUID</key>
 										<string>1CE0B20406471E060097A5F4</string>
 										<key>PBXProjectModuleLabel</key>
-										<string>MessedUpAkamaiViewController.m</string>
+										<string>NetworkDetailsTableViewController.m</string>
 										<key>_historyCapacity</key>
 										<integer>0</integer>
 										<key>bookmark</key>
-										<string>8A28D7D412FE20BD000F9A15</string>
+										<string>8ADFABB312FEEEE60019A5DA</string>
 										<key>history</key>
 										<array>
 											<string>8A28D71512FE0AEF000F9A15</string>
 											<string>8A28D71612FE0AEF000F9A15</string>
 											<string>8A28D72212FE0C1D000F9A15</string>
-											<string>8A28D78312FE1A51000F9A15</string>
 											<string>8A28D7D012FE20A8000F9A15</string>
-											<string>8A28D7D112FE20A8000F9A15</string>
-											<string>8A28D7D212FE20A8000F9A15</string>
+											<string>8ADFAB3812FEDF210019A5DA</string>
+											<string>8ADFAB3912FEDF210019A5DA</string>
+											<string>8ADFAB6A12FEE4F20019A5DA</string>
+											<string>8ADFAB9912FEED5C0019A5DA</string>
+											<string>8ADFABAE12FEEE670019A5DA</string>
+											<string>8ADFABAF12FEEE670019A5DA</string>
 										</array>
 									</dict>
 									<key>SplitCount</key>
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {1472, 742}}</string>
+								<string>{{0, 0}, {1472, 738}}</string>
 								<key>RubberWindowFrame</key>
 								<string>0 59 1680 969 0 0 1680 1028 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>742pt</string>
+							<string>738pt</string>
 						</dict>
 						<dict>
 							<key>ContentConfiguration</key>
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 747}, {1472, 181}}</string>
+								<string>{{0, 743}, {1472, 185}}</string>
 								<key>RubberWindowFrame</key>
 								<string>0 59 1680 969 0 0 1680 1028 </string>
 							</dict>
 							<key>Module</key>
 							<string>XCDetailModule</string>
 							<key>Proportion</key>
-							<string>181pt</string>
+							<string>185pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
 			</array>
 			<key>TableOfContents</key>
 			<array>
-				<string>8A28D70A12FE0A6A000F9A15</string>
+				<string>8ADFAA4812FEC3C00019A5DA</string>
 				<string>1CE0B1FE06471DED0097A5F4</string>
-				<string>8A28D70B12FE0A6A000F9A15</string>
+				<string>8ADFAA4912FEC3C00019A5DA</string>
 				<string>1CE0B20306471E060097A5F4</string>
 				<string>1CE0B20506471E060097A5F4</string>
 			</array>
 	<integer>5</integer>
 	<key>WindowOrderList</key>
 	<array>
-		<string>8A28D7A112FE1D60000F9A15</string>
-		<string>8A28D79C12FE1D49000F9A15</string>
+		<string>8ADFAB1B12FEDC9F0019A5DA</string>
+		<string>8ADFAB1412FEDC2F0019A5DA</string>
+		<string>1C78EAAD065D492600B07095</string>
 		<string>1CD10A99069EF8BA00B06720</string>
 		<string>8A28D70D12FE0A6A000F9A15</string>
 		<string>/Users/neocool/Projects/iPhone/MessedUpAkamai/MessedUpAkamai.xcodeproj</string>
-		<string>1C78EAAD065D492600B07095</string>
 	</array>
 	<key>WindowString</key>
 	<string>0 59 1680 969 0 0 1680 1028 </string>
 								<key>PBXProjectModuleGUID</key>
 								<string>1CD0528F0623707200166675</string>
 								<key>PBXProjectModuleLabel</key>
-								<string></string>
+								<string>MessedUpAkamaiViewController.m</string>
 								<key>StatusBarVisibility</key>
 								<true/>
 							</dict>
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {500, 218}}</string>
+								<string>{{0, 0}, {1015, 223}}</string>
 								<key>RubberWindowFrame</key>
-								<string>467 388 500 500 0 0 1680 1028 </string>
+								<string>467 383 1015 505 0 0 1680 1028 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>218pt</string>
+							<string>223pt</string>
 						</dict>
 						<dict>
 							<key>BecomeActive</key>
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 223}, {500, 236}}</string>
+								<string>{{0, 228}, {1015, 236}}</string>
 								<key>RubberWindowFrame</key>
-								<string>467 388 500 500 0 0 1680 1028 </string>
+								<string>467 383 1015 505 0 0 1680 1028 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXBuildResultsModule</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>459pt</string>
+					<string>464pt</string>
 				</dict>
 			</array>
 			<key>Name</key>
 			<key>TableOfContents</key>
 			<array>
 				<string>8A28D70D12FE0A6A000F9A15</string>
-				<string>8A28D70E12FE0A6A000F9A15</string>
+				<string>8ADFAA4A12FEC3C00019A5DA</string>
 				<string>1CD0528F0623707200166675</string>
 				<string>XCMainBuildResultsModuleGUID</string>
 			</array>
 			<key>WindowContentMinSize</key>
 			<string>486 300</string>
 			<key>WindowString</key>
-			<string>467 388 500 500 0 0 1680 1028 </string>
+			<string>467 383 1015 505 0 0 1680 1028 </string>
 			<key>WindowToolGUID</key>
 			<string>8A28D70D12FE0A6A000F9A15</string>
 			<key>WindowToolIsVisible</key>
 										<string>yes</string>
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {316, 185}}</string>
-											<string>{{316, 0}, {378, 185}}</string>
+											<string>{{0, 0}, {316, 194}}</string>
+											<string>{{316, 0}, {378, 194}}</string>
 										</array>
 									</dict>
 									<key>VerticalSplitView</key>
 										<string>yes</string>
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {694, 185}}</string>
-											<string>{{0, 185}, {694, 196}}</string>
+											<string>{{0, 0}, {694, 194}}</string>
+											<string>{{0, 194}, {694, 187}}</string>
 										</array>
 									</dict>
 								</dict>
 										<real>148</real>
 									</array>
 									<key>Frame</key>
-									<string>{{316, 0}, {378, 185}}</string>
+									<string>{{316, 0}, {378, 194}}</string>
 									<key>RubberWindowFrame</key>
 									<string>21 583 694 422 0 0 1680 1028 </string>
 								</dict>
 			<key>TableOfContents</key>
 			<array>
 				<string>1CD10A99069EF8BA00B06720</string>
-				<string>8A28D71B12FE0AEF000F9A15</string>
+				<string>8ADFAA6712FEC7130019A5DA</string>
 				<string>1C162984064C10D400B95A72</string>
-				<string>8A28D71C12FE0AEF000F9A15</string>
-				<string>8A28D71D12FE0AEF000F9A15</string>
-				<string>8A28D71E12FE0AEF000F9A15</string>
-				<string>8A28D71F12FE0AEF000F9A15</string>
-				<string>8A28D72012FE0AEF000F9A15</string>
+				<string>8ADFAA6812FEC7130019A5DA</string>
+				<string>8ADFAA6912FEC7130019A5DA</string>
+				<string>8ADFAA6A12FEC7130019A5DA</string>
+				<string>8ADFAA6B12FEC7130019A5DA</string>
+				<string>8ADFAA6C12FEC7130019A5DA</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.debugV3</string>
 			<key>TableOfContents</key>
 			<array>
 				<string>1C78EAAD065D492600B07095</string>
-				<string>8A28D72112FE0AEF000F9A15</string>
+				<string>8ADFAA6D12FEC7130019A5DA</string>
 				<string>1C78EAAC065D492600B07095</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<key>WindowToolGUID</key>
 			<string>1C78EAAD065D492600B07095</string>
 			<key>WindowToolIsVisible</key>
-			<true/>
+			<false/>
 		</dict>
 		<dict>
 			<key>Identifier</key>

MessedUpAkamai.xcodeproj/neocool.pbxuser

 	};
 	28D7ACF60DDB3853001CB0EB /* MessedUpAkamaiViewController.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1411, 687}}";
-			sepNavSelRange = "{173, 0}";
-			sepNavVisRange = "{0, 200}";
+			sepNavIntBoundsRect = "{{0, 0}, {1411, 683}}";
+			sepNavSelRange = "{330, 0}";
+			sepNavVisRange = "{0, 419}";
 		};
 	};
 	28D7ACF70DDB3853001CB0EB /* MessedUpAkamaiViewController.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1411, 1859}}";
-			sepNavSelRange = "{3340, 0}";
-			sepNavVisRange = "{699, 2108}";
+			sepNavIntBoundsRect = "{{0, 0}, {954, 3848}}";
+			sepNavSelRange = "{3440, 0}";
+			sepNavVisRange = "{3255, 590}";
 		};
 	};
 	29B97313FDCFA39411CA2CEA /* Project object */ = {
-		activeBuildConfigurationName = Debug;
+		activeBuildConfigurationName = Distribution;
 		activeExecutable = 8A28D6FE12FE0A5A000F9A15 /* MessedUpAkamai */;
+		activeSDKPreference = iphoneos4.2;
 		activeTarget = 1D6058900D05DD3D006BFB54 /* MessedUpAkamai */;
 		addToTargets = (
 			1D6058900D05DD3D006BFB54 /* MessedUpAkamai */,
 		);
 		breakpoints = (
 			8A28D79D12FE1D50000F9A15 /* malloc_error_break */,
+			8ADFAB2512FEDDA90019A5DA /* NetworkDetailsTableViewController.m:33 */,
 		);
 		codeSenseManager = 8A28D71012FE0A6A000F9A15 /* Code sense */;
 		executables = (
 					20,
 					1233,
 					20,
-					48.16259765625,
+					48,
 					43,
 					43,
 					20,
 					PBXFileDataSource_Target_ColumnID,
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 318638682;
-			PBXWorkspaceStateSaveDate = 318638682;
+			PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					20,
+					1193,
+					60,
+					20,
+					48.16259765625,
+					43,
+					43,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXFileDataSource_FiletypeID,
+					PBXFileDataSource_Filename_ColumnID,
+					PBXTargetDataSource_PrimaryAttribute,
+					PBXFileDataSource_Built_ColumnID,
+					PBXFileDataSource_ObjectSize_ColumnID,
+					PBXFileDataSource_Errors_ColumnID,
+					PBXFileDataSource_Warnings_ColumnID,
+				);
+			};
+			PBXPerProjectTemplateStateSaveDate = 318686137;
+			PBXWorkspaceStateSaveDate = 318686137;
 		};
 		perUserProjectItems = {
 			8A28D71512FE0AEF000F9A15 /* PBXTextBookmark */ = 8A28D71512FE0AEF000F9A15 /* PBXTextBookmark */;
 			8A28D71612FE0AEF000F9A15 /* PBXTextBookmark */ = 8A28D71612FE0AEF000F9A15 /* PBXTextBookmark */;
 			8A28D72212FE0C1D000F9A15 /* PBXTextBookmark */ = 8A28D72212FE0C1D000F9A15 /* PBXTextBookmark */;
-			8A28D78312FE1A51000F9A15 /* PBXTextBookmark */ = 8A28D78312FE1A51000F9A15 /* PBXTextBookmark */;
 			8A28D7D012FE20A8000F9A15 /* PBXBookmark */ = 8A28D7D012FE20A8000F9A15 /* PBXBookmark */;
-			8A28D7D112FE20A8000F9A15 /* PlistBookmark */ = 8A28D7D112FE20A8000F9A15 /* PlistBookmark */;
-			8A28D7D212FE20A8000F9A15 /* PBXTextBookmark */ = 8A28D7D212FE20A8000F9A15 /* PBXTextBookmark */;
-			8A28D7D412FE20BD000F9A15 /* PBXTextBookmark */ = 8A28D7D412FE20BD000F9A15 /* PBXTextBookmark */;
+			8ADFAB3812FEDF210019A5DA /* PBXTextBookmark */ = 8ADFAB3812FEDF210019A5DA /* PBXTextBookmark */;
+			8ADFAB3912FEDF210019A5DA /* PBXTextBookmark */ = 8ADFAB3912FEDF210019A5DA /* PBXTextBookmark */;
+			8ADFAB6A12FEE4F20019A5DA /* PBXTextBookmark */ = 8ADFAB6A12FEE4F20019A5DA /* PBXTextBookmark */;
+			8ADFAB9912FEED5C0019A5DA /* PlistBookmark */ = 8ADFAB9912FEED5C0019A5DA /* PlistBookmark */;
+			8ADFABAE12FEEE670019A5DA /* PlistBookmark */ = 8ADFABAE12FEEE670019A5DA /* PlistBookmark */;
+			8ADFABAF12FEEE670019A5DA /* PBXTextBookmark */ = 8ADFABAF12FEEE670019A5DA /* PBXTextBookmark */;
+			8ADFABB312FEEEE60019A5DA /* PBXTextBookmark */ = 8ADFABB312FEEEE60019A5DA /* PBXTextBookmark */;
 		};
 		sourceControlManager = 8A28D70F12FE0A6A000F9A15 /* Source Control */;
 		userBuildSettings = {
 		vrLen = 293;
 		vrLoc = 0;
 	};
-	8A28D78312FE1A51000F9A15 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 28D7ACF60DDB3853001CB0EB /* MessedUpAkamaiViewController.h */;
-		name = "MessedUpAkamaiViewController.h: 9";
-		rLen = 0;
-		rLoc = 173;
-		rType = 0;
-		vrLen = 200;
-		vrLoc = 0;
-	};
 	8A28D79D12FE1D50000F9A15 /* malloc_error_break */ = {
 		isa = PBXSymbolicBreakpoint;
 		actions = (
 		hitCount = 0;
 		ignoreCount = 0;
 		location = libSystem.B.dylib;
-		modificationTime = 318643553.971291;
+		modificationTime = 318692781.557804;
 		originalNumberOfMultipleMatches = 1;
 		state = 1;
 		symbolName = malloc_error_break;
 		isa = PBXBookmark;
 		fRef = 8A28D7C512FE1F9B000F9A15 /* Icon.png */;
 	};
-	8A28D7D112FE20A8000F9A15 /* PlistBookmark */ = {
+	8ADFAAE012FED5D70019A5DA /* NetworkDetailsTableViewController.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1411, 683}}";
+			sepNavSelRange = "{478, 0}";
+			sepNavVisRange = "{0, 550}";
+		};
+	};
+	8ADFAAE112FED5D70019A5DA /* NetworkDetailsTableViewController.m */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1411, 962}}";
+			sepNavSelRange = "{975, 0}";
+			sepNavVisRange = "{190, 1728}";
+		};
+	};
+	8ADFAB2512FEDDA90019A5DA /* NetworkDetailsTableViewController.m:33 */ = {
+		isa = PBXFileBreakpoint;
+		actions = (
+		);
+		breakpointStyle = 0;
+		continueAfterActions = 0;
+		countType = 0;
+		delayBeforeContinue = 0;
+		fileReference = 8ADFAAE112FED5D70019A5DA /* NetworkDetailsTableViewController.m */;
+		functionName = "-tableView:cellForRowAtIndexPath:";
+		hitCount = 1;
+		ignoreCount = 0;
+		lineNumber = 33;
+		location = MessedUpAkamai;
+		modificationTime = 318692826.262834;
+		originalNumberOfMultipleMatches = 1;
+		state = 1;
+	};
+	8ADFAB3812FEDF210019A5DA /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 8ADFAAE012FED5D70019A5DA /* NetworkDetailsTableViewController.h */;
+		name = "NetworkDetailsTableViewController.h: 21";
+		rLen = 0;
+		rLoc = 478;
+		rType = 0;
+		vrLen = 550;
+		vrLoc = 0;
+	};
+	8ADFAB3912FEDF210019A5DA /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 28D7ACF60DDB3853001CB0EB /* MessedUpAkamaiViewController.h */;
+		name = "MessedUpAkamaiViewController.h: 14";
+		rLen = 0;
+		rLoc = 330;
+		rType = 0;
+		vrLen = 419;
+		vrLoc = 0;
+	};
+	8ADFAB6A12FEE4F20019A5DA /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 28D7ACF70DDB3853001CB0EB /* MessedUpAkamaiViewController.m */;
+		name = "MessedUpAkamaiViewController.m: 156";
+		rLen = 0;
+		rLoc = 5262;
+		rType = 0;
+		vrLen = 1767;
+		vrLoc = 0;
+	};
+	8ADFAB9912FEED5C0019A5DA /* PlistBookmark */ = {
 		isa = PlistBookmark;
 		fRef = 8D1107310486CEB800E47090 /* MessedUpAkamai-Info.plist */;
 		fallbackIsa = PBXBookmark;
 		rLen = 0;
 		rLoc = 9223372036854775807;
 	};
-	8A28D7D212FE20A8000F9A15 /* PBXTextBookmark */ = {
+	8ADFABAE12FEEE670019A5DA /* PlistBookmark */ = {
+		isa = PlistBookmark;
+		fRef = 8ADFAB9512FEECEF0019A5DA /* Entitlements.plist */;
+		fallbackIsa = PBXBookmark;
+		isK = 0;
+		kPath = (
+		);
+		name = /Users/neocool/Projects/iPhone/MessedUpAkamai/Entitlements.plist;
+		rLen = 0;
+		rLoc = 9223372036854775807;
+	};
+	8ADFABAF12FEEE670019A5DA /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 28D7ACF70DDB3853001CB0EB /* MessedUpAkamaiViewController.m */;
-		name = "MessedUpAkamaiViewController.m: 105";
+		fRef = 8ADFAAE112FED5D70019A5DA /* NetworkDetailsTableViewController.m */;
+		name = "NetworkDetailsTableViewController.m: 33";
 		rLen = 0;
-		rLoc = 3730;
+		rLoc = 975;
 		rType = 0;
-		vrLen = 1276;
-		vrLoc = 2861;
+		vrLen = 1728;
+		vrLoc = 190;
 	};
-	8A28D7D412FE20BD000F9A15 /* PBXTextBookmark */ = {
+	8ADFABB312FEEEE60019A5DA /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 28D7ACF70DDB3853001CB0EB /* MessedUpAkamaiViewController.m */;
-		name = "MessedUpAkamaiViewController.m: 100";
+		fRef = 8ADFAAE112FED5D70019A5DA /* NetworkDetailsTableViewController.m */;
+		name = "NetworkDetailsTableViewController.m: 33";
 		rLen = 0;
-		rLoc = 3340;
+		rLoc = 975;
 		rType = 0;
-		vrLen = 2108;
-		vrLoc = 699;
+		vrLen = 1728;
+		vrLoc = 190;
 	};
 	8D1107310486CEB800E47090 /* MessedUpAkamai-Info.plist */ = {
 		uiCtxt = {

MessedUpAkamai.xcodeproj/project.pbxproj

 	archiveVersion = 1;
 	classes = {
 	};
-	objectVersion = 45;
+	objectVersion = 46;
 	objects = {
 
 /* Begin PBXBuildFile section */
 		28D7ACF80DDB3853001CB0EB /* MessedUpAkamaiViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* MessedUpAkamaiViewController.m */; };
 		8A28D72A12FE0C9D000F9A15 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A28D72912FE0C9D000F9A15 /* CFNetwork.framework */; };
 		8A28D7C612FE1F9B000F9A15 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A28D7C512FE1F9B000F9A15 /* Icon.png */; };
+		8ADFAAE212FED5D70019A5DA /* NetworkDetailsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8ADFAAE112FED5D70019A5DA /* NetworkDetailsTableViewController.m */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
 		32CA4F630368D1EE00C91783 /* MessedUpAkamai_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessedUpAkamai_Prefix.pch; sourceTree = "<group>"; };
 		8A28D72912FE0C9D000F9A15 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
 		8A28D7C512FE1F9B000F9A15 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
+		8ADFAAE012FED5D70019A5DA /* NetworkDetailsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkDetailsTableViewController.h; sourceTree = "<group>"; };
+		8ADFAAE112FED5D70019A5DA /* NetworkDetailsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NetworkDetailsTableViewController.m; sourceTree = "<group>"; };
+		8ADFAB9512FEECEF0019A5DA /* Entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Entitlements.plist; sourceTree = "<group>"; };
 		8D1107310486CEB800E47090 /* MessedUpAkamai-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "MessedUpAkamai-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 				1D3623250D0F684500981E51 /* MessedUpAkamaiAppDelegate.m */,
 				28D7ACF60DDB3853001CB0EB /* MessedUpAkamaiViewController.h */,
 				28D7ACF70DDB3853001CB0EB /* MessedUpAkamaiViewController.m */,
+				8ADFAAE012FED5D70019A5DA /* NetworkDetailsTableViewController.h */,
+				8ADFAAE112FED5D70019A5DA /* NetworkDetailsTableViewController.m */,
 			);
 			path = Classes;
 			sourceTree = "<group>";
 				29B97317FDCFA39411CA2CEA /* Resources */,
 				29B97323FDCFA39411CA2CEA /* Frameworks */,
 				19C28FACFE9D520D11CA2CBB /* Products */,
+				8ADFAB9512FEECEF0019A5DA /* Entitlements.plist */,
 			);
 			name = CustomTemplate;
 			sourceTree = "<group>";
 /* Begin PBXProject section */
 		29B97313FDCFA39411CA2CEA /* Project object */ = {
 			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0420;
+			};
 			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MessedUpAkamai" */;
-			compatibilityVersion = "Xcode 3.1";
+			compatibilityVersion = "Xcode 3.2";
 			developmentRegion = English;
 			hasScannedForEncodings = 1;
 			knownRegions = (
 				1D60589B0D05DD56006BFB54 /* main.m in Sources */,
 				1D3623260D0F684500981E51 /* MessedUpAkamaiAppDelegate.m in Sources */,
 				28D7ACF80DDB3853001CB0EB /* MessedUpAkamaiViewController.m in Sources */,
+				8ADFAAE212FED5D70019A5DA /* NetworkDetailsTableViewController.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CODE_SIGN_ENTITLEMENTS = "~/Projects/iPhone/MessedUpAkamai/Entitlements.plist";
 				COPY_PHASE_STRIP = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_OPTIMIZATION_LEVEL = 0;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CODE_SIGN_ENTITLEMENTS = "~/Projects/iPhone/MessedUpAkamai/Entitlements.plist";
 				COPY_PHASE_STRIP = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = MessedUpAkamai_Prefix.pch;
 			};
 			name = Release;
 		};
+		8ADFAB8E12FEEC710019A5DA /* Distribution */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = (
+					armv7,
+					armv6,
+				);
+				CODE_SIGN_ENTITLEMENTS = Entitlements.plist;
+				CODE_SIGN_IDENTITY = "iPhone Distribution";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 4.2;
+				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+				PROVISIONING_PROFILE = "";
+				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = 1;
+			};
+			name = Distribution;
+		};
+		8ADFAB8F12FEEC710019A5DA /* Distribution */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CODE_SIGN_ENTITLEMENTS = "~/Projects/iPhone/MessedUpAkamai/Entitlements.plist";
+				COPY_PHASE_STRIP = YES;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = MessedUpAkamai_Prefix.pch;
+				INFOPLIST_FILE = "MessedUpAkamai-Info.plist";
+				PRODUCT_NAME = MessedUpAkamai;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Distribution;
+		};
 		C01FCF4F08A954540054247B /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
+				ARCHS = (
+					armv7,
+					armv6,
+				);
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				GCC_C_LANGUAGE_STANDARD = c99;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				PREBINDING = NO;
+				IPHONEOS_DEPLOYMENT_TARGET = 4.2;
 				SDKROOT = iphoneos;
 				TARGETED_DEVICE_FAMILY = 1;
 			};
 		C01FCF5008A954540054247B /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
+				ARCHS = (
+					armv7,
+					armv6,
+				);
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				GCC_C_LANGUAGE_STANDARD = c99;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 4.2;
 				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
-				PREBINDING = NO;
 				SDKROOT = iphoneos;
 				TARGETED_DEVICE_FAMILY = 1;
 			};
 			buildConfigurations = (
 				1D6058940D05DD3E006BFB54 /* Debug */,
 				1D6058950D05DD3E006BFB54 /* Release */,
+				8ADFAB8F12FEEC710019A5DA /* Distribution */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 			buildConfigurations = (
 				C01FCF4F08A954540054247B /* Debug */,
 				C01FCF5008A954540054247B /* Release */,
+				8ADFAB8E12FEEC710019A5DA /* Distribution */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;