Skip to content

fix: 🐛 上流CodiMD 2.5.0を取り込み画像アップロードのTLSエラーを修復 - #13

Draft
Kentaro1043 wants to merge 138 commits into
traPfrom
fix/codimd-2.5.0-image-upload
Draft

Kentaro1043 wants to merge 138 commits into
traPfrom
fix/codimd-2.5.0-image-upload

Conversation

@Kentaro1043

@Kentaro1043 Kentaro1043 commented Oct 8, 2026 •

Copy link
Copy Markdown

Why

ConoHaへの画像アップロードが unable to get local issuer certificate で失敗し、画像を埋め込めなくなっている。現行のNode.js 10では、ConoHaが現在提示するGlobalSign Root R46の証明書チェーンを検証できない。

上流のリリースをマージし、ランタイムと依存関係を上流に合わせて更新する。

What Changed

  • 上流CodiMD 2.5.0をマージし、Node.jsを16.20.2へ更新。Dockerのビルド・ランタイムとtraP側のCIも上流のイメージに合わせる。
  • traP認証、ノート一覧、Swiftストレージ連携、traQ絵文字、KaTeXなどの独自機能を保って競合を解消。上流のエクスポート処理へのCSRF対策もtraP認証と両立させる。
  • ロックファイルでは上流2.5.0の依存バージョンとtraP独自ライブラリの既存バージョンを保持する。
  • 上流から追加されるCIに合わせ、traP独自コードのStandard違反と未使用importを整理する。

traP側のCI対応

上流2.5.0の取り込みに加え、traPのリポジトリ規則に合わせてCIのActionsを完全なコミットSHAで固定し、GITHUB_TOKENの権限をcontents: readに制限する。テストCIのActions v4への更新とGit依存のHTTPS利用は後続の上流CIに合わせ、SHA固定・権限制限はtraP独自変更としている。イメージ作成CIは既存Actionsの版を保持してSHA固定し、GHCRへのpackages: writeはイメージ作成ジョブに限定する。目次検査のdoctocは、Node.js 14でも動く既存ロックと同じ1.4.0に固定する。

Verification

  • 上流のNode.js 16ランタイムから、identity.tyo1.conoha.ioとobject-storage.tyo1.conoha.ioへHTTPS HEADを実行し、両方でauthorized=trueを確認。追加CA設定は使用していない。
  • ローカルのアップロードルートにmultipartでPNGを送信し、ストレージ処理をモックした状態でHTTP 200と画像URLを確認。不正な画像はHTTP 403となる。
  • ローカルでtraPのRS256 JWTが受理されることを確認。

ARM環境の検証ではインストールスクリプトを省略し、必要なネイティブ依存を個別に再構築している。通常のamd64 Dockerビルドと、本番ストレージへの実際のアップロードは未確認。

Review Guide

PRの全差分には上流133コミットの変更が含まれる。まず今回の競合解消とCI調整を確認し、その後に既存traP機能との互換性を確認する。

今回の調整箇所

ファイル 確認する点
lib/routes.js traPのgreedyAuthと上流のCSRFミドルウェアをトップページで両立していること
public/js/cover.js・public/views/index/body.ejs 既存ノート一覧を保持し、エクスポートを上流のCSRF付きPOSTへ切り替えていること。「traQへ戻る」を保持していること
public/views/codimd/head.ejs・foot.ejs・public/views/pretty.ejs・slide.ejs traQ絵文字CSSとKaTeX構成を保持し、上流のEJS include構文を採用していること
package.json・package-lock.json 上流2.5.0の依存更新と、traP独自依存の既存バージョンの保持
.github/workflows/main.yml ビルド・ランタイムの両方が上流Node.js 16イメージになっていること

マージの競合解消と手動調整だけを抽出するコマンド(競合マーカーの削除も表示される):

git show --remerge-diff 2a45b58b -- . ':!package-lock.json'

別コミット6c706a37はStandardの書式修正と未使用importの削除のみ。

以前からあるtraP独自機能

  • 認証: lib/auth/trap/index.js、lib/auth/index.js、lib/config/。
  • Swiftストレージ: lib/imageRouter/swift.js。今回このファイル自体には変更なし。
  • ノート一覧: lib/notes.js、lib/models/note.js、public/js/cover.js、public/views/index/body.ejs。
  • Markdown表示・絵文字・KaTeX・HTML許可: public/js/extra.js、public/js/render.js、public/js/index.js、public/views/、lib/csp.js。
  • メトリクス・配信: app.js、webpack.common.js、.github/workflows/main.yml。

上流2.5.0との差分で、既存分を含むtraP独自変更を一覧できる:

git diff 2.5.0 HEAD -- . ':!package-lock.json'

自動マージされた箇所も互換性の確認対象となる。実環境でのtraPログイン・セッション維持、ノート一覧とエクスポート、絵文字・数式表示、画像アップロードは未確認。

