Executes a command from a CommandSender
public dispatchCommand ( pocketmine\command\CommandSender $sender, string $commandLine ) : boolean | ||
$sender | pocketmine\command\CommandSender | |
$commandLine | string | |
리턴 | boolean |
public function check() { for ($n = 0; $n < $this->threads; ++$n) { if ($this->workers[$n]->isTerminated() === true) { $this->workers[$n] = new RCONInstance($this->socket, $this->password, $this->clientsPerThread); } elseif ($this->workers[$n]->isWaiting()) { if ($this->workers[$n]->response !== "") { $this->server->getLogger()->info($this->workers[$n]->response); $this->workers[$n]->synchronized(function (RCONInstance $thread) { $thread->notify(); }, $this->workers[$n]); } else { $response = new RemoteConsoleCommandSender(); $command = $this->workers[$n]->cmd; $this->server->getPluginManager()->callEvent($ev = new RemoteServerCommandEvent($response, $command)); if (!$ev->isCancelled()) { $this->server->dispatchCommand($ev->getSender(), $ev->getCommand()); } $this->workers[$n]->response = TextFormat::clean($response->getMessage()); $this->workers[$n]->synchronized(function (RCONInstance $thread) { $thread->notify(); }, $this->workers[$n]); } } } }
public function check() { $d = Utils::getRealMemoryUsage(); $u = Utils::getMemoryUsage(true); $usage = round($u[0] / 1024 / 1024, 2) . "/" . round($d[0] / 1024 / 1024, 2) . "/" . round($u[1] / 1024 / 1024, 2) . "/" . round($u[2] / 1024 / 1024, 2) . " MB @ " . Utils::getThreadCount() . " threads"; $serverStatus = serialize(["online" => count($this->server->getOnlinePlayers()), "max" => $this->server->getMaxPlayers(), "upload" => round($this->server->getNetwork()->getUpload() / 1024, 2), "download" => round($this->server->getNetwork()->getDownload() / 1024, 2), "tps" => $this->server->getTicksPerSecondAverage(), "load" => $this->server->getTickUsageAverage(), "usage" => $usage]); for ($n = 0; $n < $this->threads; ++$n) { if (!$this->workers[$n]->isTerminated()) { $this->workers[$n]->serverStatus = $serverStatus; } if ($this->workers[$n]->isTerminated() === true) { $this->workers[$n] = new RCONInstance($this->socket, $this->password, $this->clientsPerThread); } elseif ($this->workers[$n]->isWaiting()) { if ($this->workers[$n]->response !== "") { $this->server->getLogger()->info($this->workers[$n]->response); $this->workers[$n]->synchronized(function (RCONInstance $thread) { $thread->notify(); }, $this->workers[$n]); } else { $response = new RemoteConsoleCommandSender(); $command = $this->workers[$n]->cmd; $this->server->getPluginManager()->callEvent($ev = new RemoteServerCommandEvent($response, $command)); if (!$ev->isCancelled()) { $this->server->dispatchCommand($ev->getSender(), $ev->getCommand()); } $this->workers[$n]->response = $response->getMessage(); $this->workers[$n]->synchronized(function (RCONInstance $thread) { $thread->notify(); }, $this->workers[$n]); } } } }
public function onCompletion(Server $server) { $this->cache = unserialize($this->cache); $this->data = unserialize($this->data); $obj = json_decode($this->data, true); $player = $server->getPlayer($this->player); if (empty($obj)) { if ($this->mode == 1) { $server->getLogger()->critical("API Server Seems to be Down"); if (!$this->cfg["bypass-check"]) { $player->close("", $this->cfg["bypass-message"]); } } else { if ($this->mode == 2) { $player->sendMessage("API Server Seems to be Down, try again later."); } } } else { if ($obj['status'] === "success") { //Cache only if API returned success status string if ($this->cache instanceof SimpleCache) { if (!$this->cache->is_cached($this->ip)) { $this->cache->set_cache($this->ip, $this->data); } } if ($obj['host-ip']) { $provider = $obj["org"]; $countryCode = $obj["cc"]; if ($this->mode == 1) { if ($player != null) { foreach ($this->cfgCommands as $command) { $command = str_replace("%p", $player->getName(), $command); $server->dispatchCommand(new ConsoleCommandSender(), $command); } if ($this->cfg["logging"]) { $server->getLogger()->info(TextFormat::DARK_RED . $player->getName() . TextFormat::WHITE . " has been disconnected for using an anonymizer: IP Details -> " . $provider . "," . $countryCode); } } } else { if ($this->mode == 2) { $player->sendMessage($this->ip . " belongs to a hosting organization"); $player->sendMessage("IP Details: " . $provider . "," . $countryCode); } } } else { if ($this->mode == 1) { if ($player != null) { if ($this->cfg["logging"]) { $server->getLogger()->info(TEXTFormat::GREEN . $player->getName() . TextFormat::WHITE . " has passed VPNGuard checks."); } } } else { if ($this->mode == 2) { $player->sendMessage($this->ip . " does not seem to belong to a hosting organization."); $player->sendMessage("If you believe this is an error please report it to us to have it fixed."); } } } } else { if ($this->mode == 1) { if ($player != null) { $server->getLogger()->warning(TextFormat::WHITE . "API Server Returned Error Message: " . TextFormat::RED . $obj['msg'] . TextFormat::WHITE . " when " . TextFormat::GOLD . $player->getName() . TextFormat::WHITE . " tried to connect"); if ((strpos($obj['msg'], "Invalid API Key") || strpos($obj['msg'], "Payment Overdue")) === false) { $server->getLogger()->critical("Shutting down server to prevent blacklisting on API Database"); $server->shutdown(); return; } else { if (!$this->cfg["bypass-check"]) { $player->close("", $this->cfg["bypass-message"]); } } } } else { if ($this->mode == 2) { $player->sendMessage("API Server Returned Error Message: " . $obj["msg"]); } } } } }