summaryrefslogtreecommitdiffstats
path: root/application/modules/ipxe
diff options
context:
space:
mode:
authorSebastian Schmelzer2012-01-11 14:36:35 +0100
committerSebastian Schmelzer2012-01-11 14:36:35 +0100
commitfca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e (patch)
tree6e6aaf749f34db8c7c7153c23ef85c57187430bb /application/modules/ipxe
parentAPI: mit addBootos kann man nun auch editieren (diff)
downloadpbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.tar.gz
pbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.tar.xz
pbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.zip
format source files
Diffstat (limited to 'application/modules/ipxe')
-rw-r--r--application/modules/ipxe/controllers/AuthController.php425
-rw-r--r--application/modules/ipxe/controllers/ResourceController.php385
2 files changed, 401 insertions, 409 deletions
diff --git a/application/modules/ipxe/controllers/AuthController.php b/application/modules/ipxe/controllers/AuthController.php
index e6f1336..b59c146 100644
--- a/application/modules/ipxe/controllers/AuthController.php
+++ b/application/modules/ipxe/controllers/AuthController.php
@@ -1,218 +1,213 @@
-<?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_AuthController extends Zend_Controller_Action
-{
- protected $session;
- protected $sessionMapper;
- protected $error;
-
- public function init()
- {
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
- $this->db = Zend_Db_Table::getDefaultAdapter();
-
- $this->session = new Application_Model_Session();
- $this->sessionMapper = new Application_Model_SessionMapper();
-
- $alphaID = $this->_request->getParam('alpha');
-
- if(isset($alphaID)){
- $alphasessionID = $alphaID;
- $result = $this->sessionMapper->findBy(array('alphasessionID' => $alphasessionID),true);
- if(isset($result)){
- $this->session = $this->session->setOptions($result[0]);
- $this->session->setID($result[0]['sessionID']);
- }else{
- $this->error = "session";
- }
- }
- }
-
- public function serialAction()
- {
- $serialnumber = $this->_request->getParam('serialnumber');
- $mac = $this->_request->getParam('mac');
-
- if(isset($serialnumber)){
- // Create a session
- $n = new Pbs_Session();
-
- $bootisomapper = new Application_Model_BootIsoMapper();
- $bootiso = new Application_Model_BootIso();
-
- $results = $bootisomapper->findBy(array('serialnumber' => $serialnumber),true);
-
- if(isset($results)){
- $bootiso->setOptions($results[0]);
- $bootiso->setID($results[0]['bootisoID']);
- $groupID = $bootiso->getGroupID();
-
- $client = new Application_Model_Client();
- $client->setGroupID($groupID);
- $client->setMacadress($mac);
- $client->setCreated(time());
- $client = $n->createClient($client);
- $clientID = $client->getID();
-
- $this->session->setBootisoID($bootiso->getID());
- $this->session->setClientID($clientID);
- $this->session->setTime(time());
- $this->session->setIp($_SERVER['REMOTE_ADDR']);
- $this->session = $n->createSession($this->session);
- }else{
- $this->error = "serial";
- }
- }
- else{
- $this->error = "serial";
- }
-
- header('Content-Type: text/plain');
-
- $result = "#!ipxe\n";
- if(isset($this->session)){
- $result .= "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/".$this->error."\n";
- $result .= ":start\n";
- $result .= "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 \${filename}\n";
- $result .= "goto start\n";
- }else{
- $result .= "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/serialnumber/$serialnumber/mac/$mac/error/$this->error\n";
- }
- header("Content-Length: ".(strlen($result)));
- echo $result;
-
- }
-
- public function loginAction()
- {
- $alpha = $this->_request->getParam('alpha');
- $login = $this->_request->getParam('login');
-
- if (isset($login)){
- header('Content-Type: text/plain');
- $result = "#!ipxe\n";
- $result .= "clear username\n";
- $result .= "clear password\n";
- $result .= "login\n";
- $result .= "isset \${username} || set username null\n";
- $result .= "chain http://\${username:uristring}:\${password:uristring}@".$_SERVER['HTTP_HOST']."/ipxe/auth/login/alpha/".$alpha."\n";
- header("Content-Length: ".(strlen($result)));
- echo $result;
- exit;
- }
-
- if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])){
- header('WWW-Authenticate: Basic realm=""');
- header('HTTP/1.0 401 Unauthorized');
- $result = "#!ipxe\n";
- $result .= "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/login\n";
- header("Content-Length: ".(strlen($result)));
- echo $result;
- exit;
- }
-
- $email = $_SERVER['PHP_AUTH_USER'];
- $password = $_SERVER['PHP_AUTH_PW'];
-
- $auth = Zend_Auth::getInstance();
- $adapter = new Zend_Auth_Adapter_DbTable($this->db, 'pbs_person', 'email', 'password', 'MD5(CONCAT(?, password_salt))');
- $adapter->setIdentity($email);
- $adapter->setCredential($password);
-
- $result = $auth->authenticate($adapter);
-
- if (isset($this->session)){
- if ($result->isValid()) {
-
- $personmapper = new Application_Model_PersonMapper();
- $result = $personmapper->findBy(array('email' => Zend_Auth::getInstance()->getIdentity()),true);
- $person = new Application_Model_Person($result[0]);
- $person->setID($result[0]['personID']);
- $date = new DateTime();
- $person->setLogindate($date->getTimestamp());
- $personmapper->save($person);
-
- $this->session->setPersonID($person->getID());
- $this->sessionMapper->save($this->session);
-
- } else {
- $this->error = "login";
- }
- }else{
- $this->error = "session";
- }
-
-
- header('Content-Type: text/plain');
- $result = "#!ipxe\n";
- $result .= "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/".$this->error."\n";
- header("Content-Length: ".(strlen($result)));
- echo $result;
- exit;
-
-
-
- }
-
- public function logoutAction(){
-
- $alpha = $this->_request->getParam('alpha');
-
- if (isset($this->session)){
- $this->session->setPersonID(null);
- $this->session->setMembershipID(null);
- $this->sessionMapper->save($this->session);
- }else{
- $this->error = "session";
- }
-
- $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
-
- }
-
- public function switchgroupAction(){
-
- $alpha = $this->_request->getParam('alpha');
-
- if (isset($this->session)){
- $this->session->setMembershipID(null);
- $this->sessionMapper->save($this->session);
- }else{
- $this->error = "session";
- }
-
- $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
- }
-
- public function setgroupAction(){
-
- $alpha = $this->_request->getParam('alpha');
- $membershipID = $this->_request->getParam('membershipid');
-
- //TODO test if member of group
- if (isset($this->session)){
- $this->session->setMembershipID($membershipID);
- $this->sessionMapper->save($this->session);
- }else{
- $this->error = "session";
- }
-
- $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
- }
-
-
-
-
-
+* 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_AuthController extends Zend_Controller_Action {
+ protected $session;
+ protected $sessionMapper;
+ protected $error;
+
+ public function init() {
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+ $this->db = Zend_Db_Table::getDefaultAdapter();
+
+ $this->session = new Application_Model_Session();
+ $this->sessionMapper = new Application_Model_SessionMapper();
+
+ $alphaID = $this->_request->getParam('alpha');
+
+ if(isset($alphaID)) {
+ $alphasessionID = $alphaID;
+ $result = $this->sessionMapper->findBy(array('alphasessionID' => $alphasessionID), true);
+ if(isset($result)) {
+ $this->session = $this->session->setOptions($result[0]);
+ $this->session->setID($result[0]['sessionID']);
+ } else {
+ $this->error = "session";
+ }
+ }
+ }
+
+ public function serialAction() {
+ $serialnumber = $this->_request->getParam('serialnumber');
+ $mac = $this->_request->getParam('mac');
+
+ if(isset($serialnumber)) {
+ // Create a session
+ $n = new Pbs_Session();
+
+ $bootisomapper = new Application_Model_BootIsoMapper();
+ $bootiso = new Application_Model_BootIso();
+
+ $results = $bootisomapper->findBy(array('serialnumber' => $serialnumber), true);
+
+ if(isset($results)) {
+ $bootiso->setOptions($results[0]);
+ $bootiso->setID($results[0]['bootisoID']);
+ $groupID = $bootiso->getGroupID();
+
+ $client = new Application_Model_Client();
+ $client->setGroupID($groupID);
+ $client->setMacadress($mac);
+ $client->setCreated(time());
+ $client = $n->createClient($client);
+ $clientID = $client->getID();
+
+ $this->session->setBootisoID($bootiso->getID());
+ $this->session->setClientID($clientID);
+ $this->session->setTime(time());
+ $this->session->setIp($_SERVER['REMOTE_ADDR']);
+ $this->session = $n->createSession($this->session);
+ } else {
+ $this->error = "serial";
+ }
+ } else {
+ $this->error = "serial";
+ }
+
+ header('Content-Type: text/plain');
+
+ $result = "#!ipxe\n";
+ if(isset($this->session)) {
+ $result . = "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/".$this->error."\n";
+ $result . = ":start\n";
+ $result . = "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 \${filename}\n";
+ $result . = "goto start\n";
+ } else {
+ $result . = "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/serialnumber/$serialnumber/mac/$mac/error/$this->error\n";
+ }
+ header("Content-Length: ".(strlen($result)));
+ echo $result;
+
+ }
+
+ public function loginAction() {
+ $alpha = $this->_request->getParam('alpha');
+ $login = $this->_request->getParam('login');
+
+ if (isset($login)) {
+ header('Content-Type: text/plain');
+ $result = "#!ipxe\n";
+ $result . = "clear username\n";
+ $result . = "clear password\n";
+ $result . = "login\n";
+ $result . = "isset \${username} || set username null\n";
+ $result . = "chain http://\${username:uristring}:\${password:uristring}@".$_SERVER['HTTP_HOST']."/ipxe/auth/login/alpha/".$alpha."\n";
+ header("Content-Length: ".(strlen($result)));
+ echo $result;
+ exit;
+ }
+
+ if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
+ header('WWW-Authenticate: Basic realm=""');
+ header('HTTP/1.0 401 Unauthorized');
+ $result = "#!ipxe\n";
+ $result . = "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/login\n";
+ header("Content-Length: ".(strlen($result)));
+ echo $result;
+ exit;
+ }
+
+ $email = $_SERVER['PHP_AUTH_USER'];
+ $password = $_SERVER['PHP_AUTH_PW'];
+
+ $auth = Zend_Auth::getInstance();
+ $adapter = new Zend_Auth_Adapter_DbTable($this->db, 'pbs_person', 'email', 'password', 'MD5(CONCAT(?, password_salt))');
+ $adapter->setIdentity($email);
+ $adapter->setCredential($password);
+
+ $result = $auth->authenticate($adapter);
+
+ if (isset($this->session)) {
+ if ($result->isValid()) {
+
+ $personmapper = new Application_Model_PersonMapper();
+ $result = $personmapper->findBy(array('email' => Zend_Auth::getInstance()->getIdentity()), true);
+ $person = new Application_Model_Person($result[0]);
+ $person->setID($result[0]['personID']);
+ $date = new DateTime();
+ $person->setLogindate($date->getTimestamp());
+ $personmapper->save($person);
+
+ $this->session->setPersonID($person->getID());
+ $this->sessionMapper->save($this->session);
+
+ } else {
+ $this->error = "login";
+ }
+ } else {
+ $this->error = "session";
+ }
+
+
+ header('Content-Type: text/plain');
+ $result = "#!ipxe\n";
+ $result . = "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/".$this->error."\n";
+ header("Content-Length: ".(strlen($result)));
+ echo $result;
+ exit;
+
+
+
+ }
+
+ public function logoutAction() {
+
+ $alpha = $this->_request->getParam('alpha');
+
+ if (isset($this->session)) {
+ $this->session->setPersonID(null);
+ $this->session->setMembershipID(null);
+ $this->sessionMapper->save($this->session);
+ } else {
+ $this->error = "session";
+ }
+
+ $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
+
+ }
+
+ public function switchgroupAction() {
+
+ $alpha = $this->_request->getParam('alpha');
+
+ if (isset($this->session)) {
+ $this->session->setMembershipID(null);
+ $this->sessionMapper->save($this->session);
+ } else {
+ $this->error = "session";
+ }
+
+ $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
+ }
+
+ public function setgroupAction() {
+
+ $alpha = $this->_request->getParam('alpha');
+ $membershipID = $this->_request->getParam('membershipid');
+
+ //TODO test if member of group
+ if (isset($this->session)) {
+ $this->session->setMembershipID($membershipID);
+ $this->sessionMapper->save($this->session);
+ } else {
+ $this->error = "session";
+ }
+
+ $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
+ }
+
+
+
+
+
}
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');
+ }
+ }
+
}