[freenet-cvs] r11159 - trunk/freenet/src/freenet/clients/http

toad at freenetproject.org toad at freenetproject.org
Fri Dec 1 01:23:31 UTC 2006


Author: toad
Date: 2006-12-01 01:23:30 +0000 (Fri, 01 Dec 2006)
New Revision: 11159

Modified:
   trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
Log:
Proper RSS warning. Also fix infinite loop.

Modified: trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/FProxyToadlet.java	2006-12-01 00:40:55 UTC (rev 11158)
+++ trunk/freenet/src/freenet/clients/http/FProxyToadlet.java	2006-12-01 01:23:30 UTC (rev 11159)
@@ -103,7 +103,41 @@
 			}
 			
 			if(!forceDownload) {
-				forceDownload = horribleEvilHack(data);
+				if(horribleEvilHack(data) && !(mimeType.startsWith("application/rss+xml"))) {
+					HTMLNode pageNode = context.getPageMaker().getPageNode("Potentially Dangerous Content (RSS)");
+					HTMLNode contentNode = context.getPageMaker().getContentNode(pageNode);
+					
+					HTMLNode infobox = contentNode.addChild("div", "class", "infobox infobox-alert");
+					infobox.addChild("div", "class", "infobox-header", "RSS feed may be dangerous");
+					HTMLNode infoboxContent = infobox.addChild("div", "class", "infobox-content");
+					infoboxContent.addChild("#", "Freenet has detected that the file you are trying to fetch might be RSS. "+
+							"RSS cannot be properly filtered by Freenet, and may contain web-bugs (inline images etc which may "+
+							"expose your IP address to a malicious site author and therefore break your anonymity). "+
+							"Firefox 2.0 and Internet Explorer 7.0 will open the file as RSS even though its content type is \""+HTMLEncoder.encode(mimeType)+"\".");
+					infoboxContent.addChild("p", "Your options are:");
+					HTMLNode optionList = infoboxContent.addChild("ul");
+					HTMLNode option = optionList.addChild("li");
+					
+					option.addChild("a", "href", basePath + key.toString(false) + "?type=text/plain&force=" + getForceValue(key, now)+extras, "Click here");
+					option.addChild("#", " to open the file as plain text (this <b>may be dangerous</b> if you are running IE7 or FF2).");
+					// 	FIXME: is this safe? See bug #131
+					option = optionList.addChild("li");
+					option.addChild("a", "href", basePath + key.toString(false) + "?forcedownload"+extras, "Click here");
+					option.addChild("#", " to force your browser to download the file to disk.");
+					if(!mimeType.startsWith("text/plain")) {
+						option = optionList.addChild("li");
+						option.addChild("a", "href", basePath + key.toString(false) + "?force=" + getForceValue(key, now)+extras, "Click here");
+						option.addChild("#", " to open the file as " + mimeType + '.');
+					}
+					option = optionList.addChild("li");
+					option.addChild("a", "href", "/", "Click here");
+					option.addChild("#", " to go to the FProxy home page.");
+					
+					byte[] pageBytes = pageNode.generate().getBytes();
+					context.sendReplyHeaders(200, "OK", new MultiValueTable(), "text/html; charset=utf-8", pageBytes.length);
+					context.writeData(pageBytes);
+					return;
+				}
 			}
 			
 			if (forceDownload) {
@@ -187,7 +221,8 @@
 				if(bufProgress == find.length()) return true;
 			} else {
 				bufProgress = 0;
-				continue; // check if this byte is equal to the first one
+				if(bufProgress != 0)
+					continue; // check if this byte is equal to the first one
 			}
 			offset++;
 		}




More information about the cvs mailing list