diff --git a/composer.json b/composer.json index 7cb9bd2e..cc3fff2c 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "description": "High performance QQ robot and web server development framework", "minimum-stability": "stable", "license": "Apache-2.0", - "version": "2.2.2", + "version": "2.2.3", "extra": { "exclude_annotate": [ "src/ZM" diff --git a/docs/update/v2.md b/docs/update/v2.md index cfb23bf4..7b50c842 100644 --- a/docs/update/v2.md +++ b/docs/update/v2.md @@ -1,5 +1,12 @@ # 更新日志(v2 版本) +## v2.2.3 + +> 更新时间:2021.1.30 + +- 修复:waitMessage() 在 v2.2.2 版本中不可用的 bug +- 修复:access_token 无效的问题 + ## v2.2.2 > 更新时间:2021.1.29 diff --git a/src/ZM/Event/ServerEventHandler.php b/src/ZM/Event/ServerEventHandler.php index d2cbb7ae..974ef8da 100644 --- a/src/ZM/Event/ServerEventHandler.php +++ b/src/ZM/Event/ServerEventHandler.php @@ -401,6 +401,14 @@ class ServerEventHandler Console::debug("Calling Swoole \"open\" event from fd=" . $request->fd); unset(Context::$context[Co::getCid()]); $type = strtolower($request->header["x-client-role"] ?? $request->get["type"] ?? ""); + $access_token = explode(" ", $request->header["authorization"] ?? $request->get["token"] ?? "")[1] ?? ""; + if (($a = ZMConfig::get("global", "access_token")) != "") { + if ($access_token !== $a) { + $server->close($request->fd); + Console::warning("Unauthorized access_token: ".$access_token); + return; + } + } $type_conn = ManagerGM::getTypeClassName($type); ManagerGM::pushConnect($request->fd, $type_conn); $conn = ManagerGM::get($request->fd); diff --git a/src/ZM/Module/QQBot.php b/src/ZM/Module/QQBot.php index e64923e4..88cd36a9 100644 --- a/src/ZM/Module/QQBot.php +++ b/src/ZM/Module/QQBot.php @@ -30,11 +30,6 @@ class QQBot try { $data = json_decode(context()->getFrame()->data, true); set_coroutine_params(["data" => $data]); - if (isset($data["echo"])) { - if (CoMessage::resumeByWS()) { - EventDispatcher::interrupt(); - } - } if (isset($data["post_type"])) { //echo TermColor::ITALIC.json_encode($data, 128|256).TermColor::RESET.PHP_EOL; ctx()->setCache("level", 0); @@ -44,10 +39,12 @@ class QQBot if ($r->store === "block") EventDispatcher::interrupt(); } //Console::warning("最上数据包:".json_encode($data)); - $this->dispatchEvents($data); - } else { - $this->dispatchAPIResponse($data); } + if (isset($data["echo"]) || isset($data["post_type"])) { + if (CoMessage::resumeByWS()) EventDispatcher::interrupt(); + } + if (isset($data["post_type"])) $this->dispatchEvents($data); + else $this->dispatchAPIResponse($data); } /** @noinspection PhpRedundantCatchClauseInspection */ catch (WaitTimeoutException $e) { $e->module->finalReply($e->getMessage()); }