// if i believed in name spacing in php, i'd use it.
error_log("glcasweb loaded");
+global $CRON_CLASSES;
+$CRON_CLASSES["GLCASWeb"] = "GLCASWeb";
+
+
class GLCASWeb {
function __construct($config)
$url = $_REQUEST["q"];
}
+ // add a stat
+ $ipaddr = $_SERVER["REMOTE_ADDR"];
+ $this->config->delData("lastseen", "$ipaddr");
+ $this->config->addData("lastseen", "$ipaddr", time(), "");
+
// create a url parser
$urlparser = new GLCASUrlParser($urlhandlers, $this->config);
$call_class->go($url);
}
+ function cron()
+ {
+ echo "WEB base running cron for ipseen roll-up<br>";
+ $lastseen = $this->config->getData("lastseen");
+ foreach($lastseen as $key=>$val) {
+ $myip = $val["category"];
+ $myls = $val["name"];
+ $ip[$myip] = $myls;
+ }
+
+ foreach($ip as $key=>$val) {
+ echo "Setting last seen for $key to $val<br>";
+ $this->config->delData("lastseen", $key);
+ $this->config->addData("lastseen", $key, $val);
+ }
+ }
+
private $config;
}
function GLCASMenuBuilder()
{
- global $BASE_URL;
+ global $BASE_URL, $MENU_ITEMS;
+
+ ksort($MENU_ITEMS);
?>
-<a href="<?php echo $BASE_URL ?>">Home</a>
-<a href="<?php echo $BASE_URL."/admin/"?>">Admin</a>
+<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>";
+}
+
+// just a short one to call the long one
+function gcam($m, $s)
+{
+ global $glconfig;
+ GLCASAddMessage($m, $s);
+}
+
+function GLCASAddMessage($messagelev, $message)
+{
+ global $glconfig;
+
+ $glconfig->addData("messages", time(), "$messagelev", $message);
}
function GLCASMessageBuilder()
{
- echo "<i>Messages not implemented yet</i>";
+ global $glconfig;
+ $nm = 0;
+ $nml = null;
+ $msgs_v = $glconfig->getData("messages");
+
+ // create a form for setting messages
+ global $BASE_URL;
+ echo "<form method=\"post\" action=\"$BASE_URL/?glcasbasesendmsg\">";
+ echo "Send a message";
+ echo "<input type=\"text\" name=\"message\">";
+ echo "<select name=\"msglev\"><option value=\"0\">Info</option><option value=\"1\">Warning</option>";
+ echo "<option value=\"2\">Error</option></select>";
+ echo "<input type=\"submit\" name=\"add\" value=\"Add\">";
+ echo "</form>";
+
+ if($msgs_v !== false) foreach($msgs_v as $msgs) {
+
+ error_log("messages: ".$msgs["category"]. " - ".$msgs["val"]);
+
+ $nml[$nm]["msg"] = glcas_tdiffToAgo(time()-$msgs["category"])." : ".$msgs["val"];
+ $fontst = "";
+ $fonten = "";
+ switch($msgs["name"]) {
+ case "0":
+ $fontst = "<font color=\"green\">";
+ $fonten = "</font>";
+ break;
+
+ case "1":
+ $fontst = "<font color=\"yellow\">";
+ $fonten = "</font>";
+ break;
+ case "2":
+ $fontst = "<font color=\"red\">";
+ $fonten = "</font>";
+ break;
+
+ }
+ $nml[$nm]["font_start"] = $fontst;
+ $nml[$nm]["font_end"] = $fonten;
+
+ $nm++;
+ }
+ if($nm > 0 ) {
+ echo "<hr>";
+ echo "<table>";
+ // we do it backwards
+ for($i = ($nm-1); $i >= 0; $i--) {
+ echo "<tr><td>".$nml[$i]["font_start"]."".$nml[$i]["msg"]."".$nml[$i]["font_end"]."</td></tr>";
+ }
+ echo "</table>";
+ echo "<hr>";
+ } else echo "No Messages<br>";
}
function GLCASpageBuilder($bodyClass, $bodyFunction, $bodycontent=null, $title="GLCAS")
}
+function glcas_getLastSeen($ip, $data)
+{
+ $last = "never";
+
+ if(!$data) return $last;
+
+
+
+ foreach($data as $key=>$val) {
+ $last = $val["name"];
+ error_log("got $last for $ip");
+ }
+
+ if($last == "never") return $last;
+
+ $last = glcas_tdiffToAgo(time()-$last);
+
+ error_log("last for $ip set to $last");
+
+ return $last;
+
+}
+
+function glcas_tdiffToAgo($time_in_sec)
+{
+ $tdiff = $time_in_sec;
+ $tdiff_min = (int)($tdiff/60);
+ $tdiff_hour = (int)($tdiff/3600);
+ $tdiff_days = (int)($tdiff/86400);
+
+ if($tdiff < 60) $last = "Less then a minute";
+ if($tdiff >= 60 && $tdiff < 7200) $last = "$tdiff_min minutes ago";
+ if($tdiff >= 7200 && $tdiff < 86400) $last = "$tdiff_hour hours ago";
+ if($tdiff >= 86400) $last = "$tdiff_days days ago";
+
+ return $last;
+}
+
+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;
$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>
configuration (webconfig)<br>
<li> /var/run/glcas/
<li> /var/lib/glcas/
-<li> <?php echo $WEB_ROOT_FS?>/var/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.
<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 $WEB_ROOT_FS?>/var/glcas/"><?php echo $WEB_ROOT_FS?>/var/glcas/</option>
+<option value="<?php echo $underroot?>/var/glcas/"><?php echo $underroot?>/var/glcas/</option>
</select>
<input type="submit" name="Go" value="Go">