<?php
 // whatis.php
 // Supervise whatis command
 // November, 2020
 
 $verb="whatis";
 
 function retpins($pins, $reld) {
   global $verb;
   if ($verb == "who" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode("-H");
   if ($reld) {
   echo "<html><body onload=\"location.href=document.URL.split('#')[0] + encodeURIComponent('-H');\"></body></html>";
   exit;
   }
   } else if ($verb == "screencapture" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode("-c");
   if ($reld) {
   echo "<html><body onload=\"location.href=document.URL.split('#')[0] + encodeURIComponent('-c');\"></body></html>";
   exit;
   }
   } else if ($verb == "ping" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode("-o");
   if ($reld) {
   echo "<html><body onload=\"location.href=document.URL.split('#')[0] + encodeURIComponent('-o');\"></body></html>";
   exit;
   }
   } else if ($verb == "top" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode("-l 1");
   if ($reld) {
   echo "<html><body onload=\"location.href=document.URL.split('#')[0] + encodeURIComponent('-l 1');\"></body></html>";
   exit;
   }
   } else if ($verb == "tree" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode("c:");
   if ($reld) {
   echo "<html><body onload=\"location.href=document.URL.split('#')[0] + encodeURIComponent('c:');\"></body></html>";
   exit;
   }
   } else if (trim(str_replace("+"," ",urldecode($pins))) == "") { // if ($verb == "uptime" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode(";");
   if ($reld) {
   echo "<html><body onload=\"location.href=document.URL.split('#')[0] + encodeURIComponent(';');\"></body></html>";
   exit;
   }
   }
   return $pins;
 }
 
 function maybe($iv) {
   if ($iv == "ping") { return "ping -o"; }
   return $iv;
 }
 
 $verbs=array("whatis", "man", "jobs", "ping", "uname", "help");
 $insh='insearch';
 $sayopt='';
 
 $meth="POST";
 if (strpos(("~" . strtolower($_SERVER['SERVER_NAME'])), '~localhost') !== false) { $meth="GET"; }  
  
 if (PHP_OS === "Darwin") {
   array_push($verbs, "say", "textutil", "screencapture", "who", "uptime", "top", "hostname");
 } else if ($meth == "GET" && strtoupper(substr((PHP_OS . '   '), 0, 3)) === 'WIN') {
   $verbs=array("tree", "ping", "help", "echo");
   $verb="tree";
 } else { //if ($meth == "GET") {
   array_push($verbs, "uptime", "echo");
 }

 foreach ($verbs as $value) {
   $sayopt.='<option value=' . $value . '>' . $value . '</option>';
 }
 
 $gb="";
 try {
  if (strpos(('~' . $_SERVER['HTTP_USER_AGENT']), '~curl') === false) {
    $gb="y";
  }
 } catch (Exception $ee) {
 }
 
 if (isset($_POST['verb'])) {
   if (trim(str_replace("+"," ",urldecode($_POST['verb']))) != '') { $verb=str_replace("+"," ",urldecode($_POST['verb'])); }
 } else if (isset($_GET['verb'])) {
   if (trim(str_replace("+"," ",urldecode($_GET['verb']))) != '') { $verb=str_replace("+"," ",urldecode($_GET['verb'])); }
 }
 
 foreach ($verbs as $value) {
 if (isset($_POST[$value])) {
   $insh=$value;
   $verb=$value;
 } else if (isset($_GET[$value])) {
   $insh=$value;
   $verb=$value;
 }
 }
 
 $pins='';
 if (isset($_POST[$insh]) && strpos(strtolower('' . $_SERVER['HTTP_REFERER']), "rjmprogramming.com.au") !== false) {
   $pins=retpins($_POST[$insh],false);
 } else if (isset($_GET[$insh]) && strpos(strtolower('' . $_SERVER['HTTP_REFERER']), "/localhost") !== false) {
   $pins=retpins($_GET[$insh],true);
 } else if ($meth == "GET" && isset($_GET[$insh])) {
   $pins=$_GET[$insh];
   if ($verb == "who" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode("-H");
   } else if ($verb == "screencapture" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode("-c");
   } else if ($verb == "ping" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode("-l 1");
   } else if ($verb == "top" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode("-o");
   } else if ($verb == "tree" && trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode("c:");
   } else if (trim(str_replace("+"," ",urldecode($pins))) == "") {
   $pins=urlencode(";");
   } else {
   $pins=$_GET[$insh];
   }
 } else if ($meth == "GET") {
   $pins=' ';
 }
 
 if (trim($pins) != '' && !isset($argv)) {
   if (urldecode($pins) == '') {
     echo "<html><head><title>Operating System " . maybe($verb) . " -- RJM Programming - November, 2020</title></head><body onload=\" document.getElementById('insearch').focus(); \"><form action=./whatis.php method=" . $meth . "><h1>Supervise <select title=verb name=verb>" . $sayopt . "</select> command</h1><h3>RJM Programming - November, 2020</h3><br><br><input placeholder='Enter object' type=text id=insearch name=insearch value=''></input>&nbsp;<input type=submit value=Go></input></form></body></html>";
   } else if ($meth == "GET" && $gb == "") {
     passthru(maybe($verb) . " " . explode("\n",explode("\r",explode(";",explode("<",explode(">",explode("|",str_replace("+"," ",urldecode($pins)))[0])[0])[0])[0])[0])[0]);
   } else {
     ob_start();
     passthru(maybe($verb) . " " . explode("\n",explode("\r",explode(";",explode("<",explode(">",explode("|",str_replace("+"," ",urldecode($pins)))[0])[0])[0])[0])[0])[0]);
     $var = ob_get_contents();
     ob_end_clean();
     echo "<html><head><title>Operating System " . maybe($verb) . " " . explode("\n",explode("\r",explode(";",explode("<",explode(">",explode("|",str_replace("+"," ",urldecode($pins)))[0])[0])[0])[0])[0])[0] . " - RJM Programming -- November, 2020</title></head><body onload=\" document.getElementById('insearch').focus(); \"><pre>$ " . $verb . " " . explode("\n",explode("\r",explode(";",explode("<",explode(">",explode("|",str_replace("+"," ",urldecode($pins)))[0])[0])[0])[0])[0])[0] . "<br>" . str_replace("\n", "<br>", $var) . "</pre><br><br><form action=./whatis.php method=" . $meth . "><h1>Supervise <select title=verb name=verb>" . $sayopt . "</select> command</h1><h3>RJM Programming - November, 2020</h3><br><br><input placeholder='Enter object' type=text id=insearch name=insearch value=''></input>&nbsp;<input type=submit value=Go></input></form></body></html>";
     exit;
   }
 } else if (!isset($argv) && ($pins == '' || (trim($pins) == '' && $meth == "GET")) && !isset($_GET[$insh]) && $gb != "") {
   echo "<html><head><title>Operating System verb - RJM Programming - November, 2020</title></head><body onload=\" document.getElementById('insearch').focus(); \"><form action=./whatis.php method=" . $meth . "><h1>Supervise <select title=verb name=verb>" . $sayopt . "</select> command</h1><h3>RJM Programming - November, 2020</h3><br><br><input placeholder='Enter object' type=text id=insearch name=insearch value=''></input>&nbsp;<input type=submit value=Go></input></form></body></html>";
 }


?>