_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $this->db = Zend_Db_Table::getDefaultAdapter(); } public function errorAction() { $result = $this->_request->getParam('serialresult'); if($result != ""){ $pbsNotifier = new Pbs_Notifier(); echo $pbsNotifier->notify('serial',$result); } } public function serialAction() { $serialnumber = $this->_request->getParam('serialnumber'); $mac = $this->_request->getParam('mac'); $login = $this->_request->getParam('login') == 'true'; 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(count($results) == 0){ $this->_redirect('/ipxe/auth/error/serialresult/noserial'); } $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(); $session = new Application_Model_Session(); $session->setBootisoID($bootiso->getID()); $session->setClientID($clientID); $session->setTime(time()); $session->setIp($_SERVER['REMOTE_ADDR']); $session = $n->createSession($session); header('Content-Type: text/plain'); $result = "#!ipxe\n"; $result .= "imgfree\n"; if(!$login){ $result .= "login\n"; $result .= "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 http://\${username:uristring}:\${password:uristring}@".$_SERVER['HTTP_HOST']."/ipxe/auth/login/alpha/".$session->getAlphasessionID()."/login/true\n"; }else{ $result .= "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$session->getAlphasessionID()."/login/false\n"; } header("Content-Length: ".(strlen($result))); echo $result; } else{ $this->_redirect('/ipxe/auth/error/serialresult/noserial'); } } public function loginAction() { $alpha = $this->_request->getParam('alpha'); if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])){ header('WWW-Authenticate: Basic realm=""'); header('HTTP/1.0 401 Unauthorized'); 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 ($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->_redirect("/ipxe/resource/getvesamenuconfig/alpha/".$alpha."/person/".$person->getID()."/login/true"); return; } else { echo "Wrong Email or Password."; } } }