diff options
Diffstat (limited to 'application/controllers/ResourceController.php')
| -rw-r--r-- | application/controllers/ResourceController.php | 223 |
1 files changed, 68 insertions, 155 deletions
diff --git a/application/controllers/ResourceController.php b/application/controllers/ResourceController.php index 92be437..fe564fc 100644 --- a/application/controllers/ResourceController.php +++ b/application/controllers/ResourceController.php @@ -21,10 +21,18 @@ class ResourceController extends Zend_Controller_Action { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); - - $bootosID = $this->_request->getParam('bootosID'); + /* + $bootosID = $this->_request->getParam('bootosID'); $bootosID = $this->alphaID($bootosID, true, false, $this->pass[0]); $bootosID -= $this->startval; + */ + $alphasessionID = $this->_request->getParam('alpha'); + $session = new Application_Model_Session(); + $sm = new Application_Model_SessionMapper(); + $result = $sm->findBy('alphasessionID',$alphasessionID); + # print_a($result); + $thisSession = $result[0]; + $bootosID = $thisSession['bootosID']; if(is_dir("../resources/bootos/$bootosID/initramfs/") && is_numeric($bootosID)){ @@ -45,10 +53,23 @@ class ResourceController extends Zend_Controller_Action $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); - + /* $configID = $this->_request->getParam('configID'); $configID = $this->alphaID($configID, true, false, $this->pass[1]); $configID -= $this->startval; + */ + $alphasessionID = $this->_request->getParam('alpha'); + $session = new Application_Model_Session(); + $sm = new Application_Model_SessionMapper(); + $result = $sm->findBy('alphasessionID',$alphasessionID); + # print_a($result); + $thisSession = $result[0]; + $bootmenuentryID = $thisSession['bootmenuentryID']; + $bootmenuentry = new Application_Model_BootMenuEntries(); + $bmm = new Application_Model_BootMenuEntriesMapper(); + $bmm->find($bootmenuentryID,$bootmenuentry); + # print_a($bootmenuentry); + $configID = $bootmenuentry->getConfigID(); if(is_dir("../resources/config/$configID/config/") && is_numeric($configID)){ @@ -68,11 +89,20 @@ class ResourceController extends Zend_Controller_Action { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); - + /* $bootosID = $this->_request->getParam('bootosID'); $bootosID = $this->alphaID($bootosID, true, false, $this->pass[2]); $bootosID -= $this->startval; - + */ + $alphasessionID = $this->_request->getParam('alpha'); + $session = new Application_Model_Session(); + $sm = new Application_Model_SessionMapper(); + $result = $sm->findBy('alphasessionID',$alphasessionID); + # print_a($result); + $thisSession = $result[0]; + $bootosID = $thisSession['bootosID']; + + if(is_dir("../resources/bootos/$bootosID/kernel/") && is_numeric($bootosID)){ header('Content-Type: application/x-gzip'); @@ -91,11 +121,19 @@ class ResourceController extends Zend_Controller_Action { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); - + /* $bmeID = $this->_request->getParam('bootmenuentryID'); $bmeID = $this->alphaID($bmeID, true, false, $this->pass[3]); $bmeID -= $this->startval; - + */ + $alphasessionID = $this->_request->getParam('alpha'); + $session = new Application_Model_Session(); + $sm = new Application_Model_SessionMapper(); + $result = $sm->findBy('alphasessionID',$alphasessionID); + # print_a($result); + $thisSession = $result[0]; + $bmeID = $thisSession['bootmenuentryID']; + if(is_numeric($bmeID)){ $bmemapper = new Application_Model_BootMenuEntriesMapper(); $bme = new Application_Model_BootMenuEntries(); @@ -116,37 +154,38 @@ class ResourceController extends Zend_Controller_Action public function getbootmenuentryAction() { + // obsolete function (now only for debugging) + // after selecting the BootOS it will be saved in session + // so getkclAction, getkernelAction, getconfigAction and getinitramfsAction + // can be called with session-identifier + $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $bmeID = $this->_request->getParam('bootmenuentryID'); + $bmeID = 4; - if(is_numeric($bmeID)){ - $bmemapper = new Application_Model_BootMenuEntriesMapper(); - $bme = new Application_Model_BootMenuEntries(); - - $bootosmapper = new Application_Model_BootOsMapper(); - $bootos = new Application_Model_BootOs(); - - $bmemapper->find($bmeID, $bme); - if($bme->getBootosID() != null){ - $bootos = $bootosmapper->find($bme->getBootosID()); - - $alpha_init_bootos = $this->alphaID($bootos->getID()+$this->startval, false, false, $this->pass[0]); - $alpha_kernel_bootos = $this->alphaID($bootos->getID()+$this->startval, false, false, $this->pass[2]); - $alpha_bmeID = $this->alphaID($bmeID+$this->startval, false, false, $this->pass[3]); - $alpha_config = $this->alphaID($bme->getConfigID()+$this->startval, false, false, $this->pass[1]); - + if(isset($_SESSION['alphasessionID'])){ + $sessionmapper = new Application_Model_SessionMapper(); + $session = $sessionmapper->findBy('alphasessionID',$_SESSION['alphasessionID']); + $session = $session[0]; + if($session['bootmenuentryID'] != null){ $return_val = array( - 'kernel' => $this->generateURL('getkernel', 'bootosID', $alpha_kernel_bootos), - 'initramfs' => $this->generateURL('getinitramfs', 'bootosID', $alpha_init_bootos), - 'kcl' => $this->generateURL('getkcl', 'bootmenuentryID', $alpha_bmeID), - 'config' => $alpha_config - ); - + 'info' => 'This function is for debugging purpose only', + 'kernel' => $this->generateURL('getkernel', 'alpha', $_SESSION['alphasessionID']), + 'initramfs' => $this->generateURL('getinitramfs', 'alpha', $_SESSION['alphasessionID']), + 'kcl' => $this->generateURL('getkcl', 'alpha', $_SESSION['alphasessionID']), + 'config' => $_SESSION['alphasessionID'] + ); echo json_encode($return_val); } + else{ + echo json_encode( + array( 'info' => 'This function is for debugging purpose only', + 'error'=>'your session is out of date') + ); + } } } @@ -157,132 +196,6 @@ class ResourceController extends Zend_Controller_Action return $path; } -/** - * Translates a number to a short alhanumeric version - * - * Translated any number up to 9007199254740992 - * to a shorter version in letters e.g.: - * 9007199254740989 --> PpQXn7COf - * - * specifiying the second argument true, it will - * translate back e.g.: - * PpQXn7COf --> 9007199254740989 - * - * this function is based on any2dec && dec2any by - * fragmer[at]mail[dot]ru - * see: http://nl3.php.net/manual/en/function.base-convert.php#52450 - * - * If you want the alphaID to be at least 3 letter long, use the - * $pad_up = 3 argument - * - * In most cases this is better than totally random ID generators - * because this can easily avoid duplicate ID's. - * For example if you correlate the alpha ID to an auto incrementing ID - * in your database, you're done. - * - * The reverse is done because it makes it slightly more cryptic, - * but it also makes it easier to spread lots of IDs in different - * directories on your filesystem. Example: - * $part1 = substr($alpha_id,0,1); - * $part2 = substr($alpha_id,1,1); - * $part3 = substr($alpha_id,2,strlen($alpha_id)); - * $destindir = "/".$part1."/".$part2."/".$part3; - * // by reversing, directories are more evenly spread out. The - * // first 26 directories already occupy 26 main levels - * - * more info on limitation: - * - http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/165372 - * - * if you really need this for bigger numbers you probably have to look - * at things like: http://theserverpages.com/php/manual/en/ref.bc.php - * or: http://theserverpages.com/php/manual/en/ref.gmp.php - * but I haven't really dugg into this. If you have more info on those - * matters feel free to leave a comment. - * - * @author Kevin van Zonneveld <kevin@vanzonneveld.net> - * @author Simon Franz - * @author Deadfish - * @copyright 2008 Kevin van Zonneveld (http://kevin.vanzonneveld.net) - * @license http://www.opensource.org/licenses/bsd-license.php New BSD Licence - * @version SVN: Release: $Id: alphaID.inc.php 344 2009-06-10 17:43:59Z kevin $ - * @link http://kevin.vanzonneveld.net/ - * - * @param mixed $in String or long input to translate - * @param boolean $to_num Reverses translation when true - * @param mixed $pad_up Number or boolean padds the result up to a specified length - * @param string $passKey Supplying a password makes it harder to calculate the original ID - * - * @return mixed string or long - */ - -private function alphaID($in, $to_num = false, $pad_up = false, $passKey = null) -{ - $index = "abcdefghijklmnopqrstuvwxyz0123456789"; - if ($passKey !== null) { - // Although this function's purpose is to just make the - // ID short - and not so much secure, - // with this patch by Simon Franz (http://blog.snaky.org/) - // you can optionally supply a password to make it harder - // to calculate the corresponding numeric ID - - for ($n = 0; $n<strlen($index); $n++) { - $i[] = substr( $index,$n ,1); - } - - $passhash = hash('sha256',$passKey); - $passhash = (strlen($passhash) < strlen($index)) - ? hash('sha512',$passKey) - : $passhash; - - for ($n=0; $n < strlen($index); $n++) { - $p[] = substr($passhash, $n ,1); - } - - array_multisort($p, SORT_DESC, $i); - $index = implode($i); - } - - $base = strlen($index); - - if ($to_num) { - // Digital number <<-- alphabet letter code - $in = strrev($in); - $out = 0; - $len = strlen($in) - 1; - for ($t = 0; $t <= $len; $t++) { - $bcpow = bcpow($base, $len - $t); - $out = $out + strpos($index, substr($in, $t, 1)) * $bcpow; - } - - if (is_numeric($pad_up)) { - $pad_up--; - if ($pad_up > 0) { - $out -= pow($base, $pad_up); - } - } - $out = sprintf('%F', $out); - $out = substr($out, 0, strpos($out, '.')); - } else { - // Digital number -->> alphabet letter code - if (is_numeric($pad_up)) { - $pad_up--; - if ($pad_up > 0) { - $in += pow($base, $pad_up); - } - } - - $out = ""; - for ($t = floor(log($in, $base)); $t >= 0; $t--) { - $bcp = bcpow($base, $t); - $a = floor($in / $bcp) % $base; - $out = $out . substr($index, $a, 1); - $in = $in - ($a * $bcp); - } - $out = strrev($out); // reverse - } - - return $out; -} } |
