diff options
Diffstat (limited to 'application/modules/user/controllers/BootosController.php')
| -rw-r--r-- | application/modules/user/controllers/BootosController.php | 204 |
1 files changed, 60 insertions, 144 deletions
diff --git a/application/modules/user/controllers/BootosController.php b/application/modules/user/controllers/BootosController.php index 06eb60c..92dcc5f 100644 --- a/application/modules/user/controllers/BootosController.php +++ b/application/modules/user/controllers/BootosController.php @@ -86,15 +86,13 @@ class user_BootosController extends Zend_Controller_Action $this->view->bootoslist = array_reverse($this->view->bootoslist); - $this->view->update = array(); $update = $this->_request->getParam('checkupdate'); $groupMapper = new Application_Model_GroupMapper(); if(count($this->view->bootoslist)>0){ foreach ($this->view->bootoslist as $bootos){ - $this->view->update[$bootos->getID()] = $update && $this->checkupdateAction($bootos); if($bootos->getDefaultkcl() == null) - $bootos->setDefaultkcl("none (edit Bootos to set KCL)"); + $bootos->setDefaultkcl("none (edit Bootos to set KCL)"); $bootos->setGroupID("[".$bootos->getGroupID()."] ".$groupMapper->find($bootos->getGroupID())->getTitle()); $bootos->setCreated(date(Zend_Registry::get('dateformat'),$bootos->getCreated())); $bootos->setExpires(date(Zend_Registry::get('dateformat'),$bootos->getExpires())); @@ -133,7 +131,7 @@ class user_BootosController extends Zend_Controller_Action //ACL Darf er BootISOs erstellen? if(!Pbs_Acl::checkRight('boc')) - $this->_redirect('/user/bootos/index/page/'.$this->page.'/addresult/forbidden'); + $this->_redirect('/user/bootos/index/page/'.$this->page.'/addresult/forbidden'); $groupID = $this->membership->getGroupID(); @@ -158,27 +156,18 @@ class user_BootosController extends Zend_Controller_Action $bootos->setGroupID($this->membership->getGroupID()); $bootos->setCreated(time()); + $bootos->setSource($_SERVER['REMOTE_ADDR']); try { - $path_tmp = "../resources/bootos/"; - mkdir($path_tmp ,0777, true); - - $hash = md5(microtime(1)); - exec("wget -O '".$path_tmp."kernel".$hash."' ".escapeshellcmd($bootos->getPath_kernel())." 2>&1 | grep 'saved'", $status); - exec("wget -O '".$path_tmp."initramfs".$hash."' ".escapeshellcmd($bootos->getPath_init())." 2>&1 | grep 'saved'", $status2); - exec("wget -O '".$path_tmp."default".$hash."' ".escapeshellcmd($bootos->getPath_config())." 2>&1 | grep 'saved'", $status3); - - if(!array_pop($status) && $bootos->getPath_kernel() != null || !array_pop($status2) && $bootos->getPath_init() != null || !array_pop($status3) && $bootos->getPath_config() != null ){ - $this->view->bootosForm = $bootosForm; - $pbsNotifier = new Pbs_Notifier(); - echo $pbsNotifier->notify('The Resource was not found on the specified path','error'); - - return; - } - $bootosID = $this->bootosMapper->save($bootos); + if( $_FILES['kernel']['size'] == 0 && $_FILES['kernel']['name'] != '' || + $_FILES['init']['size'] == 0 && $_FILES['init']['name'] != '' || + $_FILES['config']['size'] == 0 && $_FILES['config']['name'] != '' ){ + $this->_redirect('/user/preboot/index/page/'.$this->page.'/addresult/file'); + } + $initpath = "../resources/bootos/".$bootosID."/initramfs/"; $kernelpath = "../resources/bootos/".$bootosID."/kernel/"; $configpath = "../resources/bootos/".$bootosID."/config/"; @@ -187,9 +176,15 @@ class user_BootosController extends Zend_Controller_Action mkdir($kernelpath ,0777, true); mkdir($configpath ,0777, true); - exec("mv ../resources/bootos/kernel$hash $kernelpath"."kernel"); - exec("mv ../resources/bootos/initramfs$hash $initpath"."initramfs"); - exec("mv ../resources/bootos/config$hash $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"); + } + if($_FILES['config']['name'] != ''){ + move_uploaded_file($_FILES['config']['tmp_name'], $configpath."default.tgz"); + } }catch(Zend_Exception $e) @@ -208,89 +203,10 @@ class user_BootosController extends Zend_Controller_Action $this->view->bootosForm = $bootosForm; } - public function checkupdateAction($bootos) - { - - //ACL Is he allowed to update Preboots? - if(!Pbs_Acl::checkRight('bou')) - $this->_redirect('/user/preboot/index/page/'.$this->page.'/updateresult/forbidden'); - - $bootosID = $bootos->getID(); - - if(is_file("../resources/bootos/$bootosID/kernel/kernel") && is_file("../resources/bootos/$bootosID/initramfs/initramfs") && is_file("../resources/bootos/$bootosID/config/config.tgz")){ - $kernelolddate = filemtime("../resources/bootos/".$bootosID."/kernel/kernel"); - $initolddate = filemtime("../resources/bootos/".$bootosID."/initramfs/initramfs"); - $configolddate = filemtime("../resources/bootos/".$bootosID."/config/default.tgz"); - - } - else - { - $pbsNotifier = new Pbs_Notifier(); - $this->view->notification = $pbsNotifier->notify('There are updates available','ok'); - return true; - } - - exec("wget --server-response --spider '".escapeshellcmd($bootos->getPath_kernel())."' 2>&1 | grep 'Last-Modified:'", $kerneldate); - exec("wget --server-response --spider '".escapeshellcmd($bootos->getPath_init())."' 2>&1 | grep 'Last-Modified:'", $initdate); - exec("wget --server-response --spider '".escapeshellcmd($bootos->getPath_config())."' 2>&1 | grep 'Last-Modified:'", $configdate); - - $kerneldate = strtotime(trim(str_replace('Last-Modified:', '', array_pop($kerneldate)))); - $initdate = strtotime(trim(str_replace('Last-Modified:', '', array_pop($initdate)))); - $configdate = strtotime(trim(str_replace('Last-Modified:', '', array_pop($configdate)))); - - //print_a($bootos->getPath_kernel(),$kerneldate,$kernelolddate,$initname,$initdate,$initolddate); - - if($kerneldate > $kernelolddate || $initdate > $initolddate || $configdate > $configolddate){ - $this->view->notification = $pbsNotifier->notify('There are updates available','ok'); - return true; - }else{ - return false; - } - - } - - public function updatebootosAction() - { - - //ACL Is he allowed to update Preboots? - if(!Pbs_Acl::checkRight('bou')) - $this->_redirect('/user/bootiso/index/page/'.$this->page.'/updateresult/forbidden'); - - $bootosID = $this->_request->getParam('bootosID'); - if (!is_numeric($bootosID)) - $this->_redirect('/user/bootos/index/page/'.$this->page.'/updateresult/forbidden'); - - $bootos = $this->bootosMapper->find($bootosID); - - if($this->membership->getGroupID() != $bootos->getGroupID()) - $this->_redirect('/user/bootos/index/page/'.$this->page.'/updateresult/forbidden'); - - $initpath = "../resources/bootos/".$bootosID."/initramfs/"; - $kernelpath = "../resources/bootos/".$bootosID."/kernel/"; - $configpath = "../resources/bootos/".$bootosID."/config/"; - $path_tmp = "../resources/bootos/"; - - $hash = md5(microtime(1)); - exec("wget -O '".$path_tmp."kernel".$hash."' ".escapeshellcmd($bootos->getPath_kernel())." 2>&1 | grep 'saved'", $status); - exec("wget -O '".$path_tmp."initramfs".$hash."' ".escapeshellcmd($bootos->getPath_init())." 2>&1 | grep 'saved'", $status2); - exec("wget -O '".$path_tmp."config".$hash."' ".escapeshellcmd($bootos->getPath_config())." 2>&1 | grep 'saved'", $status3); - - if(!array_pop($status) || !array_pop($status2) || !array_pop($status3)){ - $this->_redirect('/user/bootos/index/page/'.$this->page.'/updateresult/404'); - //TODO Delete Files in tmp - } - - exec("mv ../resources/bootos/kernel$hash $kernelpath"."kernel"); - exec("mv ../resources/bootos/initramfs$hash $initpath"."initramfs"); - exec("mv ../resources/bootos/config$hash $initpath"."default.tgz"); - - $this->_redirect('/user/bootos/index/page/'.$this->page.'/updateresult/ok'); - } - public function editbootosAction() { - //ACL Is he allowed to edit Preboots? + //ACL Is he allowed to edit Bootos? if(!Pbs_Acl::checkRight('boe') && !Pbs_Acl::checkRight('boem')) $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/forbidden'); @@ -329,58 +245,58 @@ class user_BootosController extends Zend_Controller_Action $bootos = new Application_Model_BootOs($_POST); $bootos->setGroupID($this->membership->getGroupID()); + $bootos->setSource($bootosold->getSource()); $bootos->setCreated(time()); $bootos->setID($bootosID); - if( $bootos->getSource() != $bootosold->getSource() || - $bootos->getDistro() != $bootosold->getDistro() || - $bootos->getDistroversion() != $bootosold->getDistroversion() || - $bootos->getShare() != $bootosold->getShare() || - $bootos->getShortname() != $bootosold->getShortname() || - $bootos->getDefaultkcl() != $bootosold->getDefaultkcl() || - $bootos->getExpires() != $bootosold->getExpires() || - $bootos->getPublic() != $bootosold->getPublic() ){ - //ACL Is he allowed to edit this? - if(!Pbs_Acl::checkRight('boe')) - $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/forbidden'); - } - - if($bootos->getPath_config() != $bootosold->getPath_config() || $bootos->getPath_kernel() != $bootosold->getPath_kernel() || $bootos->getPath_init() != $bootosold->getPath_init()){ - //ACL Is he allowed to edit the Kernel/Init Path? - if(!Pbs_Acl::checkRight('boe')) - $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/forbidden'); - - $path_tmp = "../resources/bootos/"; - - - $hash = md5(microtime(1)); - exec("wget -O '".$path_tmp."kernel".$hash."' ".escapeshellcmd($bootos->getPath_kernel())." 2>&1 | grep 'saved'", $status); - exec("wget -O '".$path_tmp."initramfs".$hash."' ".escapeshellcmd($bootos->getPath_init())." 2>&1 | grep 'saved'", $status2); - exec("wget -O '".$path_tmp."config".$hash."' ".escapeshellcmd($bootos->getPath_config())." 2>&1 | grep 'saved'", $status3); - - if(!array_pop($status) && $bootos->getPath_kernel() != null || !array_pop($status2) && $bootos->getPath_init() != null || !array_pop($status3) && $bootos->getPath_config() != null ){ - $this->view->bootosForm = $bootosForm; - $pbsNotifier = new Pbs_Notifier(); - echo $pbsNotifier->notify('The Resource was not found on the specified path','error'); - - return; + try { + + if( $bootos->getDistro() != $bootosold->getDistro() || + $bootos->getDistroversion() != $bootosold->getDistroversion() || + $bootos->getShare() != $bootosold->getShare() || + $bootos->getShortname() != $bootosold->getShortname() || + $bootos->getDefaultkcl() != $bootosold->getDefaultkcl() || + $bootos->getExpires() != $bootosold->getExpires() || + $bootos->getPublic() != $bootosold->getPublic() ){ + //ACL Is he allowed to edit this? + if(!Pbs_Acl::checkRight('boe')) + $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/forbidden'); } - + + if($_FILES['kernel']['name'] != '' || $_FILES['init']['name'] != '' || $_FILES['config']['name'] != ''){ + //ACL Is he allowed to edit the Kernel/Init Path? + if(!Pbs_Acl::checkRight('boe')) + $this->_redirect('/user/bootos/index/page/'.$this->page.'/modifyresult/forbidden'); + } + + if( $_FILES['kernel']['size'] == 0 && $_FILES['kernel']['name'] != '' || + $_FILES['init']['size'] == 0 && $_FILES['init']['name'] != '' || + $_FILES['config']['size'] == 0 && $_FILES['config']['name'] != '' ){ + $this->_redirect('/user/bootos/index/page/'.$this->page.'/addresult/file'); + } + $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); - - exec("mv ../resources/bootos/kernel$hash $kernelpath"."kernel"); - exec("mv ../resources/bootos/initramfs$hash $initpath"."initramfs"); - exec("mv ../resources/bootos/config$hash $initpath"."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"); + } + if($_FILES['config']['name'] != ''){ + $bootos->setSource($_SERVER['REMOTE_ADDR']); + move_uploaded_file($_FILES['config']['tmp_name'], $configpath."default.tgz"); + } - try { $this->bootosMapper->save($bootos); }catch(Zend_Exception $e) |
