moved interfaces ui into a seperate php file.
[CBFWR.git] / libcbfwr / web.php
index e9c319c..289fe19 100644 (file)
@@ -5,8 +5,12 @@ $MENU_ITEMS["20_Objects"]["link"] = "$BASE_URL/objects";
 $MENU_ITEMS["20_Objects"]["name"] = "Objects"; 
 $MENU_ITEMS["30_Rules"]["link"] = "$BASE_URL/rules"; 
 $MENU_ITEMS["30_Rules"]["name"] = "Rules"; 
+$MENU_ITEMS["15_Routes"]["link"] = "$BASE_URL/routing"; 
+$MENU_ITEMS["15_Routes"]["name"] = "Routing"; 
 $MENU_ITEMS["10_Interfaces"]["link"] = "$BASE_URL/interfaces"; 
 $MENU_ITEMS["10_Interfaces"]["name"] = "Interfaces"; 
+$MENU_ITEMS["05_Admin"]["link"] = "$BASE_URL/admin"; 
+$MENU_ITEMS["05_Admin"]["name"] = "Admin"; 
 
 // if i believed in name spacing in php, i'd use it.
 error_log("cbfwweb loaded");
@@ -24,10 +28,18 @@ class CBFWWeb {
                $bodycontent = null;
                
                $conf = new Config();
-               $conf->loadConfig();
+               $comms = new Comms(); 
+               $conf->loadConfig($comms->getConfig(0));
                $rconfig = $conf->getConfig();
                
-               if($rconfig["status"] != "conf") cbfw_startinstaller();
+               if($rconfig["status"] != "conf") {
+                       if($rconfig["status"] == "nodir") {
+                               cbfw_startnodir();
+                               return 0;
+                       }
+                       cbfw_startinstaller();
+                       return 0;
+               }
                
                
                if(isset($_REQUEST["q"])) {
@@ -36,40 +48,61 @@ class CBFWWeb {
                        // ok, now we try and find the basics
                        $url_s = explode("/", $url);
                        
+                       $bodyFunction = null;
                        switch($url_s[0]) {
                                case "zones":
-                                       $bodyFunction = "CBFWZonesPage";
+                                       CBFWZonesPage($url_s);
                                        break;
                                case "interfaces":
-                                       $bodyFunction = "CBFWInterfacesPage";
+                                       CBFWInterfacesPage($url_s);
                                        break;
                                case "objects":
-                                       $bodyFunction = "CBFWObjectsPage";
+                                       CBFWObjectsPage($url_s);
+                                       break;
+                               case "routing":
+                                       CBFWRoutingPage($url_s);
                                        break;
                                case "rules":
                                        $bodyFunction = "CBFWRulesPage";
                                        break;
+                               case "changes":
+                                       CBFWChangesPage($url_s);
+                                       break;
+                               case "admin":
+                                       CBFWAdminPage($url_s);
+                                       break;
                                default:
                                        $bodyFunction = findUrl($url_s);
                        }
                } else {
                        $bodyFunction = "CBFBuildHomePage";
                }
-               CBFWpageBuilder(null, $bodyFunction);
+               if($bodyFunction != null) CBFWpageBuilder(null, $bodyFunction);
        }       
 }
 
+
 function CBFBuildHomePage($urls)
 {
        echo "Must remember this, gotta rules could apply to multiple zones not just one<br>";
        echo "i.e.: add rule reject from object/host/hostname to address6/2003::123 in zones Zone/zonename/rulenum Zone/zonename/rulenum";
-       $conf = new Config();
-       $conf->loadConfig();
        
+       $comms = new Comms();
+       
+       
+       CBFWAddMessage("1", "i am a message");
        echo "<pre>";
-       print_r($conf->getConfig());
+       print_r($comms->getConfig(0));
+       echo "\n\n\n";
+       print_r($comms->getConfig(1));
+       echo "\n\n\n";
+       print_r($comms->getConfig(2));
        echo "\n\n\n";
-       print_r($conf->getBootConfig());
+       print_r($comms->getConfig(3));
+       echo "\n\n\n";
+       print_r($comms->getConfig(4));
+       echo "\n\n\n";
+       print_r($comms->getConfig(5));
        echo "</pre>";
        
 }
