summaryrefslogtreecommitdiffstats
path: root/application/modules/ipxe/controllers/ResourceController.php
diff options
context:
space:
mode:
Diffstat (limited to 'application/modules/ipxe/controllers/ResourceController.php')
-rw-r--r--application/modules/ipxe/controllers/ResourceController.php385
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');
+ }
+ }
+
}