diff options
Diffstat (limited to 'application/modules/ipxe/controllers/ResourceController.php')
| -rw-r--r-- | application/modules/ipxe/controllers/ResourceController.php | 385 |
1 files changed, 191 insertions, 194 deletions
diff --git a/application/modules/ipxe/controllers/ResourceController.php b/application/modules/ipxe/controllers/ResourceController.php index 0f5988a..c33ed45 100644 --- a/application/modules/ipxe/controllers/ResourceController.php +++ b/application/modules/ipxe/controllers/ResourceController.php @@ -1,199 +1,196 @@ -<?php +<? php /* * Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg - * This program is free software distributed under the GPL version 2. - * See http://gpl.openslx.org/ - * - * If you have any feedback please consult http://feedback.openslx.org/ and - * send your suggestions, praise, or complaints to feedback@openslx.org - * - * General information about OpenSLX can be found at http://openslx.org/ - */ - -class Ipxe_ResourceController extends Zend_Controller_Action -{ - - private $session; - - public function init() - { - - $this->_helper->layout->disableLayout(); - $this->_helper->viewRenderer->setNoRender(); - - $this->session = new Application_Model_Session(); - $sessionMapper = new Application_Model_SessionMapper(); - - //TODO Error Messages if something failed - $alphaID = $this->_request->getParam('alpha'); - - if(isset($alphaID)){ - $alphasessionID = $alphaID; - $result = $sessionMapper->findBy(array('alphasessionID' => $alphasessionID),true); - # print_a($result); - $this->session = $this->session->setOptions($result[0]); - $this->session->setID($result[0]['sessionID']); - } - - $bootmenuntryID = $this->_request->getParam('bme'); - - if(isset($bootmenuntryID) && isset($this->session)){ - //TODO check if allowed - $bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper(); - $bootmenuentry = new Application_Model_BootMenuEntries(); - $bootmenuentriesMapper->find($bootmenuntryID,$bootmenuentry); - - $this->session->setBootmenuentryID($bootmenuntryID); - $this->session->setBootosID($bootmenuentry->getBootosID()); - $sessionMapper->save($this->session); - } - } - - public function getvesamenuconfigAction(){ - - 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="vesamenu.conf"'); - header('Pragma: no-cache'); - header('Expires: 0'); - - $vesamenuView = new Zend_View(); - $vesamenuView->addScriptPath(APPLICATION_PATH.'/modules/ipxe/views/scripts/resource/'); - - $vesamenuView->host = $_SERVER['HTTP_HOST']; - $vesamenuView->error = $this->_request->getParam('error'); - - if (isset($this->session)){ - $vesamenuView->alphaID = $this->session->getAlphasessionID(); - - if ($this->session->getPersonID() != null){ - $personMapper = new Application_Model_PersonMapper(); - $person = $personMapper->find($this->session->getPersonID()); - $vesamenuView->name = $person->getName(); - $vesamenuView->firstname = $person->getFirstname(); - $vesamenuView->loggedin = true; - }else{ - $vesamenuView->loggedin = false; - } - - if($this->session->getMembershipID() != null){ - $groupMapper = new Application_Model_GroupMapper(); - $membershipMapper = new Application_Model_MembershipMapper(); - $membership = $membershipMapper->find($this->session->getMembershipID()); - $vesamenuView->group = $groupMapper->find($membership->getGroupID())->getTitle(); - $_SESSION['userIDs']['membershipID'] = $this->session->getMembershipID(); - $_SESSION['userIDs']['groupID'] = $membership->getGroupID(); - } - - if ($this->session->getPersonID() != null && $this->session->getMembershipID() == null ){ - $groupMapper = new Application_Model_GroupMapper(); - $roleMapper = new Application_Model_RoleMapper(); - $membershipMapper = new Application_Model_MembershipMapper(); - $memberships = $membershipMapper->findBy(array('personID' => $this->session->getPersonID()),true); - - if(isset($memberships)) { - foreach($memberships as $membership) { - $group = $groupMapper->find($membership['groupID']); - $role = $roleMapper->find($membership['roleID']); - $membershipList[] = array( - 'membershipID' => $membership['membershipID'], - 'group' => $group->getTitle(), - 'role' => $role->getTitle() - ); - } - $vesamenuView->memberships = $membershipList; - }else{ - $vesamenuView->memberships = null; - } - - $vesamenuView->action = "selectmembership"; - - } - - // Request Bootmenu - $_SESSION['alphasessionID'] = $this->session->getAlphasessionID(); - $pbsFilter = new Pbs_Filter(); - $bootmenuID = $pbsFilter->evaluate(); - - if($bootmenuID != null){ - $bootmenuMapper = new Application_Model_BootMenuMapper(); - $bm = $bootmenuMapper->find($bootmenuID); - $vesamenuView->title = $bm->getTitle(); - $vesamenuView->startcounter = $bm->getStartcounter(); - - $bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper(); - $res = $bootmenuentriesMapper->findBy(array('bootmenuID' => $bootmenuID),false); - $vesamenuView->bmelist = $res; - }else{ - $vesamenuView->bmelist = null; - } - }else{ - $vesamenuView->serialnumber = $this->_request->getParam('serialnumber'); - $vesamenuView->mac = $this->_request->getParam('mac'); - if($vesamenuView->error == "serial"){ - $vesamenuView->error = "serial"; - }else{ - $vesamenuView->error = "session"; - } - } - - $vesamenu = $vesamenuView->render('getvesamenu.phtml'); - - header("Content-Length: ".(strlen($vesamenu))); - - echo $vesamenu; - } - - public function getkernelAction(){ - - //TODO session & bme error - $bootosID = $this->session->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("./")); - - header("Content-Length: ".filesize(getcwd()."/".$kernelname)); - - passthru( "cat ". $kernelname); - }else{ - header('HTTP/1.0 404 Not Found'); - } - } - - public function getinitramfsAction() - { - - $bootosID = $this->session->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("./")); - - header("Content-Length: ".filesize(getcwd()."/".$initname)); - - passthru( "cat ".$initname); - }else{ - header('HTTP/1.0 404 Not Found'); - } - } - +* This program is free software distributed under the GPL version 2. +* See http://gpl.openslx.org/ +* +* If you have any feedback please consult http://feedback.openslx.org/ and +* send your suggestions, praise, or complaints to feedback@openslx.org +* +* General information about OpenSLX can be found at http://openslx.org/ +*/ + +class Ipxe_ResourceController extends Zend_Controller_Action { + + private $session; + + public function init() { + + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + $this->session = new Application_Model_Session(); + $sessionMapper = new Application_Model_SessionMapper(); + + //TODO Error Messages if something failed + $alphaID = $this->_request->getParam('alpha'); + + if(isset($alphaID)) { + $alphasessionID = $alphaID; + $result = $sessionMapper->findBy(array('alphasessionID' => $alphasessionID), true); +# print_a($result); + $this->session = $this->session->setOptions($result[0]); + $this->session->setID($result[0]['sessionID']); + } + + $bootmenuntryID = $this->_request->getParam('bme'); + + if(isset($bootmenuntryID) && isset($this->session)) { + //TODO check if allowed + $bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper(); + $bootmenuentry = new Application_Model_BootMenuEntries(); + $bootmenuentriesMapper->find($bootmenuntryID, $bootmenuentry); + + $this->session->setBootmenuentryID($bootmenuntryID); + $this->session->setBootosID($bootmenuentry->getBootosID()); + $sessionMapper->save($this->session); + } + } + + public function getvesamenuconfigAction() { + + 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="vesamenu.conf"'); + header('Pragma: no-cache'); + header('Expires: 0'); + + $vesamenuView = new Zend_View(); + $vesamenuView->addScriptPath(APPLICATION_PATH.'/modules/ipxe/views/scripts/resource/'); + + $vesamenuView->host = $_SERVER['HTTP_HOST']; + $vesamenuView->error = $this->_request->getParam('error'); + + if (isset($this->session)) { + $vesamenuView->alphaID = $this->session->getAlphasessionID(); + + if ($this->session->getPersonID() != null) { + $personMapper = new Application_Model_PersonMapper(); + $person = $personMapper->find($this->session->getPersonID()); + $vesamenuView->name = $person->getName(); + $vesamenuView->firstname = $person->getFirstname(); + $vesamenuView->loggedin = true; + } else { + $vesamenuView->loggedin = false; + } + + if($this->session->getMembershipID() != null) { + $groupMapper = new Application_Model_GroupMapper(); + $membershipMapper = new Application_Model_MembershipMapper(); + $membership = $membershipMapper->find($this->session->getMembershipID()); + $vesamenuView->group = $groupMapper->find($membership->getGroupID())->getTitle(); + $_SESSION['userIDs']['membershipID'] = $this->session->getMembershipID(); + $_SESSION['userIDs']['groupID'] = $membership->getGroupID(); + } + + if ($this->session->getPersonID() != null && $this->session->getMembershipID() == null ) { + $groupMapper = new Application_Model_GroupMapper(); + $roleMapper = new Application_Model_RoleMapper(); + $membershipMapper = new Application_Model_MembershipMapper(); + $memberships = $membershipMapper->findBy(array('personID' => $this->session->getPersonID()), true); + + if(isset($memberships)) { + foreach($memberships as $membership) { + $group = $groupMapper->find($membership['groupID']); + $role = $roleMapper->find($membership['roleID']); + $membershipList[] = array( + 'membershipID' => $membership['membershipID'], + 'group' => $group->getTitle(), + 'role' => $role->getTitle() + ); + } + $vesamenuView->memberships = $membershipList; + } else { + $vesamenuView->memberships = null; + } + + $vesamenuView->action = "selectmembership"; + + } + + // Request Bootmenu + $_SESSION['alphasessionID'] = $this->session->getAlphasessionID(); + $pbsFilter = new Pbs_Filter(); + $bootmenuID = $pbsFilter->evaluate(); + + if($bootmenuID != null) { + $bootmenuMapper = new Application_Model_BootMenuMapper(); + $bm = $bootmenuMapper->find($bootmenuID); + $vesamenuView->title = $bm->getTitle(); + $vesamenuView->startcounter = $bm->getStartcounter(); + + $bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper(); + $res = $bootmenuentriesMapper->findBy(array('bootmenuID' => $bootmenuID), false); + $vesamenuView->bmelist = $res; + } else { + $vesamenuView->bmelist = null; + } + } else { + $vesamenuView->serialnumber = $this->_request->getParam('serialnumber'); + $vesamenuView->mac = $this->_request->getParam('mac'); + if($vesamenuView->error == "serial") { + $vesamenuView->error = "serial"; + } else { + $vesamenuView->error = "session"; + } + } + + $vesamenu = $vesamenuView->render('getvesamenu.phtml'); + + header("Content-Length: ".(strlen($vesamenu))); + + echo $vesamenu; + } + + public function getkernelAction() { + + //TODO session & bme error + $bootosID = $this->session->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("./")); + + header("Content-Length: ".filesize(getcwd()."/".$kernelname)); + + passthru( "cat ". $kernelname); + } else { + header('HTTP/1.0 404 Not Found'); + } + } + + public function getinitramfsAction() { + + $bootosID = $this->session->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("./")); + + header("Content-Length: ".filesize(getcwd()."/".$initname)); + + passthru( "cat ".$initname); + } else { + header('HTTP/1.0 404 Not Found'); + } + } + } |
