X-Git-Url: http://git.pjr.cc/?p=glcas.git;a=blobdiff_plain;f=libglcas%2Fweb.php;h=41aa463484c8ea16fcb980c7a8775ce4a4561e82;hp=0d812d9cbd913c3c8bc494bcfd9d4bc14db38ee7;hb=62980aceef653f7e9651e3deb7da783e857db2fd;hpb=a55b4f6b15d491e70226156a2aadb88b16853dc0 diff --git a/libglcas/web.php b/libglcas/web.php index 0d812d9..41aa463 100644 --- a/libglcas/web.php +++ b/libglcas/web.php @@ -3,6 +3,10 @@ // 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) @@ -17,6 +21,11 @@ class GLCASWeb { $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); @@ -26,22 +35,114 @@ class GLCASWeb { $call_class->go($url); } + function cron() + { + echo "WEB base running cron for ipseen roll-up
"; + $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
"; + $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); ?> -Home -">Admin + $val) { + $link = $val["link"]; + $name = $val["name"]; + echo ""; + } + + echo "
Menu +Home $name
"; +} + +// 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 "Messages not implemented yet"; + global $glconfig; + $nm = 0; + $nml = null; + $msgs_v = $glconfig->getData("messages"); + + // create a form for setting messages + global $BASE_URL; + echo "
"; + echo "Send a message"; + echo ""; + echo ""; + echo ""; + echo "
"; + + 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 = ""; + $fonten = ""; + break; + + case "1": + $fontst = ""; + $fonten = ""; + break; + case "2": + $fontst = ""; + $fonten = ""; + break; + + } + $nml[$nm]["font_start"] = $fontst; + $nml[$nm]["font_end"] = $fonten; + + $nm++; + } + if($nm > 0 ) { + echo "
"; + echo ""; + // we do it backwards + for($i = ($nm-1); $i >= 0; $i--) { + echo ""; + } + echo "
".$nml[$i]["font_start"]."".$nml[$i]["msg"]."".$nml[$i]["font_end"]."
"; + echo "
"; + } else echo "No Messages
"; } function GLCASpageBuilder($bodyClass, $bodyFunction, $bodycontent=null, $title="GLCAS") @@ -118,6 +219,83 @@ function GLCASpageBuilder($bodyClass, $bodyFunction, $bodycontent=null, $title=" } +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 "
in comp with
$urlwithslash
$realloc
"; + 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; @@ -131,6 +309,16 @@ function glcas_startInstaller() $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."/../"); + ?>

Welcome to GLCAS

@@ -142,7 +330,7 @@ now is a place where i can store my config. I search the following directories f configuration (webconfig)
  • /var/run/glcas/
  • /var/lib/glcas/ -
  • /var/glcas/ +
  • /var/glcas/

    As root, you must now create one of these directories and change the ownership of the directory to the web owner. @@ -153,7 +341,7 @@ Now, tell me where you want me to create the webconfig file: