From 8516ab5ff878e04c35bd1a7dcf9a1fc2a2668298 Mon Sep 17 00:00:00 2001 From: Dnomd343 Date: Mon, 9 Aug 2021 22:23:44 +0800 Subject: [PATCH] feat: kms check on server --- cmdRoute.php | 7 ++- models/kmsCheck.php | 109 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 models/kmsCheck.php diff --git a/cmdRoute.php b/cmdRoute.php index b751084..d827cc7 100644 --- a/cmdRoute.php +++ b/cmdRoute.php @@ -1,9 +1,11 @@ isHost($temp[0])) { + $host = $server; + $port = 1688; + } else { + return array( + 'status' => 'error', + 'message' => 'Illegal host' + ); + } + } else if (count($temp) === 2) { // 带一个:的请求 + if ($this->isHost($temp[0])) { + $host = $temp[0]; + } else { + return array( + 'status' => 'error', + 'message' => 'Illegal host' + ); + } + $port = $temp[1]; + if ($port < 0 || $port > 65535) { + return array( + 'status' => 'error', + 'message' => 'Illegal port' + ); + } + } else { // 带多个:的请求 + return array( + 'status' => 'error', + 'message' => 'Illegal request' + ); + } + return array( + 'status' => 'ok', + 'host' => $host, + 'port' => $port + ); + } + + public function checkKms($host, $port) { + $server = $host . ':' . $port; + $url = $this->api . 'host=' . $host . '&port=' . $port; + $content = json_decode(file_get_contents($url), true); // 请求上游接口 + switch ($content['status']) { + case 'ok': + return array( + 'parse_mode' => 'Markdown', + 'text' => '`' . $server . '`' . PHP_EOL . 'KMS服务*正常运行*' + ); + case 'error': + return array( + 'parse_mode' => 'Markdown', + 'text' => '`' . $server . '`' . PHP_EOL . 'KMS服务*无法使用*' + ); + default: + return array( + 'text' => 'Server error' + ); + } + } +} + +function kmsCheck($rawParam) { // KMS测试入口 + global $chatId; + if ($rawParam == '' || $rawParam === 'help') { // 显示使用说明 + sendMessage($chatId, array( + 'parse_mode' => 'Markdown', + 'text' => '*Usage:* `/kms IP/Domain[:port]`' + )); + return; + } + $check = (new kmsCheck)->check($rawParam); + if ($check['status'] === 'error') { // 输入格式有误 + sendMessage($chatId, array( + 'text' => $check['message'] + )); + return; + } + $message = json_decode(sendMessage($chatId, array( + 'parse_mode' => 'Markdown', + 'text' => '`' . $rawParam . '`' . PHP_EOL . 'KMS服务检测中...' + )), true); + sendPayload(array( + 'method' => 'editMessageText', + 'chat_id' => $chatId, + 'message_id' => $message['result']['message_id'] + ) + (new kmsCheck)->checkKms($check['host'], $check['port'])); // 发起查询并返回结果 +} + +?>