@@ -11,6 +11,7 @@ import (
1111
1212 "github.com/TruthHun/html2json/html2json"
1313
14+ "github.com/TruthHun/BookStack/models/store"
1415 "github.com/TruthHun/BookStack/oauth"
1516
1617 "github.com/PuerkitoBio/goquery"
@@ -914,6 +915,7 @@ func (this *CommonController) handleReleaseV2(release, bookIdentify string) inte
914915 utils .HandleSVG (query , bookIdentify )
915916 query .Find (".reference-link" ).Remove ()
916917 query .Find (".header-link" ).Remove ()
918+ release , _ = query .Html ()
917919
918920 nodes , err := html2json .NewDefault ().Parse (release , models .GetAPIStaticDomain ())
919921 if err != nil {
@@ -933,7 +935,34 @@ func (this *CommonController) handleReleaseV3(release, bookIdentify string) inte
933935 utils .HandleSVG (query , bookIdentify )
934936 query .Find (".reference-link" ).Remove ()
935937 query .Find (".header-link" ).Remove ()
938+ medias := []string {"audio" , "video" }
939+ for _ , tag := range medias {
940+ query .Find (tag ).Each (func (idx int , sel * goquery.Selection ) {
941+ src , ok := sel .Attr ("src" )
942+ if ok && ! (strings .HasPrefix (src , "https://" ) || strings .HasPrefix (src , "http://" )) {
943+ if utils .StoreType == utils .StoreOss { // OSS 云存储,则使用OSS签名,否则使用本地存储的链接签名
944+ if bucket , err := store .ModelStoreOss .GetBucket (); err == nil {
945+ src = strings .TrimLeft (src , "/" )
946+ src , _ = bucket .SignURL (src , http .MethodGet , utils .MediaDuration )
947+ if slice := strings .Split (src , "/" ); len (slice ) > 2 {
948+ src = strings .Join (slice [3 :], "/" )
949+ }
950+ }
951+ } else {
952+ if sign , err := utils .GenerateSign (src , time .Duration (utils .MediaDuration )); err == nil {
953+ if strings .Contains (src , "?" ) {
954+ src = src + "&sign=" + sign
955+ } else {
956+ src = src + "?sign=" + sign
957+ }
958+ }
959+ }
960+ }
961+ sel .SetAttr ("src" , src )
962+ })
963+ }
936964
965+ release , _ = query .Html ()
937966 nodes , err := html2json .NewDefault ().ParseByByteV2 ([]byte (release ), models .GetAPIStaticDomain ())
938967 if err != nil {
939968 beego .Error (err )
0 commit comments