Sindbad~EG File Manager

Current Path : /usr/home/beeson/public_html/WebMathXpert/Demos/PolygonDemo/
Upload File :
Current File : //usr/home/beeson/public_html/WebMathXpert/Demos/PolygonDemo/index.php

<!DOCTYPE html>
<?php
$serverAddress = 'localhost'; // Adjust the server address
$serverPort = 12347; // Adjust the server port
$timeout = 5; // Connection timeout in seconds
$startupDelay = 2; // Delay for server startup in seconds, if server is not already running

if (!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || 
   $_SERVER['HTTPS'] == 1) ||  
   isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&   
   $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
{
   $redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
   header('HTTP/1.1 301 Moved Permanently');
   header('Location: ' . $redirect);
   exit();
}
?>
<html>
<head>
    <title>PHP to C Socket Example</title>
</head>
<body>
    <form action="index.php" method="post">
        <input type="text" name="data" placeholder="polygon 7">
        <input type="submit" value="Send">
    </form>

    <?php
    session_start();
    $sessionId = session_id();  // guaranteed not to contain a pipe character
    ini_set('display_errors', 1);
    error_reporting(E_ALL);
    
    
    function send_to_server($socket, $message)
    {
       $sessionId = session_id(); 
       $data = $sessionId . "|" . $message;
       socket_write($socket, $data, strlen($data));
    }
        
    function isServerRunning() 
    {
        $command = 'ps aux | grep PolygonServer | grep -v grep | wc -l';
        $output = shell_exec($command);
        $processCount = intval(trim($output));
        return $processCount > 0;
    }
    
   if (!isServerRunning()) 
    {
        // Server is not running, start it
        $startCommand = './PolygonServer'; // path to server program
        $startCommand = $startCommand .  ' > /dev/null 2>&1 &';    // background
        echo("Server is not running, so it will now be started.\n");
        echo("Running $startCommand \n");
        // Start the server in the background
        exec($startCommand);

        // Wait for the server to start up
        sleep($startupDelay);
    }
    

    if ($_SERVER["REQUEST_METHOD"] === "POST") 
    {
        $data = $_POST["data"];
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

        if ($socket === false) 
        {
            echo "Socket creation failed: " . socket_strerror(socket_last_error()) . "<br>";
        } else 
        {   
            socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => $timeout, "usec" => 0));
            $result = socket_connect($socket, $serverAddress, $serverPort);

            if ($result) 
            {
                send_to_server($socket, $data); 

                $response = socket_read($socket, (1 << 16));
                if ($response === false)
                {
                    $errcode = socket_last_error($socket);
                    $message = socket_strerror($errcode);
                    echo "Socket_read error: $message<br>";
                } else 
                {   
                    echo "<svg id='svgCanvas' width='204' height='204' xmlns='http://www.w3.org/2000/svg'>";
                    echo $response;  // this is the SVG code to draw the polygon 
                    echo "</svg>";
                }
                //  now fetch the polygon history
                socket_close($socket);  // because server has already closed it
                $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
                socket_connect($socket, $serverAddress, $serverPort);  // so connect again
                send_to_server($socket,"polygon_history");
                $response = socket_read($socket, (1<<16));
                if(strlen($response) == 0)
                { 
                  echo socket_strerror(socket_last_error());
                }
                else
                {
                  echo "Your recent previous polygons in this session: " . $response;
                }
                
                socket_close($socket);
                   
            } 
            else 
            {
                echo "Failed to connect to the C program: " . socket_strerror(socket_last_error()) . "<br>";
            }
        }
    }
    ?>
</body>
</html>

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists