<?php
// Socket client
ini_set('max_execution_time', 300);

$formbit="<br><h1>PHP Socket Usage</h1><h3>RJM Programming - September, 2017</h3><h3>Thanks to <a target=_blank title=http://php.net/manual/en/function.socket-select.php href=http://php.net/manual/en/function.socket-select.php>http://php.net/manual/en/function.socket-select.php</a></h3><form style=z-index:23; action=./client_local_b.php method=GET'>You can enter (and later see) an HTML filename off http://www.rjmprogramming.com.au/PHP/socket/<input style=z-index:23; type=text value='' name=msg id=msg></input><br><input style=z-index:23; type=submit value='Show Contents of this HTML File'></input><select style=z-index:23; onchange=document.getElementById('msg').value=this.value;><option value=> ... or ...</option><option value=walkways.html>Walkways</option><option value=signature_signature.html>Signature Signature</option><option value=golf_par_three.html>Golf Par Three</option><option value=server_local_b.html>Code for this Socket Server</option></select></form>";

if (strpos(strtoupper(('' . PHP_OS)), "WINDOW") === false && strpos($_SERVER['SERVER_NAME'],"rjmprogramming.com.au") === false) {

$numis="1337";
$othern="1337";


if (isset($_GET['msg'])) {
  if (strpos($_GET['msg'], ".html") !== false) {
  exec('echo "' . "GET http://www.rjmprogramming.com.au/PHP/socket/" . str_replace("+"," ",urldecode($_GET['msg'])) . " HTTP/1.0 " . str_replace("+"," ",urldecode($_GET['msg'])) . "" . '" | nc 27.54.94.234 ' . $numis . ' > /tmp/mysocket' . $numis . '.tmp 2> /dev/null');
  echo str_replace("&lt;/body&gt;",$formbit . "&lt;/body&gt;",str_replace("</body>",$formbit . "</body>",file_get_contents("/tmp/mysocket" . $numis . ".tmp")));
  } else {
  header('Location: http://www.rjmprogramming.com.au/PHP/socket/client_local_b.php?msg=' . $_GET['msg']);
  exit;
  exec('echo "' . str_replace("+"," ",urldecode($_GET['msg'])) . '" | nc 27.54.94.234 ' . $numis . ' > /tmp/mysocket' . $numis . '.tmp 2> /dev/null');
  echo str_replace("&lt;/body&gt;",$formbit . "&lt;/body&gt;",str_replace("</body>",$formbit . "</body>",str_replace("\n","<br>",file_get_contents("/tmp/mysocket" . $numis . ".tmp"))));
  }
} else {
  exec('echo "' . "GET http://www.rjmprogramming.com.au/PHP/socket/testx.html HTTP/1.0 testx.html" . '" | nc 27.54.94.234 ' . $numis . ' > /tmp/mysocket' . $numis . '.tmp 2> /dev/null');
  echo "<!doctype html><html><body><pre>" . str_replace("\n","<br>",file_get_contents("/tmp/mysocket" . $numis . ".tmp")) . "</pre>" . $formbit . "</body></html>";
}
} else {

if (strpos($_SERVER['SERVER_NAME'],"rjmprogramming.com.au") === false) {
$addr = gethostbyname("127.0.0.1");
} else {
$addr = gethostbyname("www.rjmprogramming.com.au");
}

$client2=null;

try {
 $client = stream_socket_client("tcp://$addr:1337", $errno, $errorMessage, 2);
 //try {
 // $client2 = stream_socket_client("tcp://$addr:1338", $errno, $errorMessage, 2);
 //} catch (Exception $e1) {
 // throw new UnexpectedValueException("Failed to connect: $errorMessage");
 //}
} catch (Exception $e2) {
 //try {
 // $client = stream_socket_client("tcp://$addr:1338", $errno, $errorMessage, 2);
 //} catch (Exception $e3) {
 //   throw new UnexpectedValueException("Failed to connect: $errorMessage");
 //}
}

if (isset($_GET['msg'])) {
  if (strpos((str_replace("+"," ",urldecode($_GET['msg'])) . "*"), ".html*") !== false) {
  fwrite($client, "GET http://www.rjmprogramming.com.au/PHP/socket/" . str_replace("+"," ",urldecode($_GET['msg'])) . " HTTP/1.0 " . str_replace("+"," ",urldecode($_GET['msg']))); //  str_replace("+"," ",urldecode($_GET['msg'])));
  } else {
  file_put_contents("msg.html", "<!doctype html><html><body><pre>" . str_replace("+"," ",urldecode($_GET['msg'])) . "</pre></body></html>");
  fwrite($client, "GET http://www.rjmprogramming.com.au/PHP/socket/msg.html HTTP/1.0 msg.html"); //  str_replace("+"," ",urldecode($_GET['msg'])));
  }
  if ($client2) {
  if (strpos((str_replace("+"," ",urldecode($_GET['msg'])) . "*"), ".html*") !== false) {
  fwrite($client2, "GET http://www.rjmprogramming.com.au/PHP/socket/" . str_replace("+"," ",urldecode($_GET['msg'])) . " HTTP/1.0 " . str_replace("+"," ",urldecode($_GET['msg']))); //str_replace("+"," ",urldecode($_GET['msg'])));
  } else {
  file_put_contents("msg.html", str_replace("+"," ",urldecode($_GET['msg'])));
  fwrite($client2, "GET http://www.rjmprogramming.com.au/PHP/socket/msg.html HTTP/1.0 msg.html"); //str_replace("+"," ",urldecode($_GET['msg'])));
  }
  }
} else {
  fwrite($client, "GET / HTTP/1.0\r\nHost: www.rjmprogramming.com.au\r\nAccept: */*\r\n\r\n");
  if ($client2) fwrite($client2, "GET / HTTP/1.0\r\nHost: www.rjmprogramming.com.au\r\nAccept: */*\r\n\r\n");
}
if ($client && $client2) {
  echo str_replace("&lt;/body&gt;",$formbit . "&lt;/body&gt;",str_replace("</body>",$formbit . "</body>",stream_get_contents($client))) . "\n" . str_replace("&lt;/body&gt;",$formbit . "&lt;/body&gt;",str_replace("</body>",$formbit . "</body>",stream_get_contents($client2)));
  fclose($client);
  fclose($client2);
} else if ($client) {
  echo str_replace("&lt;/body&gt;",$formbit . "&lt;/body&gt;",str_replace("</body>",$formbit . "</body>",stream_get_contents($client)));
  fclose($client);
} else if ($client2) {
  echo str_replace("&lt;/body&gt;",$formbit . "&lt;/body&gt;",str_replace("</body>",$formbit . "</body>",stream_get_contents($client2)));
  fclose($client2);
}
}

