feat: add characters
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user