$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");
$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"])) {
// 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(rand(1,6), "i am a message");
echo "<pre>";
- print_r($conf->getConfig());
+ print_r($comms->getConfig(0));
echo "\n\n\n";
- print_r($conf->getBootConfig());
+ print_r($comms->getConfig(1));
+ echo "\n\n\n";
+ print_r($comms->getConfig(2));
+ echo "\n\n\n";
+ 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>";
}
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 = strftime("%c", $val["timestamp"]);
+ $sev = $val["level"];
+ $message = $val["message"];
+
+ $sevcolour = "#ddffdd";
+ switch($sev) {
+ case "1":
+ $sevcolour = "#ffaaaa";
+ break;
+ case "2":
+ $sevcolour = "#ffdddd";
+ break;
+ case "3":
+ $sevcolour = "#ffffdd";
+ break;
+ case "4":
+ $sevcolour = "#ddffdd";
+ break;
+ case "5":
+ $sevcolour = "#aaffaa";
+ break;
+ case "6":
+ $sevcolour = "#ccaaaa";
+ break;
+ }
+
+ echo "<tr bgcolor=\"$sevcolour\"><td><i>$datetime</i></td><td>$message ($sev)</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;
// 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>";
}
if($bodyClass != null) {
- $bodyClass->$bodyFunction($url);
+ $bodyClass->$bodyFunction($bodyfunctiondata);
} else if( $bodyFunction != null) {
- $bodyFunction($url);
+ $bodyFunction($bodyfunctiondata);
} else echo $bodycontent;
echo "</td></tr></table>";
}
+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;
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;
<?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