Package freenet.clients.http

Source Code of freenet.clients.http.StartupToadlet

package freenet.clients.http;

import java.io.IOException;
import java.net.URI;

import freenet.clients.http.PageMaker.RenderParameters;
import freenet.l10n.NodeL10n;
import freenet.support.HTMLNode;
import freenet.support.api.HTTPRequest;

/**
* Toadlet for "Freenet is starting up" page.
*/
public class StartupToadlet extends Toadlet {

  private StaticToadlet staticToadlet;
  private volatile boolean isPRNGReady = false;

  public StartupToadlet(StaticToadlet staticToadlet) {
    super(null);
    this.staticToadlet = staticToadlet;
  }

  public void handleMethodGET(URI uri, HTTPRequest req, ToadletContext ctx) throws ToadletContextClosedException, IOException, RedirectException {
    // If we don't disconnect we will have pipelining issues
    ctx.forceDisconnect();

    String path = uri.getPath();
    if(path.startsWith(StaticToadlet.ROOT_URL) && staticToadlet != null)
      staticToadlet.handleMethodGET(uri, req, ctx);
    else {
      String desc = NodeL10n.getBase().getString("StartupToadlet.title");
      PageNode page = ctx.getPageMaker().getPageNode(desc, ctx, new RenderParameters().renderStatus(false).renderNavigationLinks(false).renderModeSwitch(false));
      HTMLNode pageNode = page.outer;
      HTMLNode headNode = page.headNode;
      headNode.addChild("meta", new String[]{"http-equiv", "content"}, new String[]{"refresh", "20; url="});
      HTMLNode contentNode = page.content;

      if(!isPRNGReady) {
        HTMLNode prngInfoboxContent = ctx.getPageMaker().getInfobox("infobox-error", NodeL10n.getBase().getString("StartupToadlet.entropyErrorTitle"), contentNode, null, true);
        prngInfoboxContent.addChild("#", NodeL10n.getBase().getString("StartupToadlet.entropyErrorContent"));
      }

      HTMLNode infoboxContent = ctx.getPageMaker().getInfobox("infobox-error", desc, contentNode, null, true);
      infoboxContent.addChild("#", NodeL10n.getBase().getString("StartupToadlet.isStartingUp"));

      WelcomeToadlet.maybeDisplayWrapperLogfile(ctx, contentNode);

      //TODO: send a Retry-After header ?
      writeHTMLReply(ctx, 503, desc, pageNode.generate());
    }
  }

  public void setIsPRNGReady() {
    isPRNGReady = true;
  }

  @Override
  public String path() {
    return "/";
  }
}
TOP

Related Classes of freenet.clients.http.StartupToadlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.