-
-
Save phackwer/713ee1a11a8a4e5340715ea8f1ca8d7f to your computer and use it in GitHub Desktop.
<?php | |
$listening = true; | |
$ip = '0.0.0.0'; | |
$port = 9679; | |
$server = stream_socket_server("tcp://{$ip}:{$port}", $errno, $errstr); | |
$w = $e | |
= []; | |
if (!$server) { | |
return false; | |
} | |
while ($listening) { | |
while ($stream = @stream_socket_accept($server, 3, $peer)) { | |
while ($listening) { | |
stream_set_blocking($stream, 0); | |
$sock_in_data = ''; | |
while (!strstr($sock_in_data, "\n")) { | |
$sock_in_data .= fread($stream, 1); | |
} | |
//log.txt | |
$log = 'RECV: ' . date('Y-m-d H:i:s') . ' ' . $peer . ' - ' . $sock_in_data; | |
file_put_contents('log_received.txt', $log, FILE_APPEND | LOCK_EX); | |
echo $log; | |
//if (!strstr($sock_in_data, 'Q0')) { | |
$sock_out_data = substr($sock_in_data, 0, 25); | |
//$sock_out_data .= date('ymdHis').",L0,0#\n"; | |
$sock_out_data .= date('ymdHis').",D0#\n"; | |
//$sock_out_data .= date('ymdHis').",S8,10,0#\n"; | |
//$sock_out_data .= date('ymdHis').",G0#\n"; | |
$sock_out_data = str_replace('*CMDR','*CMDS',$sock_out_data); | |
//Attempt format 1 | |
$sock_out_data1 = hex2bin(strtoupper('FFFF'.bin2hex($sock_out_data))); | |
//log.txt | |
//Send to client: | |
if ((int) fwrite($stream, $sock_out_data1) < 1) { | |
trigger_error("Write to socket failed!"); | |
} | |
$log = 'SEND: ' . date('Y-m-d H:i:s') . ' ' . $peer . ' - ' . $sock_out_data1; | |
file_put_contents('log_sent.txt', $log, FILE_APPEND | LOCK_EX); | |
echo $log; | |
//} | |
} | |
} | |
} |
<?php | |
$port = 9679; | |
$socket = stream_socket_server("tcp://0.0.0.0:{$port}", $errno, $errstr); | |
if (!$socket) {return false;} | |
while (1) { | |
while ($conn = @stream_socket_accept($socket, 60, $peer)) { | |
stream_set_blocking($conn, 0); | |
$client_request = ""; | |
while (!strstr($client_request, "\n")) { | |
$client_request .= fread($conn, 1); | |
} | |
$client_request = date('Y-m-d H:i:s') . ' ' . $peer . ' - ' . $client_request; | |
//log.txt | |
file_put_contents('log.txt', $client_request, FILE_APPEND | LOCK_EX); | |
//cli | |
echo $client_request; | |
//Send to client: | |
if (strstr($client_request, 'GET /')) { | |
$headers = "HTTP/1.0 200 OK\n" | |
. "Content-Type: text/html\n" | |
. "\n"; | |
$body = "<h1>Greetings. You've reached our server!</h1>" . $client_request; | |
$client_request = $headers.$body; | |
} | |
if ((int) fwrite($conn, $client_request) < 1) { | |
trigger_error("Write to socket failed!"); | |
} | |
stream_socket_shutdown($conn, STREAM_SHUT_WR); | |
fclose($conn); | |
fclose($socket); | |
$socket = stream_socket_server("tcp://0.0.0.0:{$port}", $errno, $errstr); | |
} | |
} |
<?php | |
$listening = true; | |
$ip = '0.0.0.0'; | |
$port = 9679; | |
$server = stream_socket_server("tcp://{$ip}:{$port}", $errno, $errstr); | |
$w = $e | |
= []; | |
if (!$server) { | |
return false; | |
} | |
while ($listening) { | |
while ($stream = @stream_socket_accept($server, 3, $peer)) { | |
stream_set_blocking($stream, 0); | |
$processId = pcntl_fork(); | |
switch ($processId) { | |
case -1: | |
print "Could not fork!\n"; | |
exit; | |
case 0: | |
echo $processId; | |
if (is_resource($stream)) { | |
$sock_in_data = ''; | |
while (!strstr($sock_in_data, "\n") && !stream_get_meta_data($stream)['eof']) { | |
$sock_in_data .= fread($stream, 1); | |
} | |
//log.txt | |
$log = 'RECV: ' . date('Y-m-d H:i:s') . ' ' . $peer . ' - ' . $sock_in_data; | |
file_put_contents('log_unlock.txt', $log, FILE_APPEND | LOCK_EX); | |
echo $log; | |
$sock_out_data = substr($sock_in_data, 0, 38); | |
$sock_out_data .= "L0,0#\n"; | |
//log.txt | |
//Send to client: | |
if ((int)fwrite($stream, $sock_out_data) < 1) { | |
trigger_error("Write to socket failed!"); | |
} | |
$log = 'SEND: ' . date('Y-m-d H:i:s') . ' ' . $peer . ' - ' . $sock_out_data; | |
file_put_contents('log_multi_streams_fork.txt', $log, FILE_APPEND | LOCK_EX); | |
echo $log; | |
stream_socket_shutdown($stream, STREAM_SHUT_WR); | |
fclose($stream); | |
unset($stream); | |
} | |
} | |
break; | |
} | |
} |
2017-07-04 11:42:51 10.0.0.2:63172 - *CMDR,OM,865503037351175,000000000000,Q0,379#
2017-07-04 11:43:04 10.0.0.2:51015 - *CMDR,OM,865503037351175,000000000000,Q0,379#
2017-07-04 11:43:15 10.0.0.2:62552 - *CMDR,OM,865503037351175,000000000000,Q0,379#
2017-07-04 11:43:27 10.0.0.2:65206 - *CMDR,OM,865503037351175,000000000000,Q0,379#
2017-07-04 11:43:39 10.0.0.2:51200 - *CMDR,OM,865503037351175,000000000000,Q0,379#
2017-07-04 11:43:52 10.0.0.2:53491 - *CMDR,OM,865503037351175,000000000000,Q0,379#
2017-07-04 11:44:04 10.0.0.2:57370 - *CMDR,OM,865503037351175,000000000000,Q0,379#
2017-07-04 11:44:16 10.0.0.2:57613 - *CMDR,OM,865503037351175,000000000000,Q0,379#
2017-07-04 11:44:28 10.0.0.2:65444 - *CMDR,OM,865503037351175,000000000000,Q0,379#
2017-07-04 11:44:49 10.0.0.2:52913 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:45:01 10.0.0.2:51788 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:45:14 10.0.0.2:51864 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:45:27 10.0.0.2:50372 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:45:47 10.0.0.2:64126 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:46:00 10.0.0.2:52025 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:46:13 10.0.0.2:63926 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:46:28 10.0.0.2:57163 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:46:39 10.0.0.2:59590 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:46:52 10.0.0.2:58223 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:47:03 10.0.0.2:54317 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:47:14 10.0.0.2:64976 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:47:26 10.0.0.2:62219 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:47:37 10.0.0.2:52309 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:47:50 10.0.0.2:60088 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:48:01 10.0.0.2:58437 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:48:14 10.0.0.2:49158 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:48:25 10.0.0.2:64946 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:48:38 10.0.0.2:58944 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:48:49 10.0.0.2:56633 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 11:49:02 10.0.0.2:54678 - *CMDR,OM,865503037351175,000000000000,L0,0#
2017-07-04 13:15:04 10.0.0.5:51638 - GET / HTTP/1.1
Sample generated log.txt file:
2017-06-28 12:31:07 89.101.87.230:35456 - test
2017-06-28 12:31:11 89.101.87.230:27467 - asdf
2017-06-28 12:31:26 89.101.87.230:47658 - This realy receives a connection and close after EOL!