summaryrefslogtreecommitdiffstats
path: root/application/modules/ipxe/controllers/IndexController.php
diff options
context:
space:
mode:
Diffstat (limited to 'application/modules/ipxe/controllers/IndexController.php')
-rw-r--r--application/modules/ipxe/controllers/IndexController.php183
1 files changed, 183 insertions, 0 deletions
diff --git a/application/modules/ipxe/controllers/IndexController.php b/application/modules/ipxe/controllers/IndexController.php
new file mode 100644
index 0000000..ad24551
--- /dev/null
+++ b/application/modules/ipxe/controllers/IndexController.php
@@ -0,0 +1,183 @@
+<?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_IndexController extends Zend_Controller_Action
+{
+ protected $membership;
+
+ public function init()
+ {
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+ /* Initialize action controller here */
+ $userIDsNamespace = Zend_Session::namespaceGet('userIDs');
+
+ $membershipMapper = new Application_Model_MembershipMapper();
+ $this->membership = new Application_Model_Membership();
+ $membershipMapper->find($userIDsNamespace['membershipID'],$this->membership);
+ }
+
+ public function errorAction()
+ {
+ $result = $this->_request->getParam('serialresult');
+ if($result != ""){
+ $pbsNotifier = new Pbs_Notifier();
+ $this->view->notification = $pbsNotifier->notify('serial',$result);
+ }
+ }
+
+ public function indexAction()
+ {
+ $mySession = new Zend_Session_Namespace('pbs');
+
+ if(count($mySession->postdata)<=0){
+ $mySession->postdata = $_POST;
+ }
+
+ $result = $this->_request->getParam('notify');
+ if($result == 'nomember'){
+ //fehler
+ }
+
+ $d = new Pbs_Debug();
+ $d->debug(array('IpxeIndexController',$_SERVER['REMOTE_ADDR'],implode("\t",$mySession->postdata)));
+
+ if(isset($mySession->postdata['serialnumber'])){
+ // Create a session
+ $n = new Pbs_Session();
+
+ $bootisomapper = new Application_Model_BootIsoMapper();
+ $bootiso = new Application_Model_BootIso();
+
+ $results = $bootisomapper->findBy(array('serialnumber' => $mySession->postdata['serialnumber']),true);
+ if(count($results) == 0){
+ $this->_redirect('/fbgui/index/error/serialresult/noserial2');
+ }
+ $bootiso->setOptions($results[0]);
+ $bootiso->setID($results[0]['bootisoID']);
+ $groupID = $bootiso->getGroupID();
+
+
+
+ $client = new Application_Model_Client();
+ $client->setMacadress($mySession->postdata['mac']);
+ $client->setHardwarehash($mySession->postdata['hardwarehash']);
+ $client->setGroupID($groupID);
+ $client->setCreated(time());
+ $client = $n->createClient($client);
+ $clientID = $client->getID();
+
+ $userIDsNamespace = Zend_Session::namespaceGet('userIDs');
+
+ if(!isset($_SESSION['alphasessionID'])){
+ $session = new Application_Model_Session();
+ $session->setBootisoID($bootiso->getID());
+ $session->setClientID($clientID);
+ $session->setTime(time());
+ if($this->membership->getID() != ''){
+ $session->setMembershipID($this->membership->getID());
+ }
+ $session->setIp($_SERVER['REMOTE_ADDR']);
+ $session = $n->createSession($session);
+ $_SESSION['alphasessionID'] = $session->getAlphasessionID();
+ }
+ else{
+ $session = new Application_Model_Session();
+ $sessionMapper = new Application_Model_SessionMapper();
+ $sessions = $sessionMapper->findBy(array('alphasessionID'=>$_SESSION['alphasessionID']));
+ $session = $sessions[0];
+ if($this->membership->getID() != '' && $session->getMembershipID() == ''){
+ $session->setMembershipID($this->membership->getID());
+ $sessionMapper->save($session);
+ }
+ }
+ // Request Bootmenu
+ $pbsFilter = new Pbs_Filter();
+ $bootmenuID = $pbsFilter->evaluate();
+ if($bootmenuID != null){
+ $this->view->alphasessionID = $_SESSION['alphasessionID'];
+ // print_a('Debug Output',
+ // 'Session is now set',
+ // 'Your sessionID is '.$session->getID(),
+ // 'Your alphasessionID is '.$session->getAlphasessionID(),
+ // 'Your client is '.$session->getClientID(),
+ // 'goto bootmenu '.$bootmenuID);
+
+ $bootmenuMapper = new Application_Model_BootMenuMapper();
+ $bm = $bootmenuMapper->find($bootmenuID);
+ $this->view->title = $bm->getTitle();
+ $this->view->startcounter = $bm->getStartcounter();
+
+ $bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper();
+ $res = $bootmenuentriesMapper->findBy(array('bootmenuID' => $bootmenuID),false);
+ $this->view->entries = $res;
+
+ if (!Zend_Auth::getInstance()->hasIdentity()) {
+ $this->view->loginmenu = true;
+ }
+
+ if(Zend_Auth::getInstance()->hasIdentity()){
+ if($bm->MembershipID != '' && $bm->MembershipID == $this->membership->getID()){}
+ else{
+ $pbsNotifier = new Pbs_Notifier();
+ $this->view->notification = $pbsNotifier->notify("This is not your Bootmenu. There is currently a BootMenu with a higher priority active.",'info');
+ }
+ }
+ }
+ else{
+ // print_a('Debug Output',
+ // 'Session is now set',
+ // 'Your sessionID is '.$session->getID(),
+ // 'Your alphasessionID is '.$session->getAlphasessionID(),
+ // 'Your client is '.$session->getClientID(),
+ // 'there is no bootmenu for you');
+ if (!Zend_Auth::getInstance()->hasIdentity()) {
+ $this->view->loginmenu = true;
+ $pbsNotifier = new Pbs_Notifier();
+ $this->view->notification = $pbsNotifier->notify("There is no default BootMenu, please Login to get your BootMenu.",'info');
+ }
+ else{
+ $pbsNotifier = new Pbs_Notifier();
+ $this->view->notification = $pbsNotifier->notify("You have no BootMenu.",'info');
+ }
+ $this->view->nobootmenu = true;
+ }
+ }
+ else{
+ #$this->_redirect('/fbgui/index/error/serialresult/noserial');
+ }
+
+ }
+ public function startAction(){
+ $bootmenuntryID = $this->_request->getParam('bme');
+ $a = $_SESSION['alphasessionID'];
+ $bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper();
+ $bootmenuentry = new Application_Model_BootMenuEntries();
+ $bootmenuentriesMapper->find($bootmenuntryID,$bootmenuentry);
+
+ $sessionMapper = new Application_Model_SessionMapper();
+ $session_k = $sessionMapper->findBy(array('alphasessionID' => $a),true);
+
+ $session = new Application_Model_Session();
+ $session->setOptions($session_k[0]);
+ $session->setID($session_k[0]['sessionID']);
+
+ $session->setBootmenuentryID($bootmenuntryID);
+ $session->setBootosID($bootmenuentry->getBootosID());
+ $sessionMapper->save($session);
+
+
+ $this->view->host = 'pbs2.mp.openslx.org';
+ $this->view->alphasessionID = $a;
+ }
+
+}