Require a bearer token for the Express analytics endpoint
メンテナーはふだん 1 日以内に返信
評価
この issue はまだ評価されていません。
説明
chatcopsAnalyticsHandler (packages/server/src/adapters/express.ts, lines 73 to 78) answers anyone who finds the URL. The stats aren't secret, but they show how much traffic and how many leads a site gets, which is nobody else's business.
What to do
- Add
analyticsToken?: stringtoChatCopsServerConfig(packages/server/src/config.ts), with a short doc comment. - When it's set,
chatcopsAnalyticsHandleronly answers requests withAuthorization: Bearer <token>. Anything else gets401with{ "error": "unauthorized" }and aWWW-Authenticate: Bearerheader. - Compare the tokens in constant time. Don't import
node:crypto: this file is part of the same bundle Workers load. A small loop that compares every character, and checks the length, is enough. - When it isn't set, keep today's behavior so nothing breaks, but log one warning the first time the endpoint is hit, saying anyone can read the stats and how to set
analyticsToken. - Update the "Reading Stats with Express" section of
website/src/content/docs/core/analytics.mdx(line 18) with the option and acurlexample.
Where to look
packages/server/src/adapters/express.ts,chatcopsAnalyticsHandlerpackages/server/tests/adapters/express.test.ts, line 322, has the existing analytics test
Acceptance criteria
- With
analyticsTokenset: the right token gets the stats, while a missing token, a wrong token and a token of a different length get 401 - Without it: the stats are returned as today, and the warning is logged once across several requests
- Docs updated
- Changeset for
@chatcops/server(minor, since it adds an option) -
pnpm test:coverageandpnpm lintpass
Please get this merged by Oct 31.
Want to work on this? Comment below and I'll assign it to you. Please take one issue at a time, branch off dev, and open your PR against dev with Closes #<this issue number>. Setup notes (pnpm, build before test) are in CONTRIBUTING.md.
- 主要言語
- TypeScript
- スター
- 13
- フォーク
- 7
- 平均マージ
- 3時間 41分
- マージ済み PR(30日)
- 155
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
codercops/chatcops のほかの issue
-
Document the pre-chat form対応中かも @masyarakatai が 6 日前に担当しました。 オープンdocumentation good first issue hacktoberfest widget
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
codercops/chatcops#70 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
-
docs: update the providers page for openai-compatible, registerProvider and provider imports対応中かも @prakashNalla が 1 日前に担当しました。 オープンdocumentation good first issue hacktoberfest website
難易度 3/5 1〜2日 初心者へのやさしさ 76/100
codercops/chatcops#291 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
docs: add a protocol reference page for custom clients対応中かも @kachamsiddarth が 1 日前に担当しました。 オープンdocumentation good first issue hacktoberfest website
codercops/chatcops#286 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Create @chatcops/store-cloudflare (D1, KV and a Durable Object counter)対応中かも @bhushan4work が 1 日前に担当しました。 オープンenhancement hacktoberfest help wanted server
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
codercops/chatcops#249 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Create @chatcops/store-sqlite, a store for single-server setups対応中かも @srikar-naidu が 1 日前に担当しました。 オープンenhancement hacktoberfest help wanted server
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
codercops/chatcops#247 · コメント 3 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
codercops/chatcops の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
maniator/verticopolis#1303 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
components-web-app/docs#297 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
appwrite/mcp-for-docs#23 · コメント 1 件 ·
-
`@vanilla-extract/turbopack-plugin`: "getImageSize is not a function" with Next.js 16.4.x when a `.css.ts` file imports an image対応中かも @aevarOrigo が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
vanilla-extract-css/vanilla-extract#1799 · コメント 1 件 ·
-
native
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
prime-radiant-inc/evener#4839 ·
メンテナーはふだん 1 日以内に返信