Browse Source

Expose jailbreak check

We want to be able to use this to populate feedback diagnostic data.
Adam Pritchard 9 years ago
parent
commit
cbb772ed2a

+ 2 - 2
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel.xcodeproj/project.pbxproj

@@ -18,7 +18,7 @@
 		6685BDD41E2EBB1000F0E414 /* GoPsi.objc.h in Headers */ = {isa = PBXBuildFile; fileRef = 6685BDD21E2EBB1000F0E414 /* GoPsi.objc.h */; };
 		6685BDD41E2EBB1000F0E414 /* GoPsi.objc.h in Headers */ = {isa = PBXBuildFile; fileRef = 6685BDD21E2EBB1000F0E414 /* GoPsi.objc.h */; };
 		6685BDD51E2EBB1000F0E414 /* Universe.objc.h in Headers */ = {isa = PBXBuildFile; fileRef = 6685BDD31E2EBB1000F0E414 /* Universe.objc.h */; };
 		6685BDD51E2EBB1000F0E414 /* Universe.objc.h in Headers */ = {isa = PBXBuildFile; fileRef = 6685BDD31E2EBB1000F0E414 /* Universe.objc.h */; };
 		6685BDD91E300AC200F0E414 /* strip-frameworks.sh in Resources */ = {isa = PBXBuildFile; fileRef = 6685BDD81E300AC200F0E414 /* strip-frameworks.sh */; };
 		6685BDD91E300AC200F0E414 /* strip-frameworks.sh in Resources */ = {isa = PBXBuildFile; fileRef = 6685BDD81E300AC200F0E414 /* strip-frameworks.sh */; };
-		66BAD3351E525FBC00CD06DE /* JailbreakCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 66BAD3331E525FBC00CD06DE /* JailbreakCheck.h */; };
+		66BAD3351E525FBC00CD06DE /* JailbreakCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 66BAD3331E525FBC00CD06DE /* JailbreakCheck.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		66BAD3361E525FBC00CD06DE /* JailbreakCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 66BAD3341E525FBC00CD06DE /* JailbreakCheck.m */; };
 		66BAD3361E525FBC00CD06DE /* JailbreakCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 66BAD3341E525FBC00CD06DE /* JailbreakCheck.m */; };
 		66BDB02A1DA6BFCC0079384C /* PsiphonTunnel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 66BDB0201DA6BFCC0079384C /* PsiphonTunnel.framework */; };
 		66BDB02A1DA6BFCC0079384C /* PsiphonTunnel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 66BDB0201DA6BFCC0079384C /* PsiphonTunnel.framework */; };
 		66BDB02F1DA6BFCC0079384C /* PsiphonTunnelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 66BDB02E1DA6BFCC0079384C /* PsiphonTunnelTests.m */; };
 		66BDB02F1DA6BFCC0079384C /* PsiphonTunnelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 66BDB02E1DA6BFCC0079384C /* PsiphonTunnelTests.m */; };
@@ -236,8 +236,8 @@
 			isa = PBXHeadersBuildPhase;
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
-				66BAD3351E525FBC00CD06DE /* JailbreakCheck.h in Headers */,
 				6685BDCB1E2E882800F0E414 /* ref.h in Headers */,
 				6685BDCB1E2E882800F0E414 /* ref.h in Headers */,
+				66BAD3351E525FBC00CD06DE /* JailbreakCheck.h in Headers */,
 				4E89F7FF1E2ED3CE00005F4C /* LookupIPv6.h in Headers */,
 				4E89F7FF1E2ED3CE00005F4C /* LookupIPv6.h in Headers */,
 				662659271DD270E900872F6C /* Reachability.h in Headers */,
 				662659271DD270E900872F6C /* Reachability.h in Headers */,
 				66BDB05D1DC26CCC0079384C /* SBJson4StreamParser.h in Headers */,
 				66BDB05D1DC26CCC0079384C /* SBJson4StreamParser.h in Headers */,

+ 5 - 1
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/JailbreakCheck/JailbreakCheck.h

@@ -22,4 +22,8 @@
  *
  *
  */
  */
 
 
-BOOL isDeviceJailbroken();
+@interface JailbreakCheck : NSObject
+
++ (BOOL)isDeviceJailbroken;
+
+@end

+ 7 - 1
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/JailbreakCheck/JailbreakCheck.m

@@ -27,6 +27,10 @@
 #import <Foundation/Foundation.h>
 #import <Foundation/Foundation.h>
 #import "UIKit/UIKit.h"
 #import "UIKit/UIKit.h"
 #import <sys/stat.h>
 #import <sys/stat.h>
+#import "JailbreakCheck.h"
+
+
+@implementation JailbreakCheck
 
 
 
 
 BOOL checkReadWritePermissions()
 BOOL checkReadWritePermissions()
@@ -116,10 +120,12 @@ BOOL checkJailbreakFiles()
     return FALSE;
     return FALSE;
 }
 }
 
 
-BOOL isDeviceJailbroken()
++ (BOOL)isDeviceJailbroken
 {
 {
     return
     return
         checkJailbreakSymlinks()
         checkJailbreakSymlinks()
         || checkJailbreakFiles()
         || checkJailbreakFiles()
         || checkReadWritePermissions();
         || checkReadWritePermissions();
 }
 }
+
+@end

+ 1 - 0
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/PsiphonTunnel.h

@@ -24,6 +24,7 @@
 
 
 #import <UIKit/UIKit.h>
 #import <UIKit/UIKit.h>
 #import "Reachability.h"
 #import "Reachability.h"
+#import "JailbreakCheck.h"
 
 
 
 
 //! Project version number for PsiphonTunnel.
 //! Project version number for PsiphonTunnel.

+ 1 - 1
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/PsiphonTunnel.m

@@ -292,7 +292,7 @@
     NSString *systemVersion = [[[UIDevice currentDevice]systemVersion] stringByReplacingOccurrencesOfString:@"_" withString:@"-"];
     NSString *systemVersion = [[[UIDevice currentDevice]systemVersion] stringByReplacingOccurrencesOfString:@"_" withString:@"-"];
     // "unjailbroken"/"jailbroken"
     // "unjailbroken"/"jailbroken"
     NSString *jailbroken = @"unjailbroken";
     NSString *jailbroken = @"unjailbroken";
-    if (isDeviceJailbroken()) {
+    if ([JailbreakCheck isDeviceJailbroken]) {
         jailbroken = @"jailbroken";
         jailbroken = @"jailbroken";
     }
     }
     // Like "com.psiphon3.browser"
     // Like "com.psiphon3.browser"

+ 9 - 0
MobileLibrary/iOS/SampleApps/TunneledWebRequest/TunneledWebRequest/ViewController.swift

@@ -42,6 +42,15 @@ class ViewController: UIViewController {
             NSLog("psiphonTunnel.start returned false")
             NSLog("psiphonTunnel.start returned false")
             return
             return
         }
         }
+        
+        // The Psiphon Library exposes reachability functions, which can be used for detecting internet status.
+        let reachability = Reachability.forInternetConnection()
+        let networkStatus = reachability?.currentReachabilityStatus()
+        NSLog("Internet is reachable? \(networkStatus != NotReachable)")
+        
+        // The Psiphon Library exposes a function to test if the device is jailbroken. 
+        let jailbroken = JailbreakCheck.isDeviceJailbroken()
+        NSLog("Device is jailbroken? \(jailbroken)")
     }
     }
     
     
     override func didReceiveMemoryWarning() {
     override func didReceiveMemoryWarning() {