From afe077361761f963e3f45553da257cb938240a70 Mon Sep 17 00:00:00 2001 From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Fri, 27 Jan 2023 02:38:15 +0800 Subject: [PATCH] =?utf8?q?Improve=20=E6=B5=81=E6=94=AF=E6=8C=81ref?= =?utf8?q?=E5=8F=82=E6=95=B0=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Reply/F.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/Reply/F.go b/Reply/F.go index 51cb420..a18e314 100644 --- a/Reply/F.go +++ b/Reply/F.go @@ -1176,17 +1176,32 @@ func init() { w.Header().Set("Connection", "keep-alive") w.Header().Set("Content-Transfer-Encoding", "binary") + var rpath string if referer, e := url.Parse(r.Header.Get(`Referer`)); e != nil { w.Header().Set("Retry-After", "1") w.WriteHeader(http.StatusServiceUnavailable) flog.L(`E: `, e) return - } else if referer.Path != `/now/` { + } else { + rpath = referer.Path + } + + if qref := r.URL.Query().Get("ref"); rpath == "" && qref != "" { + rpath = "/" + qref + "/" + } + + if rpath == "" { + w.Header().Set("Retry-After", "1") + w.WriteHeader(http.StatusServiceUnavailable) + flog.L(`E: `, `无指定路径`) + } + + if rpath != `/now/` { if v, ok := c.C.K_v.LoadV(`直播流保存位置`).(string); ok && v != "" { if strings.HasSuffix(v, "/") || strings.HasSuffix(v, "\\") { - v += referer.Path[1:] + v += rpath[1:] } else { - v += referer.Path + v += rpath } if file.New(v+"0.flv", 0, true).IsExist() { v += "0.flv" @@ -1200,6 +1215,7 @@ func init() { } var rangeHeaderNum int + var e error if rangeHeader := r.Header.Get(`range`); rangeHeader != "" { if strings.Index(rangeHeader, "bytes=") != 0 { w.WriteHeader(http.StatusRequestedRangeNotSatisfiable) -- 2.39.2