[Slim-Checkins] r33873 - in /7.7/trunk/server: Changelog7.html HTML/EN/html/SqueezeJS/Base.js

[email protected] Tue, 06 Mar 2012 15:24:18 -0000
Newsgroups gmane.music.equipment.slimdevices.cvs
Message-ID <[email protected]>
Author: mherger
Date: Tue Mar  6 07:24:17 2012
New Revision: 33873

URL: http://svn.slimdevices.com/slim?rev=33873&view=rev
Log:
Fixed Bug: 17858
Description: not all absolute URLs are publicly available. Don't use imageproxy for local addresses.

Modified:
    7.7/trunk/server/Changelog7.html
    7.7/trunk/server/HTML/EN/html/SqueezeJS/Base.js

Modified: 7.7/trunk/server/Changelog7.html
URL: http://svn.slimdevices.com/slim/7.7/trunk/server/Changelog7.html?rev=33873&r1=33872&r2=33873&view=diff
==============================================================================
--- 7.7/trunk/server/Changelog7.html (original)
+++ 7.7/trunk/server/Changelog7.html Tue Mar  6 07:24:17 2012
@@ -18,6 +18,7 @@
 		<li><a href="http://bugs.slimdevices.com/show_bug.cgi?id=17841">#17841</a> - directory traversal vulnerability in the web UI code</li>
 		<li><a href="http://bugs.slimdevices.com/show_bug.cgi?id=17852">#17852</a> - Support for new ReadyNAS Duo and NV+ V2 devices</li>
 		<li><a href="http://bugs.slimdevices.com/show_bug.cgi?id=17855">#17855</a> - Only enable single output channel mode if actively synced</li>
+		<li><a href="http://bugs.slimdevices.com/show_bug.cgi?id=17858">#17858</a> - Web UI shows red X instead of artwork for absolute URL in private network</li>
 		<li><a href="http://bugs.slimdevices.com/show_bug.cgi?id=17876">#17876</a> - Unnecessary items in context menu for current-playlist tracks</li>
 		<li><a href="http://bugs.slimdevices.com/show_bug.cgi?id=17877">#17877</a> - Resume after underrun broken for synchronized (ip3k) players</li>
 		<li><a href="http://bugs.slimdevices.com/show_bug.cgi?id=17881">#17881</a> - BMF scan corrupts dB replacing title with file name</li>

Modified: 7.7/trunk/server/HTML/EN/html/SqueezeJS/Base.js
URL: http://svn.slimdevices.com/slim/7.7/trunk/server/HTML/EN/html/SqueezeJS/Base.js?rev=33873&r1=33872&r2=33873&view=diff
==============================================================================
--- 7.7/trunk/server/HTML/EN/html/SqueezeJS/Base.js (original)
+++ 7.7/trunk/server/HTML/EN/html/SqueezeJS/Base.js Tue Mar  6 07:24:17 2012
@@ -759,8 +759,21 @@
 			if (result.playlist_loop[0].artwork_url) {
 				coverart = result.playlist_loop[0].artwork_url;
 
+				var publicURL = (coverart.search(/^http:/) != -1);
+				
+				if (publicURL) {
+					var parts = coverart.match(/^http:\/\/(.+)/);
+					
+					// don't use image proxy when dealing with private IP addresses
+					if (parts && parts[1].match(/^\d+/) && (
+						parts[1].match(/^192\.168/) || parts[1].match(/^172\.16\./) || parts[1].match(/^10\./)
+					)) {
+						publicURL = false;
+					}
+				}
+				
 				// SqueezeJS.externalImageProxy must be a template accepting url and size values
-				if (coverart && width && SqueezeJS.externalImageProxy && coverart.search(/^http:/) != -1) {
+				if (coverart && width && SqueezeJS.externalImageProxy && publicURL) {
 					coverart = SqueezeJS.externalImageProxy.apply({
 						url: encodeURIComponent(coverart),
 						size: width
@@ -768,7 +781,7 @@
 				}
 
 				// some internal logos come without resizing parameters - add them here if size is defined
-				else if (coverart && width && coverart.search(/^http:/) == -1) {
+				else if (coverart && width && !publicURL) {
 					coverart = coverart.replace(/(icon)(\.\w+)$/, "$1_" + width + 'x' + width + "_p$2");
 				}
 			}