diff options
| author | Simon | 2011-03-06 18:24:42 +0100 |
|---|---|---|
| committer | Simon | 2011-03-06 18:24:42 +0100 |
| commit | 1e3fc3def6918568f4e36026c46feadbe3c24e7c (patch) | |
| tree | d0cdacea52336e147b20eeca7d0c85277a38aeb8 /application | |
| parent | aufgeraeumt (diff) | |
| download | pbs2-1e3fc3def6918568f4e36026c46feadbe3c24e7c.tar.gz pbs2-1e3fc3def6918568f4e36026c46feadbe3c24e7c.tar.xz pbs2-1e3fc3def6918568f4e36026c46feadbe3c24e7c.zip | |
print_a funktion zum debugging hinzugefügt damit sie von überall benutzbar ist && evaluate in Filter zu großen Teilen fertig, ebenso die Auswertung, welche BootMenuID zurückgegeben werden soll
Diffstat (limited to 'application')
| -rw-r--r-- | application/Bootstrap.php | 20 | ||||
| -rw-r--r-- | application/configs/application.ini | 2 | ||||
| -rw-r--r-- | application/controllers/FilterController.php | 181 | ||||
| -rw-r--r-- | application/views/scripts/filter/evaluate.phtml | 0 |
4 files changed, 163 insertions, 40 deletions
diff --git a/application/Bootstrap.php b/application/Bootstrap.php index 6ac8a0e..a836253 100644 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -8,4 +8,24 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap $auth->setStorage(new Zend_Auth_Storage_Session('auth')); } } +function print_a(){ + $numargs = func_num_args(); + if($numargs>1){ + $out = ''; + ob_start(); + echo "<div style='background-color:#FFCC33;border:1px solid black;margin:3px;padding:5px;'>"; + for($a=0;$a<$numargs;$a++) + print_a(func_get_arg($a)); + echo "</div>"; + $out .= ob_get_contents(); + ob_end_clean(); + echo $out; + }else{ + echo "<pre style='background-color:#FFDF80;border:1px solid #000;margin:3px;padding:5px;'>"; + $a = func_get_arg(0); + $a = (is_bool($a))?(($a)?'true':'false'):$a; + print_r($a); + echo "</pre>"; + } +} diff --git a/application/configs/application.ini b/application/configs/application.ini index 6970da3..9bfaec2 100644 --- a/application/configs/application.ini +++ b/application/configs/application.ini @@ -10,7 +10,7 @@ resources.frontController.params.displayExceptions = 0 resources.db.adapter = PDO_MYSQL resources.db.params.host = localhost resources.db.params.username = root -resources.db.params.password = lsfks +resources.db.params.password = 123456 resources.db.params.dbname = pbs resources.db.isDefaultTableAdapter = true diff --git a/application/controllers/FilterController.php b/application/controllers/FilterController.php index 55188cf..ab24ce2 100644 --- a/application/controllers/FilterController.php +++ b/application/controllers/FilterController.php @@ -4,7 +4,7 @@ class FilterController extends Zend_Controller_Action { private $_filtermapper = null; - + private $db; public function init() { try{ @@ -12,6 +12,7 @@ class FilterController extends Zend_Controller_Action }catch (Zend_Exception $e) { echo "Error message 1: " . $e->getMessage() . "\n"; } + $this->db = Zend_Db_Table::getDefaultAdapter(); } public function indexAction() @@ -254,48 +255,150 @@ class FilterController extends Zend_Controller_Action } return implode(".",$representation); } - public function evaluate(){ + 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; + try{ + ######################################################### + // IP Adress + $filtertypID = 1; + $ipAdress = "111.10.10.10"; + $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]); - // IP bereich - /* - $ipAdress = $this->fillIP('192.168.2.1'); - if( ( replace(".","",filtervalue) <= replace(".","",$ipAdress) - && replace(".","",$ipAdress) <= replace(".","",filtervalue2) - // resultset - */ - ######################################################### - // Mac bereich - /* - - */ - ######################################################### - // PoolID - /* - If client comes from a specific pool - */ - ######################################################### - // BootIso - /* - WHERE bootiso = bootiso - */ - ######################################################### - // Membership - /* + ######################################################### + // Mac range + $filtertypID = 2; + $macAdress = "00:1e:0b:27:f4:99"; + $macAdress = str_replace(":","",$this->fillMac($ipAdress)); + $stmt = $db->query("SELECT * FROM pbs_filterentries WHERE + filtertypeID = ".$filtertypID." AND + CONV(HEX('filtervalue'),16,10) <= CONV(HEX('".$macAdress."'),16,10) AND + CONV(HEX('".$macAdress."'),16,10) <= CONV(HEX('filtervalue2'),16,10)"); + $result = $stmt->fetchAll(); + foreach($result as $r){ + $set[$filtertypID][] = $r['filterID']; + } + if($showPartResults) + print_a('macAdress',$result,$set[$filtertypID]); + ######################################################### + // PoolID + $filtertypID = 3; + /* + If client comes from a specific pool + */ + ######################################################### + // BootIso + $filtertypID = 4; + /* + WHERE bootiso = bootiso + */ + ######################################################### + // Membership + $filtertypID = 5; + /* + + */ + ######################################################### + // Group + $filtertypID = 6; + /* - */ - ######################################################### - // Group - ######################################################### - // Time - /* + */ + ######################################################### + // Time + $filtertypID = 7; $nowShort = date('H-i',time()); $nowLong = date('Y-m-d-H-i',time()); - if( ( replace("-","",filtervalue) <= replace("-","",$nowShort) - && replace("-","",$nowShort) <= replace("-","",filtervalue2) - ||( replace("-","",filtervalue) <= replace("-","",$nowLong) - && replace("-","",$nowLong) <= replace("-","",filtervalue2)) - // resultset - */ + + $nowShort = str_replace("-","",$nowShort); + $nowLong = str_replace("-","",$nowLong); + + $select = $db->select() + ->from(array('pbs_filterentries') + ) + ->where('filtertypeID = ?',$filtertypID) + ->where('REPLACE(filtervalue,"-","") <= ? AND ? <= REPLACE(filtervalue2,"-","")',$nowShort) + ->orWhere('REPLACE(filtervalue,"-","") <= ? AND ? <= REPLACE(filtervalue2,"-","")',$nowLong); + + $stmt = $select->query(); + $result = $stmt->fetchAll(); + foreach($result as $r){ + $set[$filtertypID][] = $r['filterID']; + } + if($showPartResults) + print_a('time',$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 + foreach($set as $k=> $s){ + $a[$s] += 1; + } + + // 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']; + } + + // remove all filters from resultset, which to few filtertypes satisfied + foreach($a as $i=>$b){ + if($a[$i] < $database[$i]){ + unset($a[$i]); + } + else{ + $result[] = $i; + } + } + + print_a('result set of filterIDs',$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'; + $stmt = $db->query($query); + $resultset = $stmt->fetchAll(); + print_a($resultset); + echo "<h1>".$resultset[0]['bootmenuID']."</h1>"; + + }catch (Zend_Exception $e) { + echo "class: ".get_class($e)."<br>\n"; + echo "Error message 2: " . $e->getMessage() . "\n"; + } } } diff --git a/application/views/scripts/filter/evaluate.phtml b/application/views/scripts/filter/evaluate.phtml new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/application/views/scripts/filter/evaluate.phtml |
