Browse Source

realized i utterly botched the permissions and owners of the bootstrap, thankfully didnt brick anything because of it. cleaned up the 11.1 implementation. completely works end-to-end now

Kevin Bradley 5 years ago
parent
commit
70e4b1e11e

+ 1 - 1
Meridian/Meridian/build_time

@@ -1 +1 @@
-Thu, 05 Jul 2018 11:04:53 -0700
+Thu, 05 Jul 2018 12:16:55 -0700

BIN
Meridian/meridian.xcodeproj/project.xcworkspace/xcuserdata/kevinbradley.xcuserdatad/UserInterfaceState.xcuserstate


+ 54 - 5
Meridian/meridianTV/ViewController.m

@@ -39,7 +39,11 @@ typedef NS_ENUM(NSInteger, BSInstallType) {
     BSInstallTypeElectra,
 };
 
-@interface ViewController ()
+@interface ViewController () {
+    
+    BOOL _respringReady;
+    
+}
 
 
 @property (readwrite, assign) BSInstallType installMode; //0 = meridian 1 = electra
@@ -146,6 +150,9 @@ bool jailbreak_has_run = false;
         
     }
     */
+    
+    _respringReady = FALSE;
+    
     self.installMode = BSInstallTypeUnsupported;
     if (SYSTEM_VERSION_EQUAL_TO(@"10.2.2")){
         self.installMode = BSInstallTypeMeridian;
@@ -203,6 +210,19 @@ bool jailbreak_has_run = false;
     
 }
 
+- (void)setGoButtonTitle:(NSString *)title {
+    
+    dispatch_async(dispatch_get_main_queue(), ^{
+  
+        [self.goButton setTitle:title forState:UIControlStateNormal];
+        [self.goButton setTitle:title forState:UIControlStateDisabled];
+        [self.goButton setTitle:title forState:UIControlStateFocused];
+        
+    });
+    
+}
+
+
 - (void)viewDidLoad {
     [super viewDidLoad];
     
@@ -596,9 +616,26 @@ void log_message(NSString *message) {
 
 - (IBAction)doit:(id)sender {
     
+    
+    if (_respringReady) {
+        
+        
+        [self writeText:@"Respringing please wait..."];
+        
+        [NSTask launchedTaskWithLaunchPath:@"/usr/bin/killall" arguments:@[@"-9", @"backboardd"]];
+        
+        
+        return;
+        
+        
+    }
+    
     NSLog(@"DO IT!");
     
     [self.goButton setEnabled:NO];
+    [self.goButton setHidden:YES];
+    
+    [self writeText:@"Starting jailbreak..."];
     
     currentViewController = self;
     
@@ -616,16 +653,27 @@ void log_message(NSString *message) {
         
         int jailbreakstatus = begin_fun(tfp0, user_client, shouldEnableTweaks);
         if (jailbreakstatus == 0){
+            
+            [self setGoButtonTitle:@"Respring"];
+            
             dispatch_async(dispatch_get_main_queue(), ^{
-                [self.goButton setTitle:@"Jailbroken" forState:UIControlStateNormal];
                 
+                //[self.goButton setTitle:@"Jailbroken" forState:UIControlStateNormal];
+                
+                [self writeText:@"\nFREEEEEEEEDOM!!!!!\n"];
+                [self writeText:@"\nPlease select respring to continue!\n"];
+                [self.goButton setEnabled:TRUE];
+                [self.goButton setHidden:FALSE];
+                _respringReady = TRUE;
+                /*
                 UIAlertController *dropbearRunning = [UIAlertController alertControllerWithTitle:@"Dropbear Running" message:@"Dropbear is now running! Enjoy." preferredStyle:UIAlertControllerStyleAlert];
                 [dropbearRunning addAction:[UIAlertAction actionWithTitle:@"Exit" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
                     [dropbearRunning dismissViewControllerAnimated:YES completion:nil];
                     //exit(0);
-                    [NSTask launchedTaskWithLaunchPath:@"/jb/usr/bin/killall" arguments:@[@"-9", @"backboardd"]];
+                    [NSTask launchedTaskWithLaunchPath:@"/usr/bin/killall" arguments:@[@"-9", @"backboardd"]];
                 }]];
                 [self presentViewController:dropbearRunning animated:YES completion:nil];
+                 */
             });
         } else if (jailbreakstatus == -1) {
             dispatch_async(dispatch_get_main_queue(), ^{
@@ -645,7 +693,8 @@ void log_message(NSString *message) {
             });
         }
         
-        NSLog(@" ♫ KPP never bothered me anyway... ♫ ");
+        //NSLog(@" ♫ KPP never bothered me anyway... ♫ ");
+        [self writeText:@"\n ♫ KPP never bothered me anyway... ♫ \n"];
     });
 }
 
@@ -666,7 +715,7 @@ void log_message(NSString *message) {
 - (void)installingNitoTV {
     dispatch_async(dispatch_get_main_queue(), ^{
         //[self.goButton setTitle:@"Installing Cydia" forState:UIControlStateNormal];
-        [self writeText:@"Installing nitoTV"];
+        [self writeText:@"Installing nitoTV\n"];
     });
 }
 

BIN
Meridian/meridianTV/bootstrap.tar.gz


+ 5 - 4
Meridian/meridianTV/electra/the fun part/bootstrap.c

@@ -77,8 +77,8 @@ void extract_bootstrap() {
     
     int bootstrapped = open("/.bootstrapped_electra", O_RDONLY);
     if (bootstrapped != -1) {
-        close(bootstrapped);
-        return post_bootstrap(false);
+        //close(bootstrapped);
+       // return post_bootstrap(false);
     }
     close(bootstrapped);
     
@@ -123,7 +123,7 @@ void extract_bootstrap() {
     
     //printf("[bootstrapper] extracted bootstrap to / \n");
     writeMessage("[bootstrapper] extracted bootstrap to / \n");
-    post_bootstrap(true);
+    post_bootstrap(false);
 }
 
 void post_bootstrap(const bool runUICache) {
@@ -155,7 +155,8 @@ void post_bootstrap(const bool runUICache) {
     close(rv);
     */
    
-    
+    posix_spawn(&pd, "/bin/bash", NULL, NULL, (char **)&(const char*[]){ "bash", "/usr/libexec/nito/firmware.sh", NULL }, NULL);
+    waitpid(pd, NULL, 0);
     
     posix_spawn(&pd, "/bin/bash", NULL, NULL, (char **)&(const char*[]){ "bash", "/Library/dpkg/info/openssh.postinst", NULL }, NULL);
     waitpid(pd, NULL, 0);