From 4f43bc7ae2e3002d70e62acac5750092f36eea95 Mon Sep 17 00:00:00 2001 From: Frago9876543210 Date: Sun, 22 Jul 2018 11:27:52 +0300 Subject: [PATCH 1/4] Fix for timings --- .../command/defaults/TimingsCommand.php | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/pocketmine/command/defaults/TimingsCommand.php b/src/pocketmine/command/defaults/TimingsCommand.php index 3ca5d920fc6..ae529ce1732 100644 --- a/src/pocketmine/command/defaults/TimingsCommand.php +++ b/src/pocketmine/command/defaults/TimingsCommand.php @@ -98,21 +98,33 @@ public function execute(CommandSender $sender, string $commandLabel, array $args if($paste){ fseek($fileTimings, 0); $data = [ - "syntax" => "text", - "poster" => $sender->getServer()->getName(), - "content" => stream_get_contents($fileTimings) + "browser" => $agent = $sender->getServer()->getName() . " " . $sender->getServer()->getPocketMineVersion(), + "data" => $content = stream_get_contents($fileTimings) ]; fclose($fileTimings); + $host = $sender->getServer()->getProperty("timings.host", "timings.pmmp.io"); + $sender->getServer()->getAsyncPool()->submitTask(new class([ - ["page" => "http://paste.ubuntu.com", "extraOpts" => [ - CURLOPT_HTTPHEADER => ["User-Agent: " . $sender->getServer()->getName() . " " . $sender->getServer()->getPocketMineVersion()], - CURLOPT_POST => 1, - CURLOPT_POSTFIELDS => $data, + ["page" => "https://$host?upload=true", "extraOpts" => [ + CURLOPT_HTTPHEADER => [ + "User-Agent: $agent", + "Content-Type: application/x-www-form-urlencoded" + ], + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => http_build_query($data), CURLOPT_AUTOREFERER => false, CURLOPT_FOLLOWLOCATION => false ]] - ], $sender) extends BulkCurlTask{ + ], $sender, $host) extends BulkCurlTask{ + /** @var string */ + private $host; + + public function __construct(array $operations, $complexData = null, string $host){ + parent::__construct($operations, $complexData); + $this->host = $host; + } + public function onCompletion(Server $server){ $sender = $this->fetchLocal(); if($sender instanceof Player and !$sender->isOnline()){ // TODO replace with a more generic API method for checking availability of CommandSender @@ -123,17 +135,12 @@ public function onCompletion(Server $server){ $server->getLogger()->logException($result); return; } - list(, $headers) = $result; - foreach($headers as $headerGroup){ - if(isset($headerGroup["location"]) and preg_match('#^http://paste\\.ubuntu\\.com/([A-Za-z0-9+\/=]+)/#', trim($headerGroup["location"]), $match)){ - $pasteId = $match[1]; - break; - } + if(isset($result[0])){ + $pasteId = json_decode($result[0], true)["id"]; } if(isset($pasteId)){ - $sender->sendMessage(new TranslationContainer("pocketmine.command.timings.timingsUpload", ["http://paste.ubuntu.com/" . $pasteId . "/"])); $sender->sendMessage(new TranslationContainer("pocketmine.command.timings.timingsRead", - ["http://" . $sender->getServer()->getProperty("timings.host", "timings.pmmp.io") . "/?url=" . urlencode($pasteId)])); + ["https://" . $this->host . "/?id=" . $pasteId])); }else{ $sender->sendMessage(new TranslationContainer("pocketmine.command.timings.pasteError")); } From 0492de7b3e19b6043c2294ffbcc72e5fd37b5834 Mon Sep 17 00:00:00 2001 From: Frago9876543210 Date: Mon, 23 Jul 2018 15:00:29 +0300 Subject: [PATCH 2/4] Update TimingsCommand.php --- src/pocketmine/command/defaults/TimingsCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pocketmine/command/defaults/TimingsCommand.php b/src/pocketmine/command/defaults/TimingsCommand.php index ae529ce1732..e453379bf55 100644 --- a/src/pocketmine/command/defaults/TimingsCommand.php +++ b/src/pocketmine/command/defaults/TimingsCommand.php @@ -136,7 +136,7 @@ public function onCompletion(Server $server){ return; } if(isset($result[0])){ - $pasteId = json_decode($result[0], true)["id"]; + $pasteId = json_decode($result[0])->id ?? 0; } if(isset($pasteId)){ $sender->sendMessage(new TranslationContainer("pocketmine.command.timings.timingsRead", From c7d65dd5d77a8077468de782f2d17ae27a797c21 Mon Sep 17 00:00:00 2001 From: Frago9876543210 Date: Wed, 25 Jul 2018 19:08:17 +0300 Subject: [PATCH 3/4] Update TimingsCommand.php --- src/pocketmine/command/defaults/TimingsCommand.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pocketmine/command/defaults/TimingsCommand.php b/src/pocketmine/command/defaults/TimingsCommand.php index e453379bf55..0e4c9b87576 100644 --- a/src/pocketmine/command/defaults/TimingsCommand.php +++ b/src/pocketmine/command/defaults/TimingsCommand.php @@ -135,8 +135,8 @@ public function onCompletion(Server $server){ $server->getLogger()->logException($result); return; } - if(isset($result[0])){ - $pasteId = json_decode($result[0])->id ?? 0; + if(isset($result[0]) && is_array($response = json_decode($result[0], true))){ + $pasteId = $response["id"]; } if(isset($pasteId)){ $sender->sendMessage(new TranslationContainer("pocketmine.command.timings.timingsRead", From bb9dc6037f29b2cd5be76e0d15da76a423da4abe Mon Sep 17 00:00:00 2001 From: Frago9876543210 Date: Wed, 25 Jul 2018 19:10:36 +0300 Subject: [PATCH 4/4] Update TimingsCommand.php --- src/pocketmine/command/defaults/TimingsCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pocketmine/command/defaults/TimingsCommand.php b/src/pocketmine/command/defaults/TimingsCommand.php index 0e4c9b87576..29be494226c 100644 --- a/src/pocketmine/command/defaults/TimingsCommand.php +++ b/src/pocketmine/command/defaults/TimingsCommand.php @@ -135,7 +135,7 @@ public function onCompletion(Server $server){ $server->getLogger()->logException($result); return; } - if(isset($result[0]) && is_array($response = json_decode($result[0], true))){ + if(isset($result[0]) && is_array($response = json_decode($result[0], true)) && isset($response["id"])){ $pasteId = $response["id"]; } if(isset($pasteId)){