fix(outlink): bump pro submodule for the Feishu challenge fix - #7773
Merged
Merged
Conversation
|
✅ Admin Preview Image Ready! 🕒 Time: 2026-09-17 23:41:41 (UTC+8) |
Coverage Report
File CoverageNo changed files found. |
Feishu signs event pushes only, so an encrypted callback URL verification request was rejected with 400 before the challenge could be returned, and the console reported a non-JSON response. The fix lives in fastgpt-pro, on top of the pro revision this branch already tracks. This temporarily points at the fork commit while the pro PR is open (draft), and will be repointed at a labring/fastgpt-pro commit before merge.
FinleyGe
force-pushed
the
fix/feishu-outlink
branch
from
September 17, 2026 15:35
6abcad9 to
3a4e4bc
Compare
FinleyGe
marked this pull request as ready for review
September 18, 2026 03:35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
Draft on purpose. It is the one-line
prosubmodule bump that ships the Feishu Encrypt Key fix:The fix is proposed to
labring/fastgpt-proaslabring/fastgpt-pro#1154. That PR is based on promain(26cb5a5f), but this branch tracks pro8814100b— the head of the openlabring/fastgpt-pro#1086(codex/app-permission) — and the two lines are siblings offdaa1a890, so a bump to #1154's merge commit would revert #1086's 4 commits.f2b0ee98is therefore the fix cherry-picked onto8814100b; itsadmin/src/service/support/outLink/feishu/tree is identical to8985f757(the #1154 head), and it is a descendant of the pro revision this branch already tracks.Draft because the hash will change once labring's pro lines reconcile; I will repoint it at a commit on
labring/fastgpt-promain(or at the then-current tracked pro revision) before this leaves draft.The pointer is resolvable today — verified by reproducing the CI step in a scratch clone of this exact branch:
labring/fastgpt-proserves the object by SHA (it is in that repository's store;git fetch labring/fastgpt-pro f2b0ee98also succeeds), the same way it serves8814100btoday. PR CI is green as well.What it ships
With an Encrypt Key configured on both the Feishu app and the FastGPT Feishu publish channel, saving the event subscription request URL failed with "the response is not valid JSON"; leaving Encrypt Key empty on both sides worked.
admin/src/service/support/outLink/feishu/provider.tshandled the URL verification challenge after signature verification. Encrypt Key makes the request body{"encrypt": "..."}, so the plaintext challenge branch never matched, and the request hit the signature check, which requiresx-lark-request-timestamp/x-lark-request-nonce/x-lark-signatureand answered400 Signature headers are invalid. Feishu signs event pushes only, not the callback URL verification request ("Security verification" in the encrypt key doc; the official Node SDK also returns the challenge beforecheckIsEventValidated). The request URL exposed by the publish channel goes through the app edge into pro viaplusRequest, whosecheckResrejectscode >= 400, so the app route threw without a body and Feishu received a non-JSON response.The fix decrypts and returns the challenge before the signature check and keeps the signature check for event pushes. An encrypted challenge still must decrypt with the configured Encrypt Key and pass
FeishuPayloadSchema(challenge+type: 'url_verification'), so the branch stays closed to callers without the key; response envelope, error codes and event-push verification are unchanged.Verification (run on
f2b0ee98, the bump target)pnpm test pro/admin/test/service/support/outLink/feishu/provider.test.ts— 8 passed, including 3 new cases (unsigned encrypted challenge; encrypted challenge when signature verification would fail; event push with no signature headers still 400). The 2 encrypted-challenge cases fail on the pre-fix code.createApiEntrypipeline with a realaes-256-cbc+sha256(encryptKey)+ random IV payload:200 {"code":200,"statusText":"","message":"","data":{"challenge":"smoke-challenge-123"}}(pre-fix: 400). The app edge unwrapsdata, so Feishu receives{"challenge":"smoke-challenge-123"}.pnpm --dir pro/admin typecheck— clean.