shutdown(); $inputserver_ref->terminate(); return true; } function InputServer($sql) { #echo(var_dump($sql)); global $loop; global $clients; global $inputserver_ref; global $inputserver_sock; global $inputclients; $keyboard = $sql['SERVER']['keyboard']; $mouse = $sql['SERVER']['mouse']; $inputserver_ref = new React\ChildProcess\Process('exec /opt/uinput-mapper/input-read '.$keyboard.' -G '.$mouse.' -D -C'); $inputserver_ref->on('exit', function($exitCode, $termSignal) { }); $inputserver_sock = new React\Socket\Server($loop); $inputclients = new SplObjectStorage(); $i = 0; $inputserver_sock->on('connection', function($connection) use ($inputclients, &$i) { LogEcho("Connection to Event Server.","UINPUT"); $connection->id = ++$i; $inputclients->attach($connection); }); $inputserver_sock->listen("5055", "0.0.0.0"); LogEcho("Event server started on port 5055", "UINPUT"); #$loop->addTimer(0.001, function($timer) use ($inputserver_ref) { #}); $inputserver_ref->start($loop); $inputserver_ref->stdout->on('data', function($output) { global $inputclients; foreach($inputclients as $client) { $client->write($output); } }); $ResponseArray = array("response_type"=>"success", "response_msg"=>"Event server started on port 5055", "event_server_code"=>"EVT_200", "event_server_port"=>5055); return json_encode($ResponseArray); } function Connect($sql) { $IP = $sql['DEVICES']['host']; $PORT = $sql['DEVICES']['port']; global $loop; global $input_client_process; global $input_client; #$client = new steam_socket_client('tcp://'.$IP.":".$PORT); #$client_connection = new React\Stream\Steam($client, $loop); $input_client_process = new React\ChildProcess\Process('exec /opt/uinput-mapper/input-create -C'); $input_client_process->start($loop); $dnsResolverFactory = new React\Dns\Resolver\Factory(); $dns = $dnsResolverFactory->createCached($IP, $loop); $input_client = new React\SocketClient\Connector($loop, $dns); $input_client->create($IP, $PORT)->then(function (React\Stream\Stream $stream) { $stream->on('data', function($data) use ($stream) { global $input_client_process; $input_client_process->stdin->write($data); }); }); #$connection->on('data', function($output) { # $client_process->stdin->write($output); #}); return 1; } function Disconnect($sql) { global $input_client_process; global $input_client; $input_client_process->terminate(); #$input_client->end(); return true; } }