예제 #1
0
     }
 }
 // Import configuration
 masterSetup();
 $retArray = array('status' => true, 'message' => null);
 $enabled = AKFactory::get('kickstart.enabled', false);
 if ($enabled) {
     $task = getQueryParam('task');
     switch ($task) {
         case 'ping':
             // ping task - realy does nothing!
             $timer = AKFactory::getTimer();
             $timer->enforce_min_exec_time();
             break;
         case 'startRestore':
             AKFactory::nuke();
             // Reset the factory
             // Let the control flow to the next step (the rest of the code is common!!)
         // Reset the factory
         // Let the control flow to the next step (the rest of the code is common!!)
         case 'stepRestore':
             $engine = AKFactory::getUnarchiver();
             // Get the engine
             $observer = new RestorationObserver();
             // Create a new observer
             $engine->attach($observer);
             // Attach the observer
             $engine->tick();
             $ret = $engine->getStatusArray();
             if ($ret['Error'] != '') {
                 $retArray['status'] = false;
예제 #2
0
 /**
  * Set up the Akeeba Restore engine for the current archive
  */
 private function setUpAkeebaRestore()
 {
     $config = Factory::getConfiguration();
     $maxTime = Factory::getTimer()->getTimeLeft();
     $maxTime = floor($maxTime);
     $maxTime = max(2, $maxTime);
     $statistics = Factory::getStatistics();
     $stat = $statistics->getRecord();
     $backup_parts = Factory::getStatistics()->get_all_filenames($stat, false);
     $filePath = array_shift($backup_parts);
     $specialDirs = Platform::getInstance()->get_stock_directories();
     $tmpPath = $specialDirs['[SITETMP]'];
     $archiver = Factory::getArchiverEngine();
     $extension = $archiver->getExtension();
     $extension = strtoupper($extension);
     $extension = ltrim($extension, '.');
     $ksOptions = array('kickstart.tuning.max_exec_time' => $maxTime, 'kickstart.tuning.run_time_bias' => $config->get('akeeba.tuning.run_time_bias', 75), 'kickstart.tuning.min_exec_time' => '0', 'kickstart.procengine' => 'direct', 'kickstart.setup.sourcefile' => $filePath, 'kickstart.setup.destdir' => $tmpPath, 'kickstart.setup.restoreperms' => '0', 'kickstart.setup.filetype' => $extension, 'kickstart.setup.dryrun' => '1', 'kickstart.jps.password' => $config->get('engine.archiver.jps.key', '', false));
     \AKFactory::nuke();
     foreach ($ksOptions as $k => $v) {
         \AKFactory::set($k, $v);
     }
     \AKFactory::set('kickstart.enabled', true);
 }
예제 #3
0
	$enabled = AKFactory::get('kickstart.enabled', false);

	if($enabled)
	{
		$task = getQueryParam('task');

		switch($task)
		{
			case 'ping':
				// ping task - realy does nothing!
				$timer =& AKFactory::getTimer();
				$timer->enforce_min_exec_time();
				break;

			case 'startRestore':
				AKFactory::nuke(); // Reset the factory

				// Let the control flow to the next step (the rest of the code is common!!)

			case 'stepRestore':
				$engine =& AKFactory::getUnarchiver(); // Get the engine
				$observer = new RestorationObserver(); // Create a new observer
				$engine->attach($observer); // Attach the observer
				$engine->tick();
				$ret = $engine->getStatusArray();

				if( $ret['Error'] != '' )
				{
					$retArray['status'] = false;
					$retArray['done'] = true;
					$retArray['message'] = $ret['Error'];
예제 #4
0
 function doAjax()
 {
     $ajax = $this->getState('ajax');
     switch ($ajax) {
         // FTP Connection test for DirectFTP
         case 'testftp':
             // Grab request parameters
             $config = array('host' => $this->input->get('host', '', 'none', 2), 'port' => $this->input->get('port', 21, 'int'), 'user' => $this->input->get('user', '', 'none', 2), 'pass' => $this->input->get('pass', '', 'none', 2), 'initdir' => $this->input->get('initdir', '', 'none', 2), 'usessl' => $this->input->get('usessl', 'cmd') == 'true', 'passive' => $this->input->get('passive', 'cmd') == 'true');
             // Perform the FTP connection test
             $test = new AEArchiverDirectftp();
             $test->initialize('', $config);
             $errors = $test->getError();
             if (empty($errors)) {
                 $result = true;
             } else {
                 $result = $errors;
             }
             break;
         case 'restoreFilesPing':
         case 'restoreFilesStart':
         case 'restoreFilesStep':
         case 'restoreFilesFinalize':
             global $restoration_setup;
             $restoration_setup = $this->getRestorationParameters();
             define('KICKSTART', 1);
             include_once JPATH_COMPONENT_ADMINISTRATOR . '/restore.php';
             akeebaTinyHackForRestorationObserver();
             masterSetup();
             $retArray = array('status' => true, 'message' => null);
             switch ($ajax) {
                 case 'restoreFilesPing':
                     // ping task - realy does nothing!
                     $timer = AKFactory::getTimer();
                     $timer->enforce_min_exec_time();
                     break;
                 case 'restoreFilesStart':
                     AKFactory::nuke();
                     // Reset the factory
                 // Reset the factory
                 case 'restoreFilesStep':
                     $config = JFactory::getConfig();
                     if (version_compare(JVERSION, '3.0', 'ge')) {
                         $tmp_path = $config->get('tmp_path', '');
                     } else {
                         $tmp_path = $config->getValue('tmp_path', '');
                     }
                     $override = array('rename_dirs' => array('sql' => rtrim($tmp_path, '/\\') . '/sql'));
                     $engine = AKFactory::getUnarchiver($override);
                     // Get the engine
                     $observer = new RestorationObserver();
                     // Create a new observer
                     $engine->attach($observer);
                     // Attach the observer
                     $engine->tick();
                     $ret = $engine->getStatusArray();
                     if ($ret['Error'] != '') {
                         $retArray['status'] = false;
                         $retArray['done'] = true;
                         $retArray['message'] = $ret['Error'];
                     } elseif (!$ret['HasRun']) {
                         $retArray['files'] = $observer->filesProcessed;
                         $retArray['bytesIn'] = $observer->compressedTotal;
                         $retArray['bytesOut'] = $observer->uncompressedTotal;
                         $retArray['status'] = true;
                         $retArray['done'] = true;
                     } else {
                         $retArray['files'] = $observer->filesProcessed;
                         $retArray['bytesIn'] = $observer->compressedTotal;
                         $retArray['bytesOut'] = $observer->uncompressedTotal;
                         $retArray['status'] = true;
                         $retArray['done'] = false;
                         $retArray['factory'] = AKFactory::serialize();
                     }
                     break;
                 case 'restoreFilesFinalize':
                     $root = AKFactory::get('kickstart.setup.destdir');
                     // Remove the sql dump directory
                     $config = JFactory::getConfig();
                     if (version_compare(JVERSION, '3.0', 'ge')) {
                         $tmp_path = $config->get('tmp_path', '');
                     } else {
                         $tmp_path = $config->getValue('tmp_path', '');
                     }
                     $sqldir = rtrim($tmp_path, '/\\') . '/sql';
                     recursive_remove_directory($sqldir);
                     break;
             }
             return $retArray;
             break;
         case 'dbRestoreStart':
             $this->dbRestorationInit();
         case 'dbRestore':
             $result = $this->dbRestore();
             break;
             // Unrecognized AJAX task
         // Unrecognized AJAX task
         default:
             $result = false;
             break;
     }
     return $result;
 }