114 lines
3.4 KiB
PHP
114 lines
3.4 KiB
PHP
|
<?php
|
||
|
|
||
|
// server init: No Timeout
|
||
|
set_time_limit(0);
|
||
|
ob_implicit_flush();
|
||
|
|
||
|
|
||
|
$error_message = null;
|
||
|
$error_code = null;
|
||
|
$listenHost = "0.0.0.0";
|
||
|
$listenPort = 1025;
|
||
|
$Dashboards = array();
|
||
|
|
||
|
require_once $configDir . "/dashboard_conf.php";
|
||
|
require_once "class/main.php";
|
||
|
require "webserver/cmd_functions.php";
|
||
|
|
||
|
// opening listening server
|
||
|
$socket = stream_socket_server("tcp://" . $listenHost . ":" . $listenPort, $error_code, $error_message) or logger(ERROR, _("Could not create socket"), __FILE__ . ":" . __LINE__);
|
||
|
stream_set_blocking($socket, false);
|
||
|
$read = array( $socket );
|
||
|
|
||
|
function htmlSend($socket, $text)
|
||
|
{
|
||
|
$httpHeader = "HTTP/1.1 200 OK" . EOLR .
|
||
|
"Date: " . date("r") . EOLR .
|
||
|
"Connection: close" . EOLR .
|
||
|
"Content-Type: text/html; charset=UTF-8" . EOLR . EOLR;
|
||
|
$response = $httpHeader . '<!doctype html>' . EOL . '<html lang="fr">' . EOL . '<head>' . EOL . '<meta charset="utf-8">' . EOL . '<title>Moha</title>' . EOL . '</head><body>' . $text . "</body></html>";
|
||
|
|
||
|
stream_socket_sendto($socket, $response);
|
||
|
}
|
||
|
|
||
|
function askWebServer($read)
|
||
|
{
|
||
|
global $topics, $indexDevices, $devices;
|
||
|
$array = array();
|
||
|
$argList =array();
|
||
|
//logger(DEBUG, _("askWebserver function starting"), __FILE__ . ":" . __LINE__);
|
||
|
if ( stream_select( $read, $array, $array, 0 ))
|
||
|
{
|
||
|
logger(DEBUG, _("socket ready to read"), __FILE__ . ":" . __LINE__);
|
||
|
$spawn = stream_socket_accept($read[0]);
|
||
|
if ($spawn !== false)
|
||
|
{
|
||
|
logger(DEBUG, _("socket accepted"), __FILE__ . ":" . __LINE__);
|
||
|
$input = fgets($spawn, 4096);
|
||
|
logger(DEBUG, $input, __FILE__ . ":" . __LINE__);
|
||
|
$input = substr($input,5);
|
||
|
$input = explode(" ", $input); // suppress text
|
||
|
if (!empty($input[0]))
|
||
|
{
|
||
|
$argTmp = explode("&", urldecode($input[0]));
|
||
|
foreach($argTmp as $tmp)
|
||
|
{
|
||
|
logger(DEBUG, $tmp, __FILE__ . ":" . __LINE__);
|
||
|
if(strpos($tmp, "=") === false)
|
||
|
{
|
||
|
logger(DEBUG, _("no ="), __FILE__ . ":" . __LINE__);
|
||
|
$argList["cmd"] = trim($tmp);
|
||
|
}else
|
||
|
{
|
||
|
$argList[trim(strchr($tmp, "=", true))] = trim(substr(strchr($tmp, "="), 1));
|
||
|
}
|
||
|
}
|
||
|
logger(DEBUG, print_r($argList, true), __FILE__ . ":" . __LINE__);
|
||
|
if(array_key_exists("cmd", $argList))
|
||
|
{
|
||
|
$command = strtolower($argList["cmd"]);
|
||
|
logger(DEBUG, _("command is ") . $command, __FILE__ . ":" . __LINE__);
|
||
|
switch($command)
|
||
|
{
|
||
|
case "dashboard":
|
||
|
webDashboard($spawn, $argList["dashboard"]);
|
||
|
break;
|
||
|
case "browse":
|
||
|
logger(DEBUG, _("Browsing"), __FILE__ . ":" . __LINE__);
|
||
|
webBrowse($spawn, $argList);
|
||
|
//return true;
|
||
|
break;
|
||
|
case "get":
|
||
|
logger(DEBUG, _("GET reached"), __FILE__ . ":" . __LINE__);
|
||
|
htmlSend($spawn, webGet($argList));
|
||
|
break;
|
||
|
case "set":
|
||
|
logger(DEBUG, _("SET reached"), __FILE__ . ":" . __LINE__);
|
||
|
htmlSend($spawn, webSet($argList));
|
||
|
break;
|
||
|
case "dump":
|
||
|
case "print":
|
||
|
logger(DEBUG, $command . _(" reached"), __FILE__ . ":" . __LINE__);
|
||
|
htmlSend($spawn, webPrint($argList, $command));
|
||
|
break;
|
||
|
case "notify":
|
||
|
logger(DEBUG, $command . _(" reached"), __FILE__ . ":" . __LINE__);
|
||
|
htmlSend($spawn, webNotify($argList));
|
||
|
logger(DEBUG, print_r($monitored, true), __FILE__ . ":" . __LINE__);
|
||
|
break;
|
||
|
default:
|
||
|
webBrowse($spawn, $argList);
|
||
|
}
|
||
|
}else
|
||
|
{
|
||
|
webDashboard($spawn);
|
||
|
}
|
||
|
}else
|
||
|
{
|
||
|
webDashboard($spawn);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
?>
|