summaryrefslogblamecommitdiffstats
path: root/application/controllers/ResourceController.php
blob: 855033d7105e698586fb0d2696a3d99dc89e32fa (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
     









                                                                           




                                                       
                      
                            
                                  


                              

                                                            
 

                                                            
 
                                                         
                                                            
                                                              
 


                                                                                     
                                                                                           
                        
                                                                                                        
                                                      
                                                                        

                                      
                        
                 
                                      
                                                                                        

                                                                        
 
                                                          
                                                                                                         
                         
 

                                                                                             
                                                                                 
                                                                                     
 


                                                                            
                                              

                                                        


                                                      
                 






                                                                                               
                        



                                     

                        
         
                                 

                                         
                
                                                                                                                                          




                                                                         

                                                              
                                                          



                                                       



                                                                                                                                                    


                              




                                                                                                                                                                                                                            
                                                                     

                                                           
                                                                                                                                                                                                                                               




                                                                     

                                             

                                              


                                                         

                                          







                                                                           
                                                    
                                                                                                     
                        
                 
                                                    

                                                                                                
                                                  
                                                                                               

                                                                 








                                                      
                                                                                                                                          

















                                                                                                                                                    
                



                                                                     
                                                                                                                                                                                                                                               




                                                                
                
                                             
                                                  



                                              
                                               


                                            







                                                                           

                                                                    
                                                                                                     
                 
                                                    
                                                                    

                                                                                                
                                                  
                                                                    

                                                                                               
 

                                             




                                                     
                
                                                                                                                                          













                                                                           

                                                                               

                              








                                                                                        
                                                                                                                   









                                                                      






                                                                         
                                                     










                                                                                                       
                                                                                                                                          













                                                                        
                                           












                                                                                        
                                                                                                                   





                                                                 
                                                    



                                               
                                                 

                                             


                                                                         

                                                                        

                                                                                                       

                                               

                                                      
                







                                                                                                
 




                                                                                                                                          
 


                                                                          
 
                                                                                    
 
                                                    

                                                         





                                                                            


                                                                         
 
                                                          
                                                              
 
                                                                    
 




                                                                                                                                          
 



                                                                               





                                                                                                        
                                                                                                                      
                                                                                                 
 

                                                   

                                                                                  




                                                                                                                                  



                                                                                      



                                                                              




                                                                               
                                                                                 







                                                                                 
                                                                                                   



                                                                               
                                                                                
                                                                                
                                                                                                                                  
                                                                                                                                                                                                                                      



                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                                                     
                                                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                               
                                                 
                                         
                                 
 
                                                              
                                                 
                                                      
                                                        
                                
                         

                                                         
                 



                                         
 


                                                                                             
 




                                                                                                                                          
 


                                                                       
 
                                                                                      
 
                                                       

                                                         
                 
 



                                      
 
 


                                                                  
 

                                                                                   
                                                                             
                                                      
 




                                                                                                                                          
 
                                                                                         

                                                           
                                                                                                                                                                                                                      
                              
                                                                                                                                                                                                              
                         
                                                
                                                                     
 
                                     
 










                                                                                           
 





                                                                                                                                         
                                                                                                                                    
                  
 





                                                                                                                                         

                                                                                                                                
                              


                                                                              
                                                                                                                                                                    











                                                                    
<?php
/*
 * Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg
 * This program is free software distributed under the GPL version 2.
 * See http://gpl.openslx.org/
 *
 * If you have any feedback please consult http://feedback.openslx.org/ and
 * send your suggestions, praise, or complaints to feedback@openslx.org
 *
 * General information about OpenSLX can be found at http://openslx.org/
 */

class ResourceController extends Zend_Controller_Action
{

	private $thisSession;
	private $page;
	private $membership;
	private $rightrolesMapper;

	public function init()
	{
		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender();

		$session = new Application_Model_Session();
		$sm = new Application_Model_SessionMapper();

		//TODO Error Messages if something failed
		$alpha = $this->_request->getParam('alpha');
		$apikey = $this->_request->getParam('apikey');

		if($apikey != ""){
			$membershipMapper = new Application_Model_MembershipMapper();
			$this->membership = new Application_Model_Membership();
			$this->rightrolesMapper = new Application_Model_RightRolesMapper();
			
			list($this->membership) = $membershipMapper->findBy(array('apikey' => $apikey));
			if($this->membership == null){
				header('HTTP/1.0 401 Member not found');
				die();
			}
			
		}
		elseif($alpha == "0"){
			$bootmenuentryID = $this->_request->getParam('bootmenuentryID');

			$this->page = $this->_request->getParam('page');

			if(!is_numeric($bootmenuentryID)){
				$this->_redirect('/user/bootmenu/index/page/'.$this->page.'/json/error');
			}

			$bootmenuentry = new Application_Model_BootMenuEntries();
			$bootmenuentryMapper = new Application_Model_BootMenuEntriesMapper();
			$bootmenuMapper = new Application_Model_BootMenuMapper();
			$bootmenuentryMapper->find($bootmenuentryID, $bootmenuentry);

			$session->setBootosID($bootmenuentry->getBootosID())
			->setBootmenuentryID($bootmenuentry->getID())
			->setTime(time())
			->setMembershipID('1')
			->setIp($_SERVER['REMOTE_ADDR'])
			->setAlphasessionID('0');

			$this->thisSession = $session;

		}
		elseif($alpha != ""){
			$alphasessionID = $alpha;
			$result = $sm->findBy(array('alphasessionID' => $alphasessionID),true);
			# print_a($result);
			$this->thisSession = $session->setOptions($result[0]);
			$this->thisSession->setID($result[0]['sessionID']);
		}
			
	}

	public function indexAction()
	{

			
	}
//TODO Try/Catch + Metadata check
	public function addbootosAction()
	{
		
		list($rightroles) = $this->rightrolesMapper->findBy(array('rightID' => '55', 'roleID' => $this->membership->getRoleID()));
		if($rightroles == null){
			header('HTTP/1.0 403 No Right to Create Bootos');
			die();
		}
			
		$apikey = $this->_request->getParam('apikey');
		if($apikey == ""){
			header('HTTP/1.0 400 No API-Key');
			die();
		}
			
		$params = $this->_request->getParams();
		$source = $_SERVER['REMOTE_ADDR'];
		
		if($params['title'] == '' || $params['distro'] == '' || $params['distroversion'] == '' || $params['share']  == '' || $source == ''){
			header('HTTP/1.0 400 Title, Distro, Distroversion and Share must be set');
			die();
		}
		
		if($_FILES['config']['size'] == 0 && $_FILES['config']['name'] != '' || $_FILES['kernel']['size'] == 0  && $_FILES['kernel']['name'] != ''|| $_FILES['init']['size'] == 0 && $_FILES['init']['name'] != ''){
			header('HTTP/1.0 400 File must be larger than 0 bytes');
			die();
		}	

		$bootosMapper = new Application_Model_BootOsMapper();
		$groupID = $this->membership->getGroupID();
		
		list($bootos) = $bootosMapper->findBy(array('groupid' => $groupID, 'title' => $params['title'], 'distro' => $params['distro'], 'distroversion' => $params['distroversion'], 'source' => $source, 'share' => $params['share']));
		if($bootos != null){
			header('HTTP/1.0 400 Bootos already exists');
			die();
		}	
		$bootos = new Application_Model_BootOs();
		
		$bootos->setOptions($params);
		$bootos->setGroupID($groupID);
		$bootos->setSource($source);
		$bootos->setCreated(time());
		$bootos->setPublic('-1');
		$bootosID = $bootosMapper->save($bootos);
		$bootos->setID($bootosID);
		
		$initpath = "../resources/bootos/".$bootosID."/initramfs/";
		$kernelpath = "../resources/bootos/".$bootosID."/kernel/";
		$configpath = "../resources/bootos/".$bootosID."/config/";

		mkdir($initpath ,0777, true);
		mkdir($kernelpath ,0777, true);
		mkdir($configpath ,0777, true);

		if($_FILES['config']['name'] != ''){
			move_uploaded_file($_FILES['config']['tmp_name'], $configpath."default.tgz");
			
		}
		if($_FILES['kernel']['name'] != ''){
			move_uploaded_file($_FILES['kernel']['tmp_name'], $kernelpath."kernel");
		}
		if($_FILES['init']['name'] != ''){
			move_uploaded_file($_FILES['init']['tmp_name'], $initpath."initramfs");
			$newconfig = new Pbs_NewConfig();
			$newconfig->createDefaultConfig($bootos);
		}

		header('HTTP/1.0 201 Bootos created');

	}
	
	public function editbootosAction()
	{
		
		list($rightroles) = $this->rightrolesMapper->findBy(array('rightID' => '58', 'roleID' => $this->membership->getRoleID()));
		if($rightroles == null){
			header('HTTP/1.0 403 No Right to Edit Bootos');
			die();
		}
		
		$apikey = $this->_request->getParam('apikey');
		if($apikey == ""){
			header('HTTP/1.0 400 No API-Key');
			die();
		}
			
		$params = $this->_request->getParams();
		$source = $_SERVER['REMOTE_ADDR'];
		
		if($params['title'] == '' || $params['distro'] == '' || $params['distroversion'] == '' || $params['share']  == '' || $source == ''){
			header('HTTP/1.0 400 Title, Distro, Distroversion and Share must be set');
			die();
		}
		
		$bootos = new Application_Model_BootOs();
		$bootosMapper = new Application_Model_BootOsMapper();
		$groupID = $this->membership->getGroupID();

		list($bootos) = $bootosMapper->findBy(array('groupid' => $groupID, 'title' => $params['title'], 'distro' => $params['distro'], 'distroversion' => $params['distroversion'], 'source' => $source, 'share' => $params['share']));
				
		if($bootos == null){
			header('HTTP/1.0 400 Bootos not found');
			die();
		}	
		
		$bootosID = $bootos->getID();
		$bootossrc = $bootos->getSource();

		$bootos->setOptions($params);
		$bootos->setID($bootosID);
		$bootos->setGroupID($groupID);
		$bootos->setSource($bootossrc);
		$bootos->setCreated(time());
		$bootos->setPublic('-1');
		
		$initpath = "../resources/bootos/".$bootosID."/initramfs/";
		$kernelpath = "../resources/bootos/".$bootosID."/kernel/";
		$configpath = "../resources/bootos/".$bootosID."/config/";

		mkdir($initpath ,0777, true);
		mkdir($kernelpath ,0777, true);
		mkdir($configpath ,0777, true);

		if($_FILES['config']['name'] != ''){
			$bootos->setSource($_SERVER['REMOTE_ADDR']);
			move_uploaded_file($_FILES['config']['tmp_name'], $configpath."default.tgz");
		}
		if($_FILES['kernel']['name'] != ''){
			$bootos->setSource($_SERVER['REMOTE_ADDR']);
			move_uploaded_file($_FILES['kernel']['tmp_name'], $kernelpath."kernel");
		}
		if($_FILES['init']['name'] != ''){
			$bootos->setSource($_SERVER['REMOTE_ADDR']);
			move_uploaded_file($_FILES['init']['tmp_name'], $initpath."initramfs");
		}

		$bootosMapper->save($bootos);
		
		header('HTTP/1.0 201 Bootos edited');
	}
	
	public function addprebootAction()
	{
		
		list($rightroles) = $this->rightrolesMapper->findBy(array('rightID' => '40', 'roleID' => $this->membership->getRoleID()));
		if($rightroles == null){
			header('HTTP/1.0 403 No Right to Create Preboots');
			die();
		}
		
		$apikey = $this->_request->getParam('apikey');
		if($apikey == ""){
			header('HTTP/1.0 400 No API-Key');
			die();
		}
			
		$params = $this->_request->getParams();
		$source = $_SERVER['REMOTE_ADDR'];
		
		if($params['title'] == '' || $_FILES['preboot']['name'] == ''){
			header('HTTP/1.0 400 Title and Preboot must be set');
			die();
		}
		
		if($_FILES['preboot']['size'] == 0 && $_FILES['preboot']['name'] != ''){
			header('HTTP/1.0 400 File must be larger than 0 bytes');
			die();
		}	

		$prebootMapper = new Application_Model_PreBootMapper();
		$groupID = $this->membership->getGroupID();
		
		list($preboot) = $prebootMapper->findBy(array('groupid' => $groupID, 'title' => $params['title']));
		if($preboot != null){
			header('HTTP/1.0 400 Preboot already exists');
			die();
		}
		
		$preboot = new Application_Model_PreBoot();
		
		$preboot->setOptions($params);
		$preboot->setGroupID($groupID);
		$preboot->setSource($source);
		$preboot->setCreated(time());
		
		$prebootID = $prebootMapper->save($preboot);

		$prebootpath = "../resources/bootmedium/".$prebootID."/";
		mkdir($prebootpath ,0777, true);

		if($_FILES['preboot']['name'] != ''){
			move_uploaded_file($_FILES['preboot']['tmp_name'], $prebootpath."preboot.zip");
		}

		header('HTTP/1.0 201 Preboot created');
		
		
	}
	
	public function editprebootAction()
	{
		
		list($rightroles) = $this->rightrolesMapper->findBy(array('rightID' => '41', 'roleID' => $this->membership->getRoleID()));
		if($rightroles == null){
			header('HTTP/1.0 403 No Right to Edit Preboot');
			die();
		}
		
		$apikey = $this->_request->getParam('apikey');
		if($apikey == ""){
			header('HTTP/1.0 400 No API-Key');
			die();
		}
			
		$params = $this->_request->getParams();
		$source = $_SERVER['REMOTE_ADDR'];
		
		if($params['title'] == ''){
			header('HTTP/1.0 400 Title must be set');
			die();
		}
		
		if($_FILES['preboot']['size'] == 0 && $_FILES['preboot']['name'] != ''){
			header('HTTP/1.0 400 File must be larger than 0 bytes');
			die();
		}	
		
		$prebootMapper = new Application_Model_PreBootMapper();
		$groupID = $this->membership->getGroupID();
		$preboot = new Application_Model_PreBoot();

		list($preboot) = $prebootMapper->findBy(array('groupid' => $groupID, 'title' => $params['title']));
				
		if($preboot == null){
			header('HTTP/1.0 400 Preboot not found');
			die();
		}	
		
		$prebootsrc = $preboot->getSource();
		$prebootID = $preboot->getID();

		$preboot->setOptions($params);
		$preboot->setGroupID($groupID);
		$preboot->setSource($prebootsrc);
		$preboot->setCreated(time());
		
		$prebootpath = "../resources/bootmedium/".$prebootID."/";
		mkdir($prebootpath ,0777, true);

		if($_FILES['preboot']['name'] != ''){
			$preboot->setSource($source);			
			move_uploaded_file($_FILES['preboot']['tmp_name'], $prebootpath."preboot.zip");
		}
		
		$prebootMapper->save($preboot);

		header('HTTP/1.0 201 Preboot edited');
		
	}

	public function getinitramfsAction()
	{

		$bootosID = $this->thisSession->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 getconfigAction()
	{
		$bootmenuentryID = $this->thisSession->getBootmenuentryID();
		$bootmenuentry = new Application_Model_BootMenuEntries();
		$bmm = new Application_Model_BootMenuEntriesMapper();
		$bmm->find($bootmenuentryID,$bootmenuentry);

		$configID = $bootmenuentry->getConfigID();
		$bootosID = $this->thisSession->getBootosID();

		if(is_dir("../resources/bootos/$bootosID/config/")){

			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="default.tgz"');
			header('Pragma: no-cache');
			header('Expires: 0');

			if($configID == null){
				chdir("../resources/bootos/$bootosID/config/");
				passthru( "cat default.tgz");
			}else{
				$bootosuserMapper = new Application_Model_BootOsUserMapper();
				$bootosuser = $bootosuserMapper->findBy(array('configID' => $configID));
				
				$hash = md5(microtime(1));
				$tmp_conf = "../resources/config/$hash";
				mkdir($tmp_conf ,0777, true);
				exec("tar -C $tmp_conf -xf ../resources/bootos/$bootosID/config/default.tgz",$restul);
				exec("tar -C $tmp_conf/rootfs/ -xf ../resources/config/etc.tgz");

				$username = '';
				$userpassword = '';
				
				if($this->thisSession->getMembershipID() != null){
					$person = new Application_Model_Person();
					$personMapper = new Application_Model_PersonMapper();
					$membershipMapper = new Application_Model_MembershipMapper();
					$personID = $membershipMapper->find($this->thisSession->getMembershipID())->getPersonID();
					$person = $personMapper->find($personID);
					$username = strtolower($person->getName());
					$username = preg_replace("!\s!","",$username);
					$userpassword = $person->getLoginPassword();
				}
			
				foreach($bootosuser as $user){	
					
					if($user->getLogin() == '%username%'){
						$loginname = $username;
					}else{ 
						$loginname = $user->getLogin();
					}
					
					if($user->getPassword() == '%password%'){
						$password = $userpassword; 
					}else{
						$password = $user->getPassword();
					}
					
					if($user->getHometypeID() == 2){
						$homepath = $user->getHomepath();
					}elseif($user->getHometypeID() == 1){
						$homepath = "/media/openslx-stick/home/$loginname";
					}else{
						$homepath = "/home/$loginname";
					}
					
					if($loginname != '' && $password != ''){
						if($user->getHometypeID() == 1){
							exec("echo 'modprobe usb_storage' >> $tmp_conf/initramfs/postinit.local");
							exec("echo 'echo -n 'Mounting OpenSLX-Stick:'; while [ ! -d /dev/sdb1 ] \n do \n\t usleep 500000 \n\t mdev -s \n\t echo -n . \n done' >> $tmp_conf/initramfs/postinit.local");
							exec("echo 'mkdir -p /media/openslx-stick' >> $tmp_conf/initramfs/postinit.local");
							exec("echo 'mount /dev/sdb1 /media/openslx-stick' >> $tmp_conf/initramfs/postinit.local");
							exec("echo 'if [ -d /media/openslx-stick/boot ]; then \n\t if [ ! -d '".escapeshellarg("'"."/media/openslx-stick/home/".$loginname."'")."' ]; then \n\t\t mkdir -p '".escapeshellarg("'"."/media/openslx-stick/home/".$loginname."'")."' \n\t\t chroot /mnt useradd -d '".escapeshellarg("'".$homepath."'")."' -s /bin/bash -p '".escapeshellarg("'".$password."'")."' '".escapeshellarg("'".$loginname."'")."' \n\t else \n\t\t chroot /mnt useradd -d '".escapeshellarg("'".$homepath."'")."' -s '/bin/bash' -p '".escapeshellarg("'".$password."'")."' '".escapeshellarg("'".$loginname."'")."' \n\t fi \n else \n\t chroot /mnt useradd -d '".escapeshellarg("'"."/home/".$loginname."'")."' -m -s '/bin/bash' -p '".escapeshellarg("'".$password."'")."' '".escapeshellarg("'".$loginname."'")."' \n fi' >> $tmp_conf/initramfs/postinit.local");
						}
						else{
							exec("echo 'chroot /mnt useradd -d '".escapeshellarg("'".$homepath."'")."' -m -s /bin/bash -p '".escapeshellarg("'".$password."'")."' '".escapeshellarg("'".$loginname."'")."'' >> $tmp_conf/initramfs/postinit.local",$restul);
							exec("echo 'chroot /mnt sed -e \"s/AutoLoginEnable=.*/AutoLoginEnable=true/g;\" /etc/kde4/kdm/kdmrc > /tmp/tmpkdmrc && sed 21iAutoLoginUser=kiosk /tmp/tmpkdmrc > /mnt/etc/kde4/kdm/kdmrc && rm /tmp/tmpkdmrc' >> $tmp_conf/initramfs/postinit.local");
						}
					}
				}

				// create the gzipped tarfile.
				chdir($tmp_conf);
				passthru( "tar cz *");
				exec("rm -rf ../$hash");
				
			}
		}else{
			header('HTTP/1.0 404 Not Found');
		}
	}

	public function getkernelAction()
	{

		$bootosID = $this->thisSession->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 getkclAction()
	{


		$bmeID = $this->thisSession->getBootmenuentryID();

		if(is_numeric($bmeID)){

			$bmemapper = new Application_Model_BootMenuEntriesMapper();
			$bme = new Application_Model_BootMenuEntries();
			$bootosmapper = new Application_Model_BootOsMapper();
			$bmemapper->find($bmeID,$bme);

			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="kcl.txt"');
			header('Pragma: no-cache');
			header('Expires: 0');

			$kcl = $bootosmapper->find($bme->getBootosID())->getDefaultkcl();

			if($bme->getKcl() && $kcl != null){
				$result = $kcl . " alpha=" . $this->_request->getParam('alpha') . " file=http://".$_SERVER['HTTP_HOST']."/c/".$this->_request->getParam('alpha')."/default.tgz ".$bme->getKclappend();
			}else{
				$result = "alpha=" . $this->_request->getParam('alpha') . " file=http://".$_SERVER['HTTP_HOST']."/c/".$this->_request->getParam('alpha')."/default.tgz ".$bme->getKclappend();
			}
			$result = trim($result);
			header("Content-Length: ".(strlen($result)));

			echo $result;


		}

	}

	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

		$return_val =
		array(
   			'info' => 'This function is for debugging purpose only',
   			'kernel' => $this->generateURL('getkernel', 'alpha', $this->thisSession->getAlphasessionID(), "kernel"), 
   			'initramfs' => $this->generateURL('getinitramfs', 'alpha', $this->thisSession->getAlphasessionID(), "initramfs"),
   			'kcl' => $this->generateURL('getkcl', 'alpha', $this->thisSession->getAlphasessionID(), "kcl.txt"),
   			'config' => $this->generateURL('getconfig', 'alpha', $this->thisSession->getAlphasessionID(), 'default.tgz')
		);

		$result = $return_val;
		$result2 = "<table class='json'>";
		$result2 .= "<tr><td><b>info</b>: </td><td>".$result['info']."</td></tr>";
		$result2 .= "<tr><td><b>kernel</b>:  </td><td><a href=".$result['kernel'].">".$result['kernel']."<a></td></tr>";
		$result2 .= "<tr><td><b>initramfs</b>:  </td><td><a href=".$result['initramfs'].">".$result['initramfs']."<a></td></tr>";
		$result2 .= "<tr><td><b>kcl</b>:  </td><td><a href=".$result['kcl'].">".$result['kcl']."<a></td></tr>";
		$result2 .= "<tr><td><b>config</b>:  </td><td><a href=".$result['config'].">".$result['config']."<a></td></tr>";
		$result2 .= "</table>";
		echo $result2;
	}

	private function generateURL($action, $varname, $varvalue, $filename){
		$path = '/resource/'. $action .'/' . $varname .'/' . $varvalue .'/bootmenuentryID/'.$this->thisSession->getBootmenuentryID().'/file/' . $filename  ;
		$path = "http://" . $_SERVER['SERVER_NAME'] . $path;
		return $path;
	}

}