feat: add characters

This commit is contained in:
2026-07-10 00:56:03 +03:30
parent da6df0328f
commit fe0b63083c
19 changed files with 635 additions and 92 deletions
+19 -4
View File
@@ -19,8 +19,11 @@ import (
)
const (
maxReqBody = 8 << 10 // ۸ کیلوبایت از payloadِ درخواست
maxReqBody = 8 << 10 // ۸ کیلوبایت از payloadِ درخواست (فقط برای نمایش)
maxRespBody = 16 << 10 // ۱۶ کیلوبایت از پاسخ
// سقفِ خواندنِ بدنه‌ی غیرِ multipart (JSON): کامل بازگردانده می‌شود تا هندلر
// همه را ببیند؛ فقط برای امنیت در برابرِ بدنه‌ی بسیار بزرگ محدود شده است.
maxCaptureBody = 4 << 20 // ۴ مگابایت
)
// Entry یک درخواستِ ثبت‌شده را نگه می‌دارد.
@@ -177,9 +180,21 @@ func (t *Telescope) Middleware(next http.Handler) http.Handler {
var reqBody string
if req.Body != nil && req.Method != http.MethodGet {
b, _ := io.ReadAll(io.LimitReader(req.Body, maxReqBody))
req.Body = io.NopCloser(bytes.NewReader(b))
reqBody = maskSecrets(string(b))
// آپلودِ فایل (multipart) را دست نزن؛ بدنه بزرگ است و باید کامل به
// هندلر برسد (وگرنه ParseMultipartForm شکست می‌خورد ⇒ «bad upload»).
if strings.HasPrefix(req.Header.Get("Content-Type"), "multipart/form-data") {
reqBody = "[multipart upload]"
} else {
// بدنه را کامل بخوان و کامل بازگردان (تا هندلر همه‌ی آن را ببیند)،
// اما فقط بخشِ ابتدایی را برای نمایش در تلسکوپ نگه‌دار.
b, _ := io.ReadAll(io.LimitReader(req.Body, maxCaptureBody))
req.Body = io.NopCloser(bytes.NewReader(b))
n := len(b)
if n > maxReqBody {
n = maxReqBody
}
reqBody = maskSecrets(string(b[:n]))
}
}
var uid int64