_filtermapper = new Application_Model_FilterMapper(); }catch (Zend_Exception $e) { echo "Error message 1: " . $e->getMessage() . "\n"; } $this->db = Zend_Db_Table::getDefaultAdapter(); } public function indexAction() { try{ $this->_filtermapper = new Application_Model_FilterMapper(); $this->view->filters = $this->_filtermapper->fetchAll(); }catch (Zend_Exception $e) { echo "Error message 2: " . $e->getMessage() . "\n"; } } public function addfilterAction() { $bmmapper = new Application_Model_BootMenuMapper(); //TODO get bootmenu by group $bootmenus = $bmmapper->fetchAll(); if (!isset($_POST["add"])){ $addfilterform = new dev_Form_FilterAdd(array('buttontext' => 'Create Filter','bootmenus'=>$bootmenus)); $this->view->addfilterform = $addfilterform; }else { $addfilterform = new dev_Form_FilterAdd(array('buttontext' => 'Create Filter','bootmenus'=>$bootmenus),$_POST); if ($addfilterform->isValid($_POST)) { try{ $newfilter = new Application_Model_Filter($_POST); $newfilter->setCreated(time()); // TODO: Ändere mit ACL $newfilter->setGroupID('1'); $newfilter->setMembershipID('1'); $newfilter2 = new Application_Model_FilterMapper(); $newfilter2->save($newfilter); $this->_redirect('/dev/filter'); return; }catch (Zend_Exception $e) { echo "Error message 2: " . $e->getMessage() . "\n"; } } $this->view->addfilterform = $addfilterform; } } public function removefilterAction() { $filterID = $this->_request->getParam('filterID'); // TODO: ACL implementieren ob er den filter löschen darf if(is_numeric($filterID)){ $deletefilter = new Application_Model_Filter(); $deletefilter->setID($filterID); $filtermapper = new Application_Model_FilterMapper(); $filtermapper->delete($deletefilter); } $this->_redirect('/dev/filter'); } public function editfilterAction() { $bmmapper = new Application_Model_BootMenuMapper(); //TODO get bootmenu by group $bootmenus = $bmmapper->fetchAll(); if (!isset($_POST["add"])){ // TODO: ACL implementieren ob er editieren darf $filterID = $this->_request->getParam('filterID'); $filter = new Application_Model_Filter(); $filtermapper = new Application_Model_FilterMapper(); $filtermapper->find($filterID,$filter); $filter2 = $filter->toArray(); $editfilterform = new dev_Form_FilterAdd(array('buttontext' => 'Edit Filter','bootmenus'=>$bootmenus)); $editfilterform->populate($filter2); $this->view->editfilterform = $editfilterform; } else{ try{ $filterID = $this->_request->getParam('filterID'); $editfilterform = new dev_Form_FilterAdd(array('buttontext' => 'Edit Filter','bootmenus'=>$bootmenus),$_POST); //TODO: ACL integrieren $_POST['groupID'] = 1; $_POST['membershipID'] = 1; $_POST['created'] = time(); if ($editfilterform->isValid($_POST)) { $newfilterenty = new Application_Model_Filter($_POST); $newfilterenty->setID($this->_request->getParam('filterID')); $newfilter2 = new Application_Model_FilterMapper(); $newfilter2->save($newfilterenty); echo 'valid'; $this->_redirect('/dev/filter'); } $this->view->editfilterform = $editfilterform; }catch (Zend_Exception $e) { echo "Error message 2: " . $e->getMessage() . "\n"; } } } public function addfilterentryAction() { // TODO: ACL implementieren ob er editieren darf if (!isset($_POST["add"])){ try{ $editfilterform = new dev_Form_FilterEntriesAdd( array( 'buttontext' => 'Add Filterentry', 'filterID' => $this->_request->getParam('filterID'), 'data' => $_POST )); $editfilterform->populate($_POST); $this->view->editfilterform = $editfilterform; }catch (Zend_Exception $e) { echo "Error message 2: " . $e->getMessage() . "\n"; } } else{ $editfilterform = new dev_Form_FilterEntriesAdd(array('buttontext' => 'Add Filterentry'),$_POST); if ($editfilterform->isValid($_POST)) { $newfilterenty = new Application_Model_FilterEntries(); $newfilterenty->setFilterID($_POST['filterID']); $newfilterenty->setFiltertypeID($_POST['filtertypeID']); if($_POST['filtertypeID'] == 1){ $newfilterenty->setFiltervalue($this->fillIP($_POST['filtervalue'])); $newfilterenty->setFiltervalue2($this->fillIP($_POST['filtervalue2'])); } else{ $newfilterenty->setFiltervalue($_POST['filtervalue']); $newfilterenty->setFiltervalue2($_POST['filtervalue2']); } $newfilter2 = new Application_Model_FilterEntriesMapper(); $newfilter2->save($newfilterenty); #print_a($newfilterenty); $this->_redirect('/dev/filter'); } $this->view->editfilterform = $editfilterform; } } public function editfilterentryAction() { if (!isset($_POST["add"])){ try{ $filterentriesID = $this->_request->getParam('filterentriesID'); $filterentry = new Application_Model_FilterEntries(); $filterentriesmapper = new Application_Model_FilterEntriesMapper(); $filterentriesmapper->find($filterentriesID,$filterentry); #$editfilterform->setFilterID($filterID); if(isset($_POST['filtertypeID']) && $_POST['filtertypeID'] != $filterentry->getFiltertypeID()){ $filterentry->setFiltertypeID($_POST['filtertypeID']) ; } $data = $filterentry->toArray(); print_a($data); $editfilterform = new dev_Form_FilterEntriesAdd( array('buttontext' => 'Edit Filterentry', 'data' => $data)); $editfilterform->populate($filterentry->toArray()); $this->view->editfilterform = $editfilterform; }catch (Zend_Exception $e) { echo "Error message 2: " . $e->getMessage() . "\n"; } } else{ try{ $filterentriesID = $this->_request->getParam('filterentriesID'); $editfilterform = new dev_Form_FilterEntriesAdd(array('buttontext' => 'Edit Filterentry'),$_POST); if ($editfilterform->isValid($_POST)) { if($_POST['filterID'] == '') unset($_POST['filterID']); $newfilterenty = new Application_Model_FilterEntries($_POST); $newfilterenty->setID($filterentriesID); if($_POST['filtertypeID'] == 1){ $newfilterenty->setFiltervalue($this->fillIP($_POST['filtervalue'])); $newfilterenty->setFiltervalue2($this->fillIP($_POST['filtervalue2'])); } else{ $newfilterenty->setFiltervalue($_POST['filtervalue']); $newfilterenty->setFiltervalue2($_POST['filtervalue2']); } $newfilter2 = new Application_Model_FilterEntriesMapper(); $newfilter2->save($newfilterenty); #print_a($newfilterenty); $this->_redirect('/dev/filter'); } $this->view->editfilterform = $editfilterform; }catch (Zend_Exception $e) { echo "Error message 2: " . $e->getMessage() . "\n"; } } } public function removefilterentryAction() { try{ $filterentriesID = $this->_request->getParam('filterentriesID'); // TODO: ACL implementieren ob er den filter löschen darf if(is_numeric($filterentriesID)){ $deletefilterentry = new Application_Model_FilterEntries(); $deletefilterentry->setID($filterentriesID); $filterentriesmapper = new Application_Model_FilterEntriesMapper(); $filterentriesmapper->delete($deletefilterentry); echo "ok"; } $this->_redirect('/dev/filter'); }catch (Zend_Exception $e) { echo "Error message 2: " . $e->getMessage() . "\n"; } } private function fillIP($ip) { $ar = explode(".",$ip); $representation = array(); foreach($ar as $part){ $representation[] = sprintf("%03s",$part); } return implode(".",$representation); } private function fillMac($ip) { $ar = explode(":",$ip); $representation = array(); foreach($ar as $part){ $representation[] = sprintf("%02s",$part); } return implode(":",$representation); } public function evaluateAction() { $db = $this->db; $showPartResults = false; // For Testing Filters $testFilter = (isset($_POST['submit']))?true:false; if($testFilter){ $ipAdress = $_POST['ip']; $macAdress = $_POST['mac']; $poolID = $_POST['poolID']; $bootisoID = $_POST['bootisoID']; $membershipID = $_POST['membershipID']; $groupID = $_POST['groupID']; $time = ($_POST['time']); $clientID = $_POST['clientID']; $weekday = $_POST['weekday']; $date = $_POST['date']; print_a('Input', array('ipAdress'=>$ipAdress, 'macAdress'=>$macAdress, 'poolID' => $poolID, 'bootisoID' => $bootisoID, 'membershipID'=>$membershipID, 'groupID'=>$groupID, 'time'=> $time." - ".date('d.m.Y H:i:s',$time), 'clientID' => $clientID, 'hardwarehash' => $hardwarehash, 'weekday' => $weekday, 'date' => $date)); } try{ $mysession = '1'; $set = array(); $session = new Application_Model_Session(); $sessionmapper = new Application_Model_SessionMapper(); $sessionmapper->find($mysession,$session); ######################################################### // IP Adress $filtertypID = 1; // get it from session_table with session_id from the session if(!$testFilter){ $ipAdress = $session->getIp(); } $ipAdress = str_replace(".","",$this->fillIP($ipAdress)); $select = $db->select() ->from(array('pbs_filterentries') ) ->where('filtertypeID = ?',$filtertypID) ->where('REPLACE(filtervalue,".","") <= ?',$ipAdress) ->where('? <= REPLACE(filtervalue2,".","")',$ipAdress); $stmt = $select->query(); $result = $stmt->fetchAll(); foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } if($showPartResults) print_a('ipAdress',$result,$set[$filtertypID]); ######################################################### // Mac range $filtertypID = 2; // get it from session_table with session_id from the session if(!$testFilter){ $client = new Application_Model_Client(); $clientmapper = new Application_Model_ClientMapper(); $clientmapper->find($session->getClientID(),$client); $macAdress = $client->getMacadress(); } try{ $macAdress = $this->fillMac($macAdress); $stmt = $db->query("SELECT * FROM pbs_filterentries WHERE filtertypeID = ".$filtertypID." AND filtervalue <= '".$macAdress."' AND '".$macAdress."' <= filtervalue2"); $result = $stmt->fetchAll(); foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } } catch(Exception $e){} if($showPartResults) print_a('macAdress',$result,$set[$filtertypID]); ######################################################### // PoolID $filtertypID = 3; // get PoolID from client_ID from session_id from the session if(!$testFilter){ $poolentry = new Application_Model_PoolEntries(); $poolentrymapper = new Application_Model_PoolEntriesMapper(); $poolentry = $poolentrymapper->findby(array('clientID' => $client->getID()),true); $poolentry = $poolentry[0]; $poolID = $poolentry['poolID']; } try{ $stmt = $db->query("SELECT * FROM pbs_filterentries WHERE filtertypeID = ".$filtertypID." AND filtervalue = ".$poolID." "); $result = $stmt->fetchAll(); if(count($result)>0){ foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } } } catch(Exception $e){} if($showPartResults) print_a('poolID',$result,$set[$filtertypID]); ######################################################### // ClientID $filtertypID = 8; // get client_ID from session_id from the session if(!$testFilter){ $clientID = $session->getClientID(); } try{ $stmt = $db->query("SELECT * FROM pbs_filterentries WHERE filtertypeID = ".$filtertypID." AND filtervalue = ".$clientID." "); $result = $stmt->fetchAll(); foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } } catch(Exception $e){} if($showPartResults) print_a('clientID',$result,$set[$filtertypID]); ######################################################### // BootIsoID $filtertypID = 4; // get BootIsoID from client_ID from session_id from the session if(!$testFilter){ $bootisoID = $session->getBootisoID(); } try{ $stmt = $db->query("SELECT * FROM pbs_filterentries WHERE filtertypeID = ".$filtertypID." AND filtervalue = ".$bootisoID." "); $result = $stmt->fetchAll(); foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } } catch(Exception $e){} if($showPartResults) print_a('bootisoID',$result,$set[$filtertypID]); ######################################################### // MembershipID $filtertypID = 5; if(!$testFilter){ // get membership from the session //TODO: GET MEMBERSHIP from SESSION $membershipID = 1; } try{ $stmt = $db->query("SELECT * FROM pbs_filterentries WHERE filtertypeID = ".$filtertypID." AND filtervalue = ".$membershipID." "); $result = $stmt->fetchAll(); foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } } catch(Exception $e){} if($showPartResults) print_a('membership',$result,$set[$filtertypID]); ######################################################### // GroupID $filtertypID = 6; if(!$testFilter){ // get membership from the session //TODO: GET GROUP from SESSION $groupID = 1; } try{ $stmt = $db->query("SELECT * FROM pbs_filterentries WHERE filtertypeID = ".$filtertypID." AND filtervalue = ".$groupID." "); $result = $stmt->fetchAll(); foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } } catch(Exception $e){} if($showPartResults) print_a('membership',$result,$set[$filtertypID]); ######################################################### // Time $filtertypID = 7; if(!$testFilter){ $time = time("H:i"); } $nowShort = $time; $nowShort = str_replace(":","",$nowShort); try{ $select = $db->select() ->from(array('pbs_filterentries') ) ->where('filtertypeID = ?',$filtertypID) ->where('REPLACE(filtervalue,":","") <= ? AND ? <= REPLACE(filtervalue2,":","")',$nowShort); $stmt = $select->query(); $result = $stmt->fetchAll(); foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } } catch(Exception $e){} if($showPartResults) print_a('time',$result,$set[$filtertypID]); ######################################################### // Hardwarehash $filtertypID = 9; if(!$testFilter){ // get hardwarehash from session $hardwarehash = 'aaaa'; } try{ $select = $db->select() ->from(array('pbs_filterentries') ) ->where('filtertypeID = ?',$filtertypID) ->where('`filtervalue` = ?',$hardwarehash); $stmt = $select->query(); $result = $stmt->fetchAll(); foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } } catch(Exception $e){} if($showPartResults) print_a('hardwarehash',$result,$set[$filtertypID]); ######################################################### // weekday $filtertypID = 10; if(!$testFilter){ $weekday = date('N'); } try{ $select = $db->select() ->from(array('pbs_filterentries') ) ->where('filtertypeID = ?',$filtertypID) ->where('filtervalue = ? ',$weekday); $stmt = $select->query(); $result = $stmt->fetchAll(); foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } } catch(Exception $e){} if($showPartResults) print_a('weekday',$result,$set[$filtertypID]); ######################################################### // weekday $filtertypID = 11; if(!$testFilter){ $date = date('d.m.Y'); } try{ $select = $db->select() ->from(array('pbs_filterentries') ) ->where('filtertypeID = ?',$filtertypID) ->where('REPLACE(filtervalue,".","") <= ? AND ? <= REPLACE(filtervalue2,".","")',$date); $stmt = $select->query(); $result = $stmt->fetchAll(); foreach($result as $r){ $set[$filtertypID][] = $r['filterID']; } } catch(Exception $e){} if($showPartResults) print_a('weekday',$result,$set[$filtertypID]); ######################################## // ErgebnisSet auswerten print_a('the result sets of the filtertypes',$set); // Merging of the resultsets of the filter $kk = array(); foreach($set as $myset){ $kk = array_merge($kk,$myset); } $set = $kk; // counting how often a filter is evaluated at database $a = array(); foreach($set as $k=> $s){ $a[$s] += 1; } print_a('Übereinstimmungen pro Filter',$a); // Get the number of filtertypes every filter has $stmt = $db->query('SELECT filterID, COUNT(filtertypeID) as num FROM pbs_filterentries GROUP BY filterID'); $resultset = $stmt->fetchAll(); foreach($resultset as $d){ $database[$d['filterID']] = $d['num']; } print_a('Anzahl Filterentries in Datenbank',$database); // remove all filters from resultset, which to few filtertypes satisfied $result = array(); foreach($a as $i=>$b){ if($a[$i] < $database[$i]){ unset($a[$i]); } else{ $result[] = $i; } } print_a('True Filters',$result); // now selecting the filter with the highest priority $query = 'SELECT filterID, bootmenuID, priority FROM pbs_filter WHERE '; foreach($result as $e){ $queryTmp[] = "filterID = '$e'"; } $query .= implode(" OR ", $queryTmp); $query .= 'ORDER BY priority DESC LIMIT 0,1'; $bootmenuID = 'null'; try{ $stmt = $db->query($query); $resultset = $stmt->fetchAll(); $bootmenuID = $resultset[0]['bootmenuID']; } catch(Exception $e){ } if($bootmenuID != 'null'){ $bm = new Application_Model_BootMenu(); $bmmapper = new Application_Model_BootMenuMapper(); $bmmapper->find($bootmenuID,$bm); echo "

Goto BootmenuID: ".$bootmenuID."

"; } else{ echo "

No Result :-(

"; } }catch (Zend_Exception $e) { echo "class: ".get_class($e)."
\n"; echo "Error message 2: " . $e->getMessage() . "\n"; } } public function testevaluateAction() { $pm = new Application_Model_PoolMapper(); $pools = $pm->fetchAll(); $bim = new Application_Model_BootIsoMapper(); $bootisos = $bim->fetchAll(); $mm = new Application_Model_MembershipMapper(); $memberships = $mm->fetchAll(); $gm = new Application_Model_GroupMapper(); $groups = $gm->fetchAll(); $cm = new Application_Model_ClientMapper(); $clients = $cm->fetchAll(); $filterevaluate = new dev_Form_FilterEvaluate( array( 'pools' => $pools, 'bootisos' => $bootisos, 'memberships' => $memberships, 'groups' => $groups, 'clients' => $clients, )); $filterevaluate->populate(array( 'ip' => '132.230.5.6', 'mac' => '08:00:20:ae:fd:7e', 'time'=>date('d.m.Y H:i')) ); $this->view->filterevaluate = $filterevaluate; } }