summaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
authorSimon2011-03-06 18:24:42 +0100
committerSimon2011-03-06 18:24:42 +0100
commit1e3fc3def6918568f4e36026c46feadbe3c24e7c (patch)
treed0cdacea52336e147b20eeca7d0c85277a38aeb8 /application
parentaufgeraeumt (diff)
downloadpbs2-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.php20
-rw-r--r--application/configs/application.ini2
-rw-r--r--application/controllers/FilterController.php181
-rw-r--r--application/views/scripts/filter/evaluate.phtml0
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