yacy_search_server/htroot/WatchWebStructure_p.java
lotus 029e16b653 replaced some put(String, String) by putHTML(String, String) on serverObjects respond
in htroot/ root
didn't touch htroot/xml/
this should solve potential xss issues

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@5184 6c8d7289-2bf4-0310-a012-ef5d649a1542
2008-09-19 11:45:11 +00:00

67 lines
2.6 KiB
Java

import java.util.Iterator;
import de.anomic.crawler.CrawlProfile.entry;
import de.anomic.http.httpRequestHeader;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.plasmaWordIndex;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
public class WatchWebStructure_p {
public static serverObjects respond(final httpRequestHeader header, final serverObjects post, final serverSwitch<?> env) {
final plasmaSwitchboard sb = (plasmaSwitchboard) env;
final serverObjects prop = new serverObjects();
int width = 768;
int height = 576;
int depth = 3;
int nodes = 500; // maximum number of host nodes that are painted
int time = -1;
String host = "auto";
if (post != null) {
width = post.getInt("width", 768);
height = post.getInt("height", 576);
depth = post.getInt("depth", 3);
nodes = post.getInt("nodes", width * height * 100 / 768 / 576);
time = post.getInt("time", -1);
host = post.get("host", "auto");
}
if (host.equals("auto")) {
// try to find the host from the crawl profiles
final Iterator<entry> it = sb.webIndex.profilesActiveCrawls.profiles(true);
entry e;
while (it.hasNext()) {
e = it.next();
if (e.name().equals(plasmaWordIndex.CRAWL_PROFILE_PROXY) ||
e.name().equals(plasmaWordIndex.CRAWL_PROFILE_REMOTE) ||
e.name().equals(plasmaWordIndex.CRAWL_PROFILE_SNIPPET_LOCAL_TEXT) ||
e.name().equals(plasmaWordIndex.CRAWL_PROFILE_SNIPPET_GLOBAL_TEXT) ||
e.name().equals(plasmaWordIndex.CRAWL_PROFILE_SNIPPET_LOCAL_MEDIA) ||
e.name().equals(plasmaWordIndex.CRAWL_PROFILE_SNIPPET_GLOBAL_MEDIA))
continue;
host = e.name();
break; // take the first one
}
}
prop.putHTML("host", host);
prop.put("depth", depth);
prop.put("depthi", Math.min(8, depth + 1));
prop.put("depthd", Math.max(0, depth - 1));
prop.put("nodes", nodes);
prop.put("nodesi", Math.min(1000, nodes + 100));
prop.put("nodesd", Math.max(100, nodes - 100));
prop.put("time", time);
prop.put("timei", (time > 9000) ? -1 : ((time < 0) ? -1 : Math.min(9999, time + 1000)));
prop.put("timed", (time < 0) ? 9000 : Math.max(1000, time - 1000));
prop.put("width", width);
prop.put("height", height);
return prop;
}
}