config modifications and such
[CBFWR.git] / libcbfwr / web.php
index eba5ce0..6baae23 100644 (file)
@@ -7,6 +7,8 @@ $MENU_ITEMS["30_Rules"]["link"] = "$BASE_URL/rules";
 $MENU_ITEMS["30_Rules"]["name"] = "Rules"; 
 $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 +26,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,12 +46,13 @@ 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";
@@ -49,27 +60,40 @@ class CBFWWeb {
                                case "rules":
                                        $bodyFunction = "CBFWRulesPage";
                                        break;
+                               case "admin":
+                                       $bodyFunction = "CBFWAdminPage";
+                                       break;
                                default:
                                        $bodyFunction = findUrl($url_s);
                        }
                } else {
                        $bodyFunction = "CBFBuildHomePage";
                }
-               CBFWpageBuilder(null, $bodyFunction);
+               if($bodyFunction != null) CBFWpageBuilder(null, $bodyFunction);
        }       
 }
 
+
+function CBFWAdminPage($urls)
+{
+       echo "im an admin page";
+}
+
 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();
        
        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 "</pre>";
        
 }
@@ -106,10 +130,10 @@ function CBFWAddMessage($messagelev, $message)
 
 function CBFWMessageBuilder()
 {
-
+       echo "message";
 }
 
-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 +177,11 @@ function CBFWpageBuilder($bodyClass, $bodyFunction, $bodycontent=null, $title="C
        
        // page top
        echo "<h1>CBFW</h1><br>";
-       echo "<table><tr><td>";
+       echo "<table><tr width=\"100%\"><td>";
        CBFWMessageBuilder();
-       echo "<td></tr><tr><td>";
+       echo "<td><td><align=\"right\">";
+       CBFWConfigStatus();
+       echo "</align></td></tr><tr><td>";
        
        // menu, then body
        echo "<table><tr><td>";
@@ -168,9 +194,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 +232,34 @@ function cbfw_getLastSeen($ip, $data)
        
 }
 
+function CBFWConfigStatus()
+{
+       $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";
+       }
+       
+       
+       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;
@@ -221,45 +275,6 @@ function cbfw_tdiffToAgo($time_in_sec)
        return $last;
 }
 
-function cbfw_isRemoteDir($url)
-{
-       file_get_contents($url);
-       //error_log("did file_get_contents on $url");
-       foreach($http_response_header as $key => $val) {
-               //error_log("got header of $key for $val");
-               if(preg_match("/.*Location:.*/", $val)) {
-                       //error_log("in details apt got location as $val from $url");
-                       $realloc = preg_replace("/.*: /", "", $val);
-                       $urlwithslash = $url."/";
-                       //echo "<br>in comp with<br>$urlwithslash<br>$realloc<br>";
-                       if(strcasecmp($realloc,$urlwithslash)==0) {
-                               //error_log("I believe $realloc is a directory redir for $url");
-                               return true;
-                       } else {
-                               //error_log("I dont believe $realloc is a directory redir for $url");
-                       }
-               }
-       }
-       return false;
-}
-
-function cbfw_fileExists($url)
-{
-       $fp = fopen($url, "r");
-       //error_og("did file_get_contents on $url");
-       $retval = false;
-       foreach($http_response_header as $key => $val) {
-               //error_log("got header of $key for $val");
-               if(preg_match("/.*HTTP\/.*200.*/", $val)) {
-                       //echo "is true\n";
-                       
-                       $retval = true;
-               }
-       }
-       fclose($fp);
-       return $retval;
-}
-
 function cbfw_startInstaller()
 {
        global $WEB_ROOT_FS, $BASE_URL;
@@ -316,5 +331,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