From 62d3f3be3f683ad24462ac7fe05c576233d8c222 Mon Sep 17 00:00:00 2001 From: michael pereira Date: Tue, 29 Mar 2011 11:49:16 +0200 Subject: Resource Controller fertig --- application/controllers/ResourceController.php | 174 +++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 application/controllers/ResourceController.php diff --git a/application/controllers/ResourceController.php b/application/controllers/ResourceController.php new file mode 100644 index 0000000..8ab1828 --- /dev/null +++ b/application/controllers/ResourceController.php @@ -0,0 +1,174 @@ +_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; + } + +} + + + + + + + + + + + -- cgit v1.2.3-55-g7522