summaryrefslogblamecommitdiffstats
path: root/application/controllers/ResourceController.php
blob: 8ab1828ca4cfbee172a823a839b35af48b924d8e (plain) (tree)













































































































































































                                                                                                                                                     
<?php

class ResourceController extends Zend_Controller_Action
{

	private $thisSession;

	public function init()
	{
		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender();
		
		//TODO Error Messages if something failed
		
		$alphasessionID = $this->_request->getParam('alpha');
		$session = new Application_Model_Session();
		$sm = new Application_Model_SessionMapper();
		$result = $sm->findBy('alphasessionID',$alphasessionID);
		# print_a($result);
		$this->thisSession = $session->setOptions($result[0]);
		$this->thisSession->setID($result[0]['sessionID']);
	}

	public function indexAction()
	{
		 
		 
	}

	public function getinitramfsAction()
	{

		$bootosID = $this->thisSession->getBootosID();

		if(is_dir("../resources/bootos/$bootosID/initramfs/") && is_numeric($bootosID)){
			 
			header('Content-Type: application/x-gzip');
			$content_disp = ( ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']) == 'IE') ? 'inline' : 'attachment';
			header('Content-Disposition:  ' . $content_disp . '; filename="initramfs"');
			header('Pragma: no-cache');
			header('Expires: 0');
			 
			// create file.
			chdir("../resources/bootos/$bootosID/initramfs/");
			$initname = array_pop(scandir("./"));
			
			passthru( "cat ".$initname);
		}
	}

	public function getconfigAction()
	{
		$bootmenuentryID = $this->thisSession->getBootmenuentryID();

		$bootmenuentry = new Application_Model_BootMenuEntries();
		$bmm = new Application_Model_BootMenuEntriesMapper();
		$bmm->find($bootmenuentryID,$bootmenuentry);
		# print_a($bootmenuentry);
		
		$configID = $bootmenuentry->getConfigID();
		 
		if(is_dir("../resources/config/$configID/config/") && is_numeric($configID)){
			 
			header('Content-Type: application/x-gzip');
			$content_disp = ( ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']) == 'IE') ? 'inline' : 'attachment';
			header('Content-Disposition:  ' . $content_disp . '; filename="config.tgz"');
			header('Pragma: no-cache');
			header('Expires: 0');
			 
			// create the gzipped tarfile.
			chdir("../resources/config/$configID/config/");
			passthru( "tar cz ./");
		}
	}

	public function getkernelAction()
	{
		$bootosID = $this->thisSession->getBootosID();

		if(is_dir("../resources/bootos/$bootosID/kernel/") && is_numeric($bootosID)){
			 
			header('Content-Type: application/x-gzip');
			$content_disp = ( ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']) == 'IE') ? 'inline' : 'attachment';
			header('Content-Disposition:  ' . $content_disp . '; filename="kernel"');
			header('Pragma: no-cache');
			header('Expires: 0');
			 
			// create the gzipped tarfile.
			chdir("../resources/bootos/$bootosID/kernel/");
			$kernelname = array_pop(scandir("./"));
			
			passthru( "cat ". $kernelname);
		}
	}

	public function getkclAction()
	{
		$bmeID = $this->thisSession->getBootmenuentryID();

		if(is_numeric($bmeID)){
			
			$bmemapper = new Application_Model_BootMenuEntriesMapper();
			$bme = new Application_Model_BootMenuEntries();
			$bmemapper->find($bmeID,$bme);
				
			header('Content-Type: text/html');
			$content_disp = ( ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']) == 'IE') ? 'inline' : 'attachment';
			header('Content-Disposition:  ' . $content_disp . '; filename="kcl.txt"');
			header('Pragma: no-cache');
			header('Expires: 0');
			
			if($bme->getKcl() != null)
				$result = $bme->getKcl() . " " . $bme->getKclappend();
			else 
				$result = $bme->getKclappend();
			
			echo $result;
			

		}

	}

	public function getbootmenuentryAction()
	{
		// obsolete function (now only for debugging)
		// after selecting the BootOS it will be saved in session
		// so getkclAction, getkernelAction, getconfigAction and getinitramfsAction
		// can be called with session-identifier
			$bootmenuentryID = $this->_request->getParam('bootmenuentryID');
			$bootosID = $this->_request->getParam('bootosID');
			
			$this->thisSession->setBootosID($bootosID)->setBootmenuentryID($bootmenuentryID);
			$sessionMapper = new Application_Model_SessionMapper();
			$sessionMapper->save($this->thisSession);
			
			if($this->thisSession->getBootmenuentryID() != null){
				header('Content-Type: application/json');
				$return_val =
				array(
	   					'info' => 'This function is for debugging purpose only',
	   					'kernel' => $this->generateURL('getkernel', 'alpha', $_SESSION['alphasessionID'], "kernel"), 
	   					'initramfs' => $this->generateURL('getinitramfs', 'alpha', $_SESSION['alphasessionID'], "initramfs"),
	   					'kcl' => $this->generateURL('getkcl', 'alpha', $_SESSION['alphasessionID'], "kcl.txt"),
	   					'config' => $_SESSION['alphasessionID']
				);
				echo json_encode($return_val);
			}
			else{
				echo json_encode(
				array(	'info' => 'This function is for debugging purpose only',
		   				'error'=> 'your session is out of date')
				);
			}
	}

	private function generateURL($action, $varname, $varvalue, $filename){
		$path = '/dev/resource/'. $action .'/' . $varname .'/' . $varvalue .'/file/' . $filename  ;
		$path = "http://" . $_SERVER['SERVER_NAME'] . $path;
		return $path;
	}

}