Exemplo n.º 1
0
 public function onMessageReceived(SocketServer $server, SocketClient $sender, $message)
 {
     if (!$sender->verified) {
         $cookies = $this->parseCookies(@$sender->headers['Cookie'] ?: "");
         $sender->verified = $this->auth($cookies);
         if (!$sender->verified) {
             $sender->send(array('type' => 'error', 'error' => 'Auth failed'));
             $sender->disconnect();
             return;
         }
     }
     echo "MESSAGE DATA: " . $message . "\n";
     $data = json_decode($message);
     if ($data) {
         if ($data->type == 'kill' && $sender->process) {
             $sender->process->stop();
         } elseif ($data->type == 'shell' && $data->cmd) {
             if ($sender->process) {
                 $sender->process->stop();
                 usleep(1000 * 10);
             }
             $process = new Process($data->cmd);
             $process->start(function ($type, $buffer) use($sender) {
                 if (Process::ERR !== $type) {
                     $sender->buffer = $sender->buffer ?: "";
                     $sender->buffer .= $buffer;
                 } else {
                 }
             });
             $sender->process = $process;
         }
     }
 }