binotaliu and others added 30 commits April 10, 2020 22:03
Signed-off-by: BinotaLIU <binota@binota.org>
Signed-off-by: BinotaLIU <binota@binota.org>
Signed-off-by: BinotaLIU <binota@binota.org>
Signed-off-by: Tamotsu Takahashi <ttakah@gmail.com>
hackmdio#1581 (comment)

Signed-off-by: Tamotsu Takahashi <ttakah@gmail.com>
Move HTML from JS to EJS.
hackmdio#1581 (comment)
hackmdio#1581 (comment)

Signed-off-by: Tamotsu Takahashi <ttakah@gmail.com>
Move HTML from JS to EJS

I don't know how to register i18n helper to handlebars,
so "export to raw HTML" has not been touched.
You can do the same for html.hbs if you want.

Signed-off-by: Tamotsu Takahashi <ttakah@gmail.com>
hackmdio#1580 (comment)

Signed-off-by: Tamotsu Takahashi <ttakah@gmail.com>
The function should match only the beginnings of lines.

For example, see this testcase:
```
:::spoiler
here is a :::
:::
:::
```
The last line should be completed.

Without this patch, the third line is completed and the last is not.

Signed-off-by: Tamotsu Takahashi <ttakah@gmail.com>
Signed-off-by: Joachim Mathes <joachim_mathes@web.de>
simplify the regex
suggested by yukaii in hackmdio#1605

Co-authored-by: Yukai Huang <yukaihuangtw@gmail.com>
simplify the regex
suggested by yukaii in hackmdio#1605

Co-authored-by: Yukai Huang <yukaihuangtw@gmail.com>
Signed-off-by: Tamotsu Takahashi <ttakah@gmail.com>
Signed-off-by: Max Wu <jackymaxj@gmail.com>
Signed-off-by: Max Wu <jackymaxj@gmail.com>
…-data-filename-zero

Avoid append zero suffix on exporting user data
…-for-return-url

Handle when request url has no valid referer
ref issue: aws/aws-sdk-js-v3#1396

Signed-off-by: Max Wu <jackymaxj@gmail.com>
Signed-off-by: Max Wu <jackymaxj@gmail.com>
Signed-off-by: Max Wu <jackymaxj@gmail.com>
Signed-off-by: Max Wu <jackymaxj@gmail.com>
…d-s3-config

Fix S3 client config passing for image upload
…-mathjax

Add TeX mhchem extensions for MathJax
…art.js-1.15.0

Upgrade flowchart.js to version 1.15.0
Signed-off-by: Raccoon <raccoon@hackmd.io>
Signed-off-by: Yukai Huang <yukaihuangtw@gmail.com>
Signed-off-by: Yukai Huang <yukaihuangtw@gmail.com>
Signed-off-by: Yukai Huang <yukaihuangtw@gmail.com>
Signed-off-by: Yukai Huang <yukaihuangtw@gmail.com>
Signed-off-by: Raccoon <raccoon@hackmd.io>
PeterDaveHello and others added 24 commits August 11, 2023 21:53
Signed-off-by: Peter Dave Hello <hsu@peterdavehello.org>
npm found 160 vulnerabilities (6 low, 75 moderate, 63 high, 16 critical)
from the original dependencies. Using `npm audit fix` to update most of
the dependencies will eliminate 37 of the 160 vulnerabilities.

markmap-lib was excluded in this update because it actually contains
breaking changes.

Signed-off-by: Peter Dave Hello <hsu@peterdavehello.org>
Signed-off-by: Peter Dave Hello <hsu@peterdavehello.org>
Signed-off-by: Peter Dave Hello <hsu@peterdavehello.org>
Reference: e6d2b7a

Signed-off-by: Peter Dave Hello <hsu@peterdavehello.org>
Signed-off-by: Michael Wang <michael19920327@gmail.com>
Signed-off-by: Yukai Huang <yukaihuangtw@gmail.com>
…-prevent-xss

fix: sanitize pdf url to prevent XSS on inline PDFs
Update both Traditional and Simplified Chinese locales
Signed-off-by: hcyuser <user@hcy.idv.tw>
Signed-off-by: hcyuser <user@hcy.idv.tw>
Signed-off-by: Yukai Huang <yukaihuangtw@gmail.com>
Signed-off-by: Yukai Huang <yukaihuangtw@gmail.com>
Signed-off-by: stanley2058 <stanley2058@yahoo.com.tw>
Signed-off-by: stanley2058 <stanley2058@yahoo.com.tw>
Signed-off-by: stanley2058 <stanley2058@yahoo.com.tw>
@coderabbitai

coderabbitai Bot commented Oct 8, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Comment thread .github/workflows/build.yml Fixed
Comment thread .github/workflows/build.yml Fixed
Comment thread lib/imageRouter/index.js
uploadProvider.uploadImage(files.image.filepath, function (err, url) {
// remove temporary upload file, and ignore any error
fs.unlink(files.image.path, () => {})
fs.unlink(files.image.filepath, () => {})
Comment thread lib/routes.js

// export the data of the authenticated user
appRouter.get('/me/export', userController.exportMyData)
appRouter.post('/me/export', urlencodedParser, csurfMiddleware, userController.exportMyData)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.