_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']); } if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') { $this->httpmode = 'https'; }else{ $this->httpmode = 'http'; } $this->host = $_SERVER['HTTP_HOST']; } 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($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') { $vesamenuView->httpmode = 'https'; }else{ $vesamenuView->httpmode = 'http'; } 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 getsignatureAction() { $bootosID = $this->session->getBootosID(); $file = $this->_request->getParam('file'); if(is_dir("../resources/bootos/$bootosID/signatures/") && 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="'.$file.'.sig"'); header('Pragma: no-cache'); header('Expires: 0'); // create the gzipped tarfile. chdir("../resources/bootos/$bootosID/signatures/"); header("Content-Length: ".filesize(getcwd()."/".$file.".sig")); passthru( "cat ". $file.".sig"); } else { header('HTTP/1.0 404 Not Found'); } } 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'); } } public function bootsystemAction() { $bootmenuntryID = $this->_request->getParam('bme'); if(isset($bootmenuntryID) && isset($this->session)) { //TODO check if allowed $sessionMapper = new Application_Model_SessionMapper(); $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); } header('Content-Type: text/plain'); $result = "#!ipxe\n"; if(isset($this->session)) { $bootosID = $this->session->getBootosID(); $bootosmapper = new Application_Model_BootOsMapper(); $kcl = $bootosmapper->find($bootosID)->getDefaultkcl(); $result .= "kernel --name kernel $this->httpmode://$this->host/ipxe/resource/getkernel/alpha/".$this->session->getAlphasessionID()."\n"; $result .= "initrd --name initramfs $this->httpmode://$this->host/ipxe/resource/getinitramfs/alpha/".$this->session->getAlphasessionID()."\n"; if($bootmenuentry->getKcl() && $kcl != null){ $result .= "imgargs kernel $kcl alpha=".$this->session->getAlphasessionID()." file=$this->httpmode://$this->host/c/".$this->session->getAlphasessionID()."/default.tgz ".$bootmenuentry->getKclappend()."\n"; }else{ $result .= "imgargs kernel alpha=".$this->session->getAlphasessionID()." file=$this->httpmode://$this->host/c/".$this->session->getAlphasessionID()."/default.tgz ".$bootmenuentry->getKclappend()."\n"; } $result .= "boot"; } else { $result .= "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/serialnumber/$serialnumber/mac/$mac/error/session\n"; } header("Content-Length: ".(strlen($result))); echo $result; } public function boottrustedsystemAction() { $bootmenuntryID = $this->_request->getParam('bme'); if(isset($bootmenuntryID) && isset($this->session)) { //TODO check if allowed $sessionMapper = new Application_Model_SessionMapper(); $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); } header('Content-Type: text/plain'); $result = "#!ipxe\n"; if(isset($this->session)) { $bootosID = $this->session->getBootosID(); $bootosmapper = new Application_Model_BootOsMapper(); $kcl = $bootosmapper->find($bootosID)->getDefaultkcl(); $result .= "imgtrust --permanent\n"; $result .= "kernel --name kernel $this->httpmode://$this->host/ipxe/resource/getkernel/alpha/".$this->session->getAlphasessionID()."\n"; $result .= "imgverify kernel $this->httpmode://$this->host/ipxe/resource/getsignature/file/kernel/alpha/".$this->session->getAlphasessionID()."\n"; $result .= "initrd --name initramfs $this->httpmode://$this->host/ipxe/resource/getinitramfs/alpha/".$this->session->getAlphasessionID()."\n"; $result .= "imgverify initramfs $this->httpmode://$this->host/ipxe/resource/getsignature/file/initramfs/alpha/".$this->session->getAlphasessionID()."\n"; if($bootmenuentry->getKcl() && $kcl != null){ $result .= "imgargs kernel $kcl alpha=".$this->session->getAlphasessionID()." file=$this->httpmode://$this->host/c/".$this->session->getAlphasessionID()."/default.tgz ".$bootmenuentry->getKclappend()."\n"; }else{ $result .= "imgargs kernel alpha=".$this->session->getAlphasessionID()." file=$this->httpmode://$this->host/c/".$this->session->getAlphasessionID()."/default.tgz ".$bootmenuentry->getKclappend()."\n"; } //$result .= "boot || echo BLA"; } else { $result .= "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/serialnumber/$serialnumber/mac/$mac/error/session\n"; } header("Content-Length: ".(strlen($result))); echo $result; } }