diff options
| author | michael pereira | 2011-03-10 15:47:10 +0100 |
|---|---|---|
| committer | michael pereira | 2011-03-10 15:47:10 +0100 |
| commit | 501f65203cb5e98f6f6c8afcd8e64e3d3a82e672 (patch) | |
| tree | ef7f37935ae06e335f77e8e492b9446964b0c141 /application/controllers | |
| parent | default kcl und config hinzugefuegt (diff) | |
| download | pbs2-501f65203cb5e98f6f6c8afcd8e64e3d3a82e672.tar.gz pbs2-501f65203cb5e98f6f6c8afcd8e64e3d3a82e672.tar.xz pbs2-501f65203cb5e98f6f6c8afcd8e64e3d3a82e672.zip | |
Resource Controller
Diffstat (limited to 'application/controllers')
| -rw-r--r-- | application/controllers/ResourceController.php | 290 |
1 files changed, 290 insertions, 0 deletions
diff --git a/application/controllers/ResourceController.php b/application/controllers/ResourceController.php new file mode 100644 index 0000000..a430a27 --- /dev/null +++ b/application/controllers/ResourceController.php @@ -0,0 +1,290 @@ +<?php + +class ResourceController extends Zend_Controller_Action +{ + + private $startval = 878923467; + private $pass = "lsfks"; + + public function init() + { + + } + + public function indexAction() + { + + + } + + public function getinitramfsAction() + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + $bootosID = $this->_request->getParam('bootosID'); + $bootosID = $this->alphaID($bootosID, true, false, $this->pass); + $bootosID -= $this->startval; + + if(is_dir("../resources/config/$bootosID/uniontmp/") && is_numeric($bootosID)){ + + header('Content-Type: application/x-gzip'); + $content_disp = ( ereg('MSIE ([0-9].[0-9]{1,2})', $HTTP_USER_AGENT) == 'IE') ? 'inline' : 'attachment'; + header('Content-Disposition: ' . $content_disp . '; filename="file.tar.gz"'); + header('Pragma: no-cache'); + header('Expires: 0'); + + // create the gzipped tarfile. + chdir("../resources/bootos/$bootosID/initramfs/"); + passthru( "tar cz ./"); + } + } + + public function getconfigAction() + { + + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + $configID = $this->_request->getParam('configID'); + $configID = $this->alphaID($configID, true, false, $this->pass); + $configID -= $this->startval; + + if(is_dir("../resources/config/$configID/uniontmp/") && is_numeric($configID)){ + + header('Content-Type: application/x-gzip'); + $content_disp = ( ereg('MSIE ([0-9].[0-9]{1,2})', $HTTP_USER_AGENT) == 'IE') ? 'inline' : 'attachment'; + header('Content-Disposition: ' . $content_disp . '; filename="file.tar.gz"'); + header('Pragma: no-cache'); + header('Expires: 0'); + + // create the gzipped tarfile. + chdir("../resources/config/$configID/uniontmp/"); + passthru( "tar cz ./"); + } + } + + public function getkernelAction() + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + $bootosID = $this->_request->getParam('bootosID'); + $bootosID = $this->alphaID($bootosID, true, false, $this->pass); + $bootosID -= $this->startval; + + if(is_dir("../resources/config/$bootosID/uniontmp/") && is_numeric($bootosID)){ + + header('Content-Type: application/x-gzip'); + $content_disp = ( ereg('MSIE ([0-9].[0-9]{1,2})', $HTTP_USER_AGENT) == 'IE') ? 'inline' : 'attachment'; + header('Content-Disposition: ' . $content_disp . '; filename="file.tar.gz"'); + header('Pragma: no-cache'); + header('Expires: 0'); + + // create the gzipped tarfile. + chdir("../resources/bootos/$bootosID/kernel/"); + passthru( "tar cz ./"); + } + } + + public function getkclAction() + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + $bmeID = $this->_request->getParam('bootmenuentryID'); + + if(is_numeric($bmeID)){ + $bmemapper = new Application_Model_BootMenuEntriesMapper(); + $bme = new Application_Model_BootMenuEntries(); + $bmemapper->find($bmeID,$bme); + + if($bme->getKcl() != null){ + echo json_encode(array('kcl' => $bme->getKcl())); + } + + } + + } + + public function getbootmenuentryAction() + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + $bmeID = $this->_request->getParam('bootmenuentryID'); + + 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_bootos = $this->alphaID($bootos->getID()+$this->startval, false, false, $this->pass); + $alpha_config = $this->alphaID($bme->getConfigID()+$this->startval, false, false, $this->pass); + + $return_val = + array( + 'kernel' => $this->generateURL('getkernel', 'bootosID', $alpha_bootos), + 'initramfs' => $this->generateURL('getinitramfs', 'bootosID', $alpha_bootos), + 'kcl' => $this->generateURL('getkcl', 'bootmenuentryID', $bmeID), + 'config' => $this->generateURL('getconfig', 'configID', $alpha_config) + ); + + print_a($return_val); + + echo json_encode($return_val); + } + } + + } + + function generateURL($action, $varname, $varvalue){ + $path = '/resource/'. $action .'/' . $varname .'/' . $varvalue; + $path = "http://" . $_SERVER['SERVER_NAME'] . $path; + 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; +} +} + + + + + + + + + + + |
