From 4128880cf2b6a99101797d3335985aeba11eee3d Mon Sep 17 00:00:00 2001 From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Tue, 25 Oct 2022 14:30:09 +0800 Subject: [PATCH] =?utf8?q?=E6=94=AF=E6=8C=81=E8=A7=86=E9=A2=91=E5=88=86?= =?utf8?q?=E6=AE=B5=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Reply/F.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/Reply/F.go b/Reply/F.go index e195352..dfbec86 100644 --- a/Reply/F.go +++ b/Reply/F.go @@ -1157,13 +1157,32 @@ func init() { } else { v += referer.Path } - if p.Checkfile().IsExist(v + "0.flv") { + if file.New(v+"0.flv", 0, true).IsExist() { v += "0.flv" - } else if p.Checkfile().IsExist(v + "0.mp4") { + } else if file.New(v+"0.mp4", 0, true).IsExist() { v += "0.mp4" } - f := file.New(v, 0, false) + var rangeHeaderNum int + if rangeHeader := r.Header.Get(`range`); rangeHeader != "" { + if strings.Index(rangeHeader, "bytes=") != 0 { + w.WriteHeader(http.StatusRequestedRangeNotSatisfiable) + flog.L(`W: `, `请求的范围不合法:仅支持bytes`) + return + } else if strings.Contains(rangeHeader, ",") && strings.Index(rangeHeader, "-") != len(rangeHeader)-1 { + w.WriteHeader(http.StatusRequestedRangeNotSatisfiable) + flog.L(`W: `, `请求的范围不合法:仅支持向后范围`) + return + } else if rangeHeaderNum, e = strconv.Atoi(string(rangeHeader[6 : len(rangeHeader)-1])); e != nil { + w.WriteHeader(http.StatusRequestedRangeNotSatisfiable) + flog.L(`W: `, `请求的范围不合法:`, e) + return + } else { + w.WriteHeader(http.StatusPartialContent) + } + } + + f := file.New(v, int64(rangeHeaderNum), false) defer f.Close() if e := f.CopyToIoWriter(w, 1000000, true); e != nil { -- 2.39.2