hostgroup scanning works.
[glcas.git] / libglcas / web.php
index 6c3723b..6f93f80 100644 (file)
@@ -22,6 +22,7 @@ class GLCASWeb {
                
                // 
                $call_class = $urlparser->getClass($url);
+               error_log("urldecode: ".urldecode($url));
                $call_class->go($url);
        }
        
@@ -29,21 +30,81 @@ class GLCASWeb {
        
 }
 
-function GLCASpageBuilder($bodyClass, $bodyFunction, $title="GLCAS")
+function GLCASMenuBuilder()
 {
-       global $WEB_ROOT_FS;
+       global $BASE_URL, $MENU_ITEMS;
+       
+       ksort($MENU_ITEMS);
+       ?>
+       <table border="1"><tr><th>Menu</th><td>
+<a href="<?php echo $BASE_URL ?>">Home</a></td>
+       <?php
+       foreach($MENU_ITEMS as $key => $val) {
+               $link = $val["link"];
+               $name = $val["name"];
+               echo "<td><a href=$link>$name</a></td>";
+       }
+       
+       echo "</table>";
+}
+
+function GLCASMessageBuilder()
+{
+       echo "<i>Messages not implemented yet</i>";
+}
+
+function GLCASpageBuilder($bodyClass, $bodyFunction, $bodycontent=null, $title="GLCAS")
+{
+       global $WEB_ROOT_FS, $BASE_URL;
        
        // TODO: load css
-       // TODO: load js
        // header
-       echo "<html><title>$title</title><body>";
+       echo "<html><head><title>$title</title>";
+       
+       // load css
+       if(file_exists("$WEB_ROOT_FS/css")) {
+               $dh = opendir("$WEB_ROOT_FS/css");
+               if($dh) {
+                       while(($file = readdir($dh))!==false) {
+                               $mt = preg_match("/.*.css$/", $file);
+                               if($mt > 0) {
+                                       error_log("loading css $file");
+                                       echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$BASE_URL/css/$file\">";
+                                       //echo "required $basedir/$file\n";
+                               }
+                       }
+               }               
+       }
+
+       // load js
+       if(file_exists("$WEB_ROOT_FS/js")) {
+               $dh = opendir("$WEB_ROOT_FS/js");
+               if($dh) {
+                       while(($file = readdir($dh))!==false) {
+                               $mt = preg_match("/.*.js$/", $file);
+                               if($mt > 0) {
+                                       error_log("loading js $file");
+                                       echo "<script type=\"text/javascript\" src=\"$BASE_URL/js/$file\"></script>";
+                                       //echo "required $basedir/$file\n";
+                               }
+                       }
+               }               
+       }
+       
+       
+       // start body
+       echo "</head><body>";
        
        // page top
        echo "<h1>GLCAS</h1><br>";
-       echo "<table><tr><td>messages go here<td></tr><tr><td>";
+       echo "<table><tr><td>";
+       GLCASMessageBuilder();
+       echo "<td></tr><tr><td>";
        
        // menu, then body
-       echo "<table><tr><td>Menu goes here</td></tr><tr><td>";
+       echo "<table><tr><td>";
+       GLCASMenuBuilder();
+       echo "</td></tr><tr><td>";
        // body
        $url = "/";
        if(isset($_REQUEST["q"])) {
@@ -52,7 +113,9 @@ function GLCASpageBuilder($bodyClass, $bodyFunction, $title="GLCAS")
        
        if($bodyClass != null) {
                $bodyClass->$bodyFunction($url);
-       } else $bodyFunction($url);
+       } else if( $bodyFunction != null) {
+               $bodyFunction($url);
+       } else echo $bodycontent;
        echo "</td></tr></table>";
        
        
@@ -64,5 +127,100 @@ function GLCASpageBuilder($bodyClass, $bodyFunction, $title="GLCAS")
        
 }
 
+function glcas_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 glcas_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 glcas_startInstaller()
+{
+       global $WEB_ROOT_FS, $BASE_URL;
+       
+       $uid = posix_geteuid();
+       $gid = posix_getegid();
+       $uid_a = posix_getpwuid($uid);
+       $uid = $uid_a["name"];
+       
+       $gid_a = posix_getgrgid($gid);
+       $gid = $gid_a["name"];
+       error_log("user id is $uid, group id is $gid");
+       
+       if(isset($_REQUEST["installdir"])) {
+               $c = new GLCASConfig();
+               touch($_REQUEST["installdir"]."/webconfig");
+               $c->loadConfig($_REQUEST["installdir"]."/webconfig");
+               header("Location: index.php");
+               return;
+       }
+       
+       $underroot = realpath($WEB_ROOT_FS."/../");
+       
+?>
+<html>
+<h1>Welcome to GLCAS</h1>
+Welcome to GLCAS, I cant find my configuration file so im assuming you installing me for the first time<br>
+If this is not correct then we have a big problem that needs to be solved, i hope you have a backup of the old
+config, cause that will make life easier.<br><br>
+However, if this is the first time you have run this app, then all is good with the world. All I need right
+now is a place where i can store my config. I search the following directories for the location of my 
+configuration (webconfig)<br>
+<li> /var/run/glcas/
+<li> /var/lib/glcas/
+<li> <?php echo $underroot?>/var/glcas/
+<br><br>
+
+As root, you must now create one of these directories and change the ownership of the directory to the web owner.
+(chown <?php echo $uid?>:<?php echo $gid ?> the_path_you_choose).<br>
+
+Now, tell me where you want me to create the webconfig file:<br>
+<form method="post">
+<select name="installdir">
+<option value="/var/run/glcas">/var/run/glcas</option>
+<option value="/var/lib/glcas">/var/lib/glcas</option>
+<option value="<?php echo $underroot?>/var/glcas/"><?php echo $underroot?>/var/glcas/</option>
+</select>
+<input type="submit" name="Go" value="Go">
+
+</select>
+</form>
+
+</html>
+<?php 
+}
+
 
 ?>
\ No newline at end of file