@@ -101,15 +134,50 @@ function gcam($m, $s)
 
 function CBFWAddMessage($messagelev, $message)
 {
+       $comms = new Comms();
+       $msgs = $comms->getConfig(6);
+       $cnum = 0;
+       if($msgs != false) {
+               foreach($msgs as $key=>$val) {
+                       if($key >= $cnum) $cnum = $key+1;
+               }
+       } else {
+               $msgs = array();
+       }
+       $msgs[$cnum]["timestamp"] = time();
+       $msgs[$cnum]["level"] = $messagelev;
+       $msgs[$cnum]["message"] = $message;
        
+       $comms->putConfig($msgs, 6);
 }
 
 function CBFWMessageBuilder()
 {
-
+       // show only 10 messages on this page
+       $maxshow = 6;
+       
+       $comms = new Comms();
+       
+       $msgs = $comms->getConfig(6);
+       if($msgs != false) {
+               krsort($msgs);
+       }
+       $show = 0;
+       if(count($msgs) > 0) {
+               echo "<table>";
+               foreach($msgs as $key => $val) {
+                       $datetime = $val["timestamp"];
+                       $sev = $val["level"];
+                       $message = $val["message"];
+                       echo "<tr><td>$datetime</td><td>$sev</td><td>$message</td></tr>";
+                       $show++;
+                       if($show >= $maxshow) break;
+               }
+               echo "</table>";
+       }
 }
 
-function CBFWpageBuilder($bodyClass, $bodyFunction, $bodycontent=null, $title="CBFW")
+function CBFWpageBuilder($bodyClass, $bodyFunction, $bodycontent=null, $title="CBFW", $bodyfunctiondata=null)
 {
        global $WEB_ROOT_FS, $BASE_URL;
        
@@ -153,9 +221,11 @@ function CBFWpageBuilder($bodyClass, $bodyFunction, $bodycontent=null, $title="C
        
        // page top
        echo "<h1>CBFW</h1><br>";
-       echo "<table><tr><td>";
+       echo "<table width=\"100%\"><tr width=\"100%\"><td>";
        CBFWMessageBuilder();
-       echo "<td></tr><tr><td>";
+       echo "<td><td align=\"right\">";
+       CBFWConfigStatus();
+       echo "</td></tr><tr><td>";
        
        // menu, then body
        echo "<table><tr><td>";
@@ -168,9 +238,9 @@ function CBFWpageBuilder($bodyClass, $bodyFunction, $bodycontent=null, $title="C
        }
        
        if($bodyClass != null) {
-               $bodyClass->$bodyFunction($url);
+               $bodyClass->$bodyFunction($bodyfunctiondata);
        } else if( $bodyFunction != null) {
-               $bodyFunction($url);
+               $bodyFunction($bodyfunctiondata);
        } else echo $bodycontent;
        echo "</td></tr></table>";
        
@@ -206,6 +276,36 @@ function cbfw_getLastSeen($ip, $data)
        
 }
 
+function CBFWConfigStatus()
+{
+       global $WEB_ROOT_FS, $BASE_URL;
+       
+       $comms = new Comms();
+       
+       $conf0 = $comms->getConfig(0);
+       $conf1 = $comms->getConfig(2);
+       $conf2 = $comms->getConfig(3);
+       
+       if($conf1["status"] == "nochange") {
+               $saved = "Current";
+               $running = "Current";
+       } else {
+               $saved = "Old";
+               $running = "Current";           
+       }
+       if($conf2["status"] == "nochange") {
+               $client = "Current";
+       } else {
+               $ch = $conf2["status"];
+               $client = "$ch Changes <a href=\"$BASE_URL/changes/show\">Show</a>";
+       }
+       
+       
+       echo "Saved Config: $saved<br>";
+       echo "Running Config: $running<br>";
+       echo "Client Config: $client<br>";
+}
+
 function cbfw_tdiffToAgo($time_in_sec)
 {
        $tdiff = $time_in_sec;
@@ -277,5 +377,15 @@ Now, tell me where you want me to create the webconfig file:<br>
 <?php 
 }
 
+function cbfw_startnodir()
+{
+?>
+<html>
+<h1>Cant Run</h1>
+There is no config and no directory where i can store one. Login to the server and either create /var/run/cbfwr or <?php echo $LIB_ROOT_FS?>/var
+</html>
+<?php
+}
+
 
 ?>
\ No newline at end of file