_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"; } } if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') { $this->httpmode = 'https'; }else{ $this->httpmode = 'http'; } } 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 ".$this->httpmode."://".$_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 .= "set filename ".$this->httpmode."://\${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 ".$this->httpmode."://".$_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 ".$this->httpmode."://".$_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"; } header('Content-Type: text/plain'); $result = "#!ipxe\n"; $result .= "set filename ".$this->httpmode."://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$alpha."/error/".$this->error."\n"; header("Content-Length: ".(strlen($result))); echo $result; exit; //$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"; } header('Content-Type: text/plain'); $result = "#!ipxe\n"; $result .= "set filename ".$this->httpmode."://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$alpha."/error/".$this->error."\n"; header("Content-Length: ".(strlen($result))); echo $result; exit; //$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"; } header('Content-Type: text/plain'); $result = "#!ipxe\n"; $result .= "set filename ".$this->httpmode."://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$alpha."/error/".$this->error."\n"; header("Content-Length: ".(strlen($result))); echo $result; exit; //$this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error); } }