package freenet.clients.http.wizardsteps;
import freenet.clients.http.FirstTimeWizardToadlet;
import freenet.config.Config;
import freenet.config.ConfigException;
import freenet.l10n.NodeL10n;
import freenet.node.NodeClientCore;
import freenet.support.HTMLNode;
import freenet.support.Logger;
import freenet.support.api.HTTPRequest;
/**
* Allows the user to choose whether to enable auto-updating, and what official utility plugins to install.
*/
public class MISC implements Step {
private final Config config;
private final NodeClientCore core;
public MISC(NodeClientCore core, Config config) {
this.core = core;
this.config = config;
}
@Override
public void getStep(HTTPRequest request, PageHelper helper) {
HTMLNode contentNode = helper.getPageContent(WizardL10n.l10n("stepMiscTitle"));
HTMLNode form = helper.addFormChild(contentNode, ".", "miscForm");
HTMLNode miscInfoboxContent = helper.getInfobox("infobox-normal", WizardL10n.l10n("autoUpdate"),
form, null, false);
miscInfoboxContent.addChild("p", WizardL10n.l10n("autoUpdateLong"));
miscInfoboxContent.addChild("p").addChild("input",
new String[] { "type", "checked", "name", "value" },
new String[] { "radio", "on", "autodeploy", "true" }, WizardL10n.l10n("autoUpdateAutodeploy"));
miscInfoboxContent.addChild("p").addChild("input",
new String[] { "type", "name", "value" },
new String[] { "radio", "autodeploy", "false" }, WizardL10n.l10n("autoUpdateNoAutodeploy"));
miscInfoboxContent = helper.getInfobox("infobox-normal", WizardL10n.l10n("plugins"),
form, null, false);
miscInfoboxContent.addChild("p", WizardL10n.l10n("pluginsLong"));
miscInfoboxContent.addChild("p").addChild("input",
new String[] { "type", "checked", "name", "value" },
new String[] { "checkbox", "on", "upnp", "true" }, WizardL10n.l10n("enableUPnP"));
miscInfoboxContent.addChild("input",
new String[] { "type", "name", "value" },
new String[] { "submit", "back", NodeL10n.getBase().getString("Toadlet.back")});
miscInfoboxContent.addChild("input",
new String[] { "type", "name", "value" },
new String[] { "submit", "next", NodeL10n.getBase().getString("Toadlet.next")});
}
@Override
public String postStep(HTTPRequest request) {
setAutoUpdate(Boolean.parseBoolean(request.getPartAsStringFailsafe("autodeploy", 10)));
setUPnP(request.isPartSet("upnp"));
return FirstTimeWizardToadlet.WIZARD_STEP.OPENNET.name();
}
/**
* Sets whether auto-update should be enabled.
* @param enabled whether auto-update should be enabled.
*/
public void setAutoUpdate(boolean enabled) {
try {
config.get("node.updater").set("autoupdate", enabled);
} catch (ConfigException e) {
Logger.error(this, "Should not happen, please report!" + e, e);
}
}
/**
* Enables or disables the UPnP plugin asynchronously. If the plugin's state would not change for the given
* argument, it does nothing.
* @param enableUPnP whether UPnP should be enabled.
*/
public void setUPnP(final boolean enableUPnP) {
//If its state would not change, don't do anything.
if(enableUPnP == core.node.pluginManager.isPluginLoaded("plugins.UPnP.UPnP")) {
return;
}
core.node.executor.execute(new Runnable() {
private final boolean enable = enableUPnP;
@Override
public void run() {
if(enable) {
core.node.pluginManager.startPluginOfficial("UPnP", true, false, false);
} else {
core.node.pluginManager.killPluginByClass("plugins.UPnP.UPnP", 5000);
}
}
});
}
}