Selaa lähdekoodia

Updated mediaServer implementation to support new Edge

Toby Chui 3 vuotta sitten
vanhempi
commit
a88c4620ec
2 muutettua tiedostoa jossa 35 lisäystä ja 20 poistoa
  1. 27 12
      mediaServer.go
  2. 8 8
      web/Music/index.html

+ 27 - 12
mediaServer.go

@@ -55,6 +55,9 @@ func media_server_validateSourceFile(w http.ResponseWriter, r *http.Request) (st
 
 	targetfile, _ := common.Mv(r, "file", false)
 	targetfile, err = url.QueryUnescape(targetfile)
+	if err != nil {
+		return "", err
+	}
 	if targetfile == "" {
 		return "", errors.New("Missing paramter 'file'")
 	}
@@ -143,19 +146,31 @@ func serverMedia(w http.ResponseWriter, r *http.Request) {
 
 	//Serve the file
 	if downloadMode {
-		userAgent := r.Header.Get("User-Agent")
-		filename := strings.ReplaceAll(url.QueryEscape(filepath.Base(realFilepath)), "+", "%20")
-		//log.Println(r.Header.Get("User-Agent"))
-
-		if strings.Contains(userAgent, "Safari/") {
-			//This is Safari. Use speial header
-			w.Header().Set("Content-Disposition", "attachment; filename="+filepath.Base(realFilepath))
-		} else {
-			//Fixing the header issue on Golang url encode lib problems
-			w.Header().Set("Content-Disposition", "attachment; filename*=UTF-8''"+filename)
+		escapedRealFilepath, err := url.PathUnescape(realFilepath)
+		if err != nil {
+			common.SendErrorResponse(w, err.Error())
+			return
 		}
-		//w.Header().Set("Content-Type", r.Header.Get("Content-Type"))
+		filename := filepath.Base(escapedRealFilepath)
+
+		/*
+			//12 Jul 2022 Update: Deprecated the browser detection logic
+			userAgent := r.Header.Get("User-Agent")
+			if strings.Contains(userAgent, "Safari/")) {
+				//This is Safari. Use speial header
+				w.Header().Set("Content-Disposition", "attachment; filename="+filepath.Base(realFilepath))
+			} else {
+				//Fixing the header issue on Golang url encode lib problems
+				w.Header().Set("Content-Disposition", "attachment; filename*=UTF-8''"+filename)
+			}
+		*/
+
+		w.Header().Set("Content-Disposition", "attachment; filename=\""+filename+"\"")
+		w.Header().Set("Content-Type", r.Header.Get("Content-Type"))
+
+		http.ServeFile(w, r, escapedRealFilepath)
+	} else {
+		http.ServeFile(w, r, realFilepath)
 	}
 
-	http.ServeFile(w, r, realFilepath)
 }

+ 8 - 8
web/Music/index.html

@@ -189,7 +189,7 @@
 	</div>
 
     <div id="albumnArt" align="center">
-        <img id="albumnArtImage" style="max-width: 80%;" src="img/default.png"> 
+        <img id="albumnArtImage" style="max-width: 80%; pointer-events: none; user-select: none;" src="img/default.png"> 
     </div>
     <div id="mainPlayerControlInterface">
         <!-- main control interface-->
@@ -621,7 +621,7 @@
 				{id}\
 			</div>\
 			<div class="mainList rightFunctionBar" align="center" onClick="showMore(this);">\
-				<i class="ellipsis vertical icon" style="top:30%;"></i>\
+				<i class="ellipsis vertical icon" style="top: 2em;"></i>\
 			</div>\
 		</div>';
 
@@ -1483,7 +1483,7 @@
 							${i + 1}
 						</div>
 						<div class="mainList rightFunctionBar" type="file" align="center" onclick="showMore(this);">
-							<i class="ellipsis vertical icon" style="top:30%;"></i>
+							<i class="ellipsis vertical icon" style="top: 2em;"></i>
 						</div>
 					</div>`);
 
@@ -1598,7 +1598,7 @@
 						</div>
 					</div>
 					<div class="mainList rightFunctionBar" tag="moreInfo" align="center" onClick="openPlaylist(this);">
-						<i class="chevron right icon" style="top:30%;"></i>
+						<i class="chevron right icon" style="margin-top:1.2em;"></i>
 					</div>
 				</div>`);
 			});
@@ -1624,7 +1624,7 @@
             </div>\
         </div>\
         <div class="mainList rightFunctionBar" tag="moreInfo" align="center" onClick="moreFolder(this);">\
-            <i class="chevron right icon" style="top:30%;"></i>\
+            <i class="chevron right icon" style="margin-top:1.2em;"></i>\
         </div>\
     </div>';
         $("#interfaceTitle").text("Storage");
@@ -1731,7 +1731,7 @@
             </div>\
         </div>\
         <div class="mainList rightFunctionBar" type="folder" align="center">\
-            <i class="chevron right icon" style="top:30%;"></i>\
+            <i class="chevron right icon" style="margin-top:1.2em;"></i>\
         </div>\
     </div>';
     var fileTemplate = `<div class="mainList file item" filepath={filepath} id={id} rawname={rawname}>\
@@ -1747,7 +1747,7 @@
             {id}\
         </div>\
         <div class="mainList rightFunctionBar" type="file" align="center">\
-            <i class="ellipsis vertical icon" style="top:30%;"></i>\
+            <i class="ellipsis vertical icon" style="margin-top:1.2em;"></i>\
         </div>\
     </div>`;
 
@@ -2128,7 +2128,7 @@
 						${i + 1}
 					</div>
 					<div class="mainList rightFunctionBar" align="center" onClick="showMore(this);">
-						<i class="ellipsis vertical icon" style="top:30%;"></i>\
+						<i class="ellipsis vertical icon" style="margin-top:1.2em;"></i>\
 					</div>
 				</div>`);
 	        }