Author: nextgens
Date: 2006-03-10 10:40:23 +0000 (Fri, 10 Mar 2006)
New Revision: 8208
Modified:
trunk/freenet/src/freenet/clients/http/ConfigToadlet.java
trunk/freenet/src/freenet/clients/http/FproxyToadlet.java
trunk/freenet/src/freenet/clients/http/PageMaker.java
trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
trunk/freenet/src/freenet/clients/http/StaticToadlet.java
trunk/freenet/src/freenet/clients/http/Toadlet.java
trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
trunk/freenet/src/freenet/clients/http/TrivialToadlet.java
trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
trunk/freenet/src/freenet/node/Version.java
trunk/freenet/src/freenet/pluginmanager/PproxyToadlet.java
Log:
515:
Now fproxy's CSS is a config. option insteed of a cookie.
The main asset is that it will work even on "non cookies enabled" browsers,
the caveat is that every users will have to share the same CSS :|
Modified: trunk/freenet/src/freenet/clients/http/ConfigToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ConfigToadlet.java 2006-03-10
00:33:25 UTC (rev 8207)
+++ trunk/freenet/src/freenet/clients/http/ConfigToadlet.java 2006-03-10
10:40:23 UTC (rev 8208)
@@ -21,8 +21,8 @@
private Config config;
private Node node;
- ConfigToadlet(HighLevelSimpleClient client, Node n, Config conf) {
- super(client);
+ ConfigToadlet(HighLevelSimpleClient client, Node n, Config conf, String
CSSName) {
+ super(client, CSSName);
config=conf;
node=n;
}
@@ -31,7 +31,7 @@
StringBuffer buf = new StringBuffer();
SubConfig[] sc = config.getConfigs();
- ctx.getPageMaker().makeHead(buf, "Freenet Node Configuration");
+ ctx.getPageMaker().makeHead(buf, "Freenet Node Configuration",
CSSName);
buf.append("<h1 class=\"title\">test</h1>\n");
buf.append("<div class=\"config\">\n");
buf.append(" <ul class=\"config\">\n");
Modified: trunk/freenet/src/freenet/clients/http/FproxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/FproxyToadlet.java 2006-03-10
00:33:25 UTC (rev 8207)
+++ trunk/freenet/src/freenet/clients/http/FproxyToadlet.java 2006-03-10
10:40:23 UTC (rev 8208)
@@ -19,17 +19,16 @@
import freenet.keys.FreenetURI;
import freenet.node.Node;
import freenet.node.RequestStarter;
+import freenet.pluginmanager.HTTPRequest;
import freenet.pluginmanager.PproxyToadlet;
-import freenet.pluginmanager.HTTPRequest;
-import freenet.support.Bucket;
import freenet.support.HTMLEncoder;
import freenet.support.Logger;
import freenet.support.MultiValueTable;
public class FproxyToadlet extends Toadlet {
- public FproxyToadlet(HighLevelSimpleClient client) {
- super(client);
+ public FproxyToadlet(HighLevelSimpleClient client, String CSSName) {
+ super(client, CSSName);
}
public String supportedMethods() {
@@ -41,6 +40,7 @@
//String ks = uri.toString();
String ks = uri.getPath();
+
if (ks.equals("/")) {
HTTPRequest httprequest = new HTTPRequest(uri);
if (httprequest.isParameterSet("key")) {
@@ -152,6 +152,24 @@
}
}
+ static class FproxyCSSNameCallback implements StringCallback {
+
+ final Node node;
+
+ FproxyCSSNameCallback(Node n) {
+ this.node = n;
+ }
+
+ public String get() {
+ return node.getFproxy().getCSSName();
+ }
+
+ public void set(String CSSName) throws
InvalidConfigValueException {
+ FproxyToadlet f = node.getFproxy();
+ f.setCSSName(CSSName);
+ }
+ }
+
public static void maybeCreateFproxyEtc(Node node, Config config)
throws IOException {
SubConfig fproxyConfig = new SubConfig("fproxy", config);
@@ -170,10 +188,13 @@
fproxyConfig.register("port", DEFAULT_FPROXY_PORT, 2, true,
"Fproxy port number", "Fproxy port number",
new FproxyPortCallback(node));
fproxyConfig.register("bindto", "127.0.0.1", 2, true, "IP
address to bind to", "IP address to bind to",
- new FproxyBindtoCallback(node));
+ new FproxyBindtoCallback(node));
+ fproxyConfig.register("css", "clean", 1, true, "CSS Name",
"Name of the CSS Fproxy should use",
+ new FproxyCSSNameCallback(node));
int port = fproxyConfig.getInt("port");
String bind_ip = fproxyConfig.getString("bindto");
+ String CSSName = fproxyConfig.getString("css");
System.out.println("Starting fproxy on port "+(port));
Logger.normal(node,"Starting fproxy on "+bind_ip+":"+port);
@@ -181,20 +202,20 @@
try {
SimpleToadletServer server = new
SimpleToadletServer(port, bind_ip);
node.setToadletContainer(server);
- FproxyToadlet fproxy = new
FproxyToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS));
+ FproxyToadlet fproxy = new
FproxyToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS),
CSSName);
node.setFproxy(fproxy);
server.register(fproxy, "/", false);
- PproxyToadlet pproxy = new
PproxyToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS),
node.pluginManager);
+ PproxyToadlet pproxy = new
PproxyToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS),
node.pluginManager, CSSName);
server.register(pproxy, "/plugins/", true);
- WelcomeToadlet welcometoadlet = new
WelcomeToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS),
node);
+ WelcomeToadlet welcometoadlet = new
WelcomeToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS),
node, CSSName);
server.register(welcometoadlet, "/welcome/", true);
- ConfigToadlet configtoadlet = new
ConfigToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS), node,
config);
+ ConfigToadlet configtoadlet = new
ConfigToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS), node,
config, CSSName);
server.register(configtoadlet, "/config/", true);
- StaticToadlet statictoadlet = new
StaticToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS));
+ StaticToadlet statictoadlet = new
StaticToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS),
CSSName);
server.register(statictoadlet, "/static/", true);
} catch (IOException ioe) {
Logger.error(node,"Failed to start fproxy on
"+bind_ip+":"+port);
@@ -202,7 +223,4 @@
fproxyConfig.finishedInitialization();
}
-
-
-
}
Modified: trunk/freenet/src/freenet/clients/http/PageMaker.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/PageMaker.java 2006-03-10
00:33:25 UTC (rev 8207)
+++ trunk/freenet/src/freenet/clients/http/PageMaker.java 2006-03-10
10:40:23 UTC (rev 8208)
@@ -18,6 +18,14 @@
}
}
+ public void setCSSName(String name){
+ if (name == null || !this.getThemes().contains(name)) {
+ this.theme = this.defaulttheme;
+ } else {
+ this.theme = name;
+ }
+ }
+
public void makeTopHead(StringBuffer buf) {
buf.append("<!DOCTYPE\n"
+ " html PUBLIC \"-//W3C//DTD XHTML
1.1//EN\">\n"
@@ -39,7 +47,8 @@
buf.append("<div id=\"content\">\n");
}
- public void makeHead(StringBuffer buf, String title) {
+ public void makeHead(StringBuffer buf, String title, String CSSName) {
+ setCSSName(CSSName);
makeTopHead(buf);
makeBottomHead(buf, title);
}
@@ -47,9 +56,6 @@
public void makeTail(StringBuffer buf) {
buf.append("<br style=\"clear: all;\"/>\n"
+ "</div>\n"
- + "<div id=\"themeselect\">\n");
- this.makeThemeSelect(buf);
- buf.append("</div>\n"
+"</div>\n"
+"</body>\n"
+ "</html>\n");
@@ -75,27 +81,4 @@
+ "</ul>\n"
+ "</div>\n");
}
-
- private void makeThemeSelect(StringBuffer buf) {
- Collection themes = this.getThemes();
-
- Iterator i = themes.iterator();
-
- buf.append("Theme: <ul>\n");
- String liclass = new String("");
- while (i.hasNext()) {
- String t = (String) i.next();
-
- if (t.equals(this.theme)) {
- liclass = "currentthemeitem";
- } else {
- liclass = "themeitem";
- }
- buf.append("<li class=\""+liclass+"\">\n"
- +"<a href=\"javascript:document.cookie
= 'theme="+t+"; expires=Mon, 04 Mar 2030 00:00:00 GMT;
path=/';window.location.reload(true)\" title=\""+t+" theme\">\n"
- + t+"</a>\n"
- + "</li>\n");
- }
- buf.append("</ul>\n");
- }
}
Modified: trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
2006-03-10 00:33:25 UTC (rev 8207)
+++ trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
2006-03-10 10:40:23 UTC (rev 8208)
@@ -20,7 +20,7 @@
import freenet.support.FileLoggerHook.IntervalParseException;
public class SimpleToadletServer implements ToadletContainer, Runnable {
-
+
public class ToadletElement {
public ToadletElement(Toadlet t2, String urlPrefix) {
t = t2;
@@ -35,10 +35,6 @@
private final ServerSocket sock;
private final LinkedList toadlets;
- public SimpleToadletServer(int i) throws IOException {
- this(i, "127.0.0.1");
- }
-
public SimpleToadletServer(int i, String newbindto) throws IOException {
this.port = i;
this.bindto = newbindto;
@@ -78,8 +74,8 @@
Logger.globalSetThreshold(Logger.MINOR);
Logger.globalAddHook(logger);
logger.start();
- SimpleToadletServer server = new SimpleToadletServer(1111);
- server.register(new TrivialToadlet(null), "", true);
+ SimpleToadletServer server = new SimpleToadletServer(1111,
"127.0.0.1");
+ server.register(new TrivialToadlet(null,null), "", true);
System.out.println("Bound to port 1111.");
while(true) {
try {
@@ -122,5 +118,4 @@
}
}
-
}
Modified: trunk/freenet/src/freenet/clients/http/StaticToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/StaticToadlet.java 2006-03-10
00:33:25 UTC (rev 8207)
+++ trunk/freenet/src/freenet/clients/http/StaticToadlet.java 2006-03-10
10:40:23 UTC (rev 8208)
@@ -13,8 +13,8 @@
* Serve up static files
*/
public class StaticToadlet extends Toadlet {
- StaticToadlet(HighLevelSimpleClient client) {
- super(client);
+ StaticToadlet(HighLevelSimpleClient client, String CSSName) {
+ super(client, CSSName);
}
final String rootURL = new String("/static/");
Modified: trunk/freenet/src/freenet/clients/http/Toadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/Toadlet.java 2006-03-10 00:33:25 UTC
(rev 8207)
+++ trunk/freenet/src/freenet/clients/http/Toadlet.java 2006-03-10 10:40:23 UTC
(rev 8208)
@@ -30,8 +30,9 @@
*/
public abstract class Toadlet {
- protected Toadlet(HighLevelSimpleClient client) {
+ protected Toadlet(HighLevelSimpleClient client, String CSSName) {
this.client = client;
+ this.CSSName = CSSName;
}
private final HighLevelSimpleClient client;
@@ -48,7 +49,7 @@
public void handleGet(URI uri, ToadletContext ctx) throws
ToadletContextClosedException, IOException, RedirectException {
StringBuffer buf = new StringBuffer();
- ctx.getPageMaker().makeHead(buf, "Not supported");
+ ctx.getPageMaker().makeHead(buf, "Not supported", CSSName);
buf.append("Operation not supported");
ctx.getPageMaker().makeTail(buf);
@@ -66,7 +67,7 @@
public void handlePut(URI uri, Bucket data, ToadletContext ctx) throws
ToadletContextClosedException, IOException, RedirectException {
StringBuffer buf = new StringBuffer();
- ctx.getPageMaker().makeHead(buf, "Not supported");
+ ctx.getPageMaker().makeHead(buf, "Not supported", CSSName);
buf.append("Operation not supported");
ctx.getPageMaker().makeTail(buf);
@@ -127,7 +128,7 @@
protected void sendErrorPage(ToadletContext ctx, int code, String desc,
String message) throws ToadletContextClosedException, IOException {
StringBuffer buf = new StringBuffer();
- ctx.getPageMaker().makeHead(buf, desc);
+ ctx.getPageMaker().makeHead(buf, desc, CSSName);
buf.append(message);
ctx.getPageMaker().makeTail(buf);
writeReply(ctx, code, "text/html", desc, buf.toString());
@@ -141,4 +142,13 @@
return client;
}
+ public String CSSName;
+
+ public void setCSSName(String name){
+ CSSName = name;
+ }
+
+ public String getCSSName(){
+ return CSSName;
+ }
}
Modified: trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
2006-03-10 00:33:25 UTC (rev 8207)
+++ trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
2006-03-10 10:40:23 UTC (rev 8208)
@@ -8,6 +8,7 @@
import java.net.URISyntaxException;
import java.util.Enumeration;
+import freenet.config.Config;
import freenet.support.Bucket;
import freenet.support.BucketTools;
import freenet.support.Logger;
@@ -30,6 +31,8 @@
private final MultiValueTable headers;
private final OutputStream sockOutputStream;
private final PageMaker pagemaker;
+ private String CSSName;
+
/** Is the context closed? If so, don't allow any more writes. This is
because there
* may be later requests.
*/
@@ -41,21 +44,7 @@
this.closed = false;
sockOutputStream = sock.getOutputStream();
- Enumeration cookieheaders = headers.getAll("Cookie");
- String current;
- String theme = new String("");
- while (cookieheaders.hasMoreElements()) {
- current = (String) cookieheaders.nextElement();
- String[] parts = current.split("=");
- if (parts.length == 2 && parts[0].equals("theme")) {
- theme = parts[1];
- }
- }
- if (theme.equals("")) {
- pagemaker = new PageMaker(null);
- } else {
- pagemaker = new PageMaker(theme);
- }
+ pagemaker = new PageMaker(CSSName);
}
private void close() {
@@ -295,5 +284,4 @@
if(closed) throw new ToadletContextClosedException();
BucketTools.copyTo(data, sockOutputStream, Long.MAX_VALUE);
}
-
}
Modified: trunk/freenet/src/freenet/clients/http/TrivialToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/TrivialToadlet.java 2006-03-10
00:33:25 UTC (rev 8207)
+++ trunk/freenet/src/freenet/clients/http/TrivialToadlet.java 2006-03-10
10:40:23 UTC (rev 8208)
@@ -9,8 +9,8 @@
public class TrivialToadlet extends Toadlet {
- TrivialToadlet(HighLevelSimpleClient client) {
- super(client);
+ TrivialToadlet(HighLevelSimpleClient client, String CSSName) {
+ super(client, CSSName);
}
public void handleGet(URI uri, ToadletContext ctx) throws
ToadletContextClosedException, IOException {
Modified: trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java 2006-03-10
00:33:25 UTC (rev 8207)
+++ trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java 2006-03-10
10:40:23 UTC (rev 8208)
@@ -14,16 +14,16 @@
public class WelcomeToadlet extends Toadlet {
Node node;
- WelcomeToadlet(HighLevelSimpleClient client, Node n) {
- super(client);
+ WelcomeToadlet(HighLevelSimpleClient client, Node n, String CSSName) {
+ super(client, CSSName);
this.node = n;
}
public void handleGet(URI uri, ToadletContext ctx) throws
ToadletContextClosedException, IOException {
StringBuffer buf = new StringBuffer();
- ctx.getPageMaker().makeHead(buf, "Freenet FProxy Homepage");
-
+ ctx.getPageMaker().makeHead(buf, "Freenet FProxy Homepage",
CSSName);
+
// Version info
buf.append("<div class=\"infobox\">\n");
buf.append("<h2>Version</h2>");
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-03-10 00:33:25 UTC (rev
8207)
+++ trunk/freenet/src/freenet/node/Version.java 2006-03-10 10:40:23 UTC (rev
8208)
@@ -20,7 +20,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 514;
+ private static final int buildNumber = 515;
/** Oldest build of Fred we will talk to */
private static final int lastGoodBuild = 507;
Modified: trunk/freenet/src/freenet/pluginmanager/PproxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PproxyToadlet.java 2006-03-10
00:33:25 UTC (rev 8207)
+++ trunk/freenet/src/freenet/pluginmanager/PproxyToadlet.java 2006-03-10
10:40:23 UTC (rev 8208)
@@ -17,8 +17,8 @@
public class PproxyToadlet extends Toadlet {
private PluginManager pm = null;
- public PproxyToadlet(HighLevelSimpleClient client, PluginManager pm) {
- super(client);
+ public PproxyToadlet(HighLevelSimpleClient client, PluginManager pm,
String CSSName) {
+ super(client, CSSName);
this.pm = pm;
}
@@ -91,7 +91,7 @@
private void showPluginList(ToadletContext ctx, HTTPRequest request)
throws ToadletContextClosedException, IOException {
if (!request.hasParameters()) {
StringBuffer out = new StringBuffer();
- ctx.getPageMaker().makeHead(out, "Plugin List");
+ ctx.getPageMaker().makeHead(out, "Plugin List",
CSSName);
out.append("<table style=\"border: 1pt solid
#c0c0c0;\">");
out.append(" <tr>\n");
out.append(" <th>Name</th>\n");