/** * Returns a Hashtable of all POST parts up to a length of 1024*1024 characters. * @param request contains POST parts * @return set a Hashtable of all POST parts. */ private Hashtable<String, String> readPOST (HTTPRequest request) { Hashtable<String, String> set = new Hashtable<String, String>(); for (String key : request.getParts()) { set.put(key, request.getPartAsStringFailsafe(key, MAX_POST_SIZE)); } return set; }
public void handleMethodPOST(URI uri, HTTPRequest request, ToadletContext ctx) throws ToadletContextClosedException, IOException { String url = request.getPartAsStringFailsafe(magicHTTPEscapeString, MAX_URL_LENGTH); MultiValueTable<String, String> headers = new MultiValueTable<String, String>(); //If the user clicked cancel, or the URL is not defined, return to the main page. //TODO: This will mean the beginning of the first time wizard if it's still in progress. //TODO: Is it worth it to fix that? if (request.getPartAsStringFailsafe("Go", 32).isEmpty() || url.isEmpty()) { url = WelcomeToadlet.PATH; } headers.put("Location", url); ctx.sendReplyHeaders(302, "Found", headers, null, 0); }
/** * Validates whether the request contains a formPassword which matches {@link NodeClientCore#formPassword}. See the JavaDoc there for an explanation * of the purpose of this mechanism. * * <p><b>ATTENTION</b>: It is critically important to use this function when processing requests which "change the server state". Other words for this * would be requests which change your database or "write" requests. * Requests which only read values from the server don't have to validate the form password.</p> * * <p>To produce a form which already contains the password, use {@link PluginRespirator#addFormChild(freenet.support.HTMLNode, String, String)}.</p> * * @return true if the form password is valid */ protected boolean isFormPassword(HTTPRequest req) { String passwd = req.getParam("formPassword", null); if (passwd == null) passwd = req.getPartAsStringFailsafe("formPassword", 32); return (passwd != null) && passwd.equals(pluginContext.clientCore.formPassword); }
@Override public boolean hasFormPassword(HTTPRequest request) throws IOException { String pass = request.getPartAsStringFailsafe("formPassword", 32); byte[] inputBytes = pass.getBytes("UTF-8"); byte[] compareBytes = getFormPassword().getBytes("UTF-8"); if(!MessageDigest.isEqual(inputBytes, compareBytes)) { if (logMINOR) Logger.minor(this, "Bad formPassword: " + pass); return false; } else return true; }
@Override public String postStep(HTTPRequest request) { // drop down options may be 6 chars or less, but formatted ones e.g. old value if re-running can be more _setDatastoreSize(request.getPartAsStringFailsafe("ds", 20)); return FirstTimeWizardToadlet.WIZARD_STEP.BANDWIDTH.name(); }
private FilterOperation getFilterOperation(HTTPRequest request) throws BadRequestException { String s = request.getPartAsStringFailsafe("filter-operation", 100); try { return FilterOperation.valueOf(s); } catch (IllegalArgumentException e) { throw new BadRequestException("filter-operation", e); } }
private ResultHandling getResultHandling(HTTPRequest request) throws BadRequestException { String s = request.getPartAsStringFailsafe("result-handling", 100); try { return ResultHandling.valueOf(s); } catch (IllegalArgumentException e) { throw new BadRequestException("result-handling", e); } }
private void handleChangePriority(HTTPRequest request, ToadletContext ctx, String suffix) throws ToadletContextClosedException, IOException { short newPriority = Short.parseShort(request.getPartAsStringFailsafe("priority"+suffix, 32)); String identifier = ""; for(String part : request.getParts()) { if(!part.startsWith("identifier-")) continue; identifier = part.substring("identifier-".length()); if(identifier.length() > 50) continue; identifier = request.getPartAsStringFailsafe(part, MAX_IDENTIFIER_LENGTH); try { fcp.modifyGlobalRequestBlocking(identifier, null, newPriority); } catch (PersistenceDisabledException e) { sendPersistenceDisabledError(ctx); return; } } writePermanentRedirect(ctx, "Done", path()); }
/** * Doesn't make any changes, just passes result on to SECURITY_NETWORK. * @param request Checked for "opennet" value. */ @Override public String postStep(HTTPRequest request) { if (request.isPartSet("opennet")) { return FirstTimeWizardToadlet.WIZARD_STEP.SECURITY_NETWORK+"&opennet="+ request.getPartAsStringFailsafe("opennet", 5); } else { //Nothing selected when "next" clicked. Display choice again. return FirstTimeWizardToadlet.WIZARD_STEP.OPENNET.name(); } } }
private boolean parseOpennet(HTTPRequest request) { String opennetRaw; if (request.hasParameters()) { opennetRaw = request.getParam("opennet", "false"); } else { opennetRaw = request.getPartAsStringFailsafe("opennet", 5); } return Fields.stringToBool(opennetRaw, false); }
@Override public String postStep(HTTPRequest request) { setAutoUpdate(Boolean.parseBoolean(request.getPartAsStringFailsafe("autodeploy", 10))); setUPnP(request.isPartSet("upnp")); return FirstTimeWizardToadlet.WIZARD_STEP.OPENNET.name(); }
private FirstTimeWizardToadlet.WIZARD_PRESET parsePreset(HTTPRequest request) { String presetRaw; FirstTimeWizardToadlet.WIZARD_PRESET preset; if (request.hasParameters()) { presetRaw = request.getParam("preset"); } else { presetRaw = request.getPartAsStringFailsafe("preset", 4); } try { preset = FirstTimeWizardToadlet.WIZARD_PRESET.valueOf(presetRaw); } catch (IllegalArgumentException e) { preset = null; } return preset; }
@Override public String postStep(HTTPRequest request) { String limitSelected = request.getPartAsStringFailsafe("bandwidth", 100); String down = request.getPartAsStringFailsafe("customDown", 20); String up = request.getPartAsStringFailsafe("customUp", 20);
public void handleMethodPOST (URI uri, HTTPRequest request, final ToadletContext ctx) throws ToadletContextClosedException, IOException, RedirectException { renderPage(persistenceFields(readPOST(request)), request.getPartAsStringFailsafe("path", MAX_POST_SIZE), ctx, selectedValue(request)); }
@Override public String postStep(HTTPRequest request) { //The user changed their language on the welcome page. Change the language and re-render the page. //Presets are handled within FirstTimeWizardToadlet because it can access all steps. String desiredLanguage = request.getPartAsStringFailsafe("l10n", 4096); try { config.get("node").set("l10n", desiredLanguage); } catch (freenet.config.InvalidConfigValueException e) { Logger.error(this, "Failed to set language to " + desiredLanguage + ". " + e); } catch (freenet.config.NodeNeedRestartException e) { //Changing language doesn't require a restart, at least as of version 1385. //Doing so would be really annoying as the node would have to start up again //which could be very slow. } return FirstTimeWizardToadlet.WIZARD_STEP.WELCOME.name(); }
@Override public String postStep(HTTPRequest request) { String selectedNName = request.getPartAsStringFailsafe("nname", 128); //Prompt again when provided with a blank node name. if (selectedNName.isEmpty()) { return FirstTimeWizardToadlet.WIZARD_STEP.NAME_SELECTION.name(); } try { config.get("node").set("name", selectedNName); Logger.normal(this, "The node name has been set to " + selectedNName); } catch (ConfigException e) { Logger.error(this, "Should not happen, please report!" + e, e); } return FirstTimeWizardToadlet.WIZARD_STEP.DATASTORE_SIZE.name(); } }
final String translateFor = request.getPartAsStringFailsafe("translating_for", 255); if(request.getPartAsStringFailsafe("translation_update", 32).length() > 0){ String key = request.getPartAsStringFailsafe("key", 256); this.base.setOverride(key, new String(BucketTools.toByteArray(request.getPart("trans")), "UTF-8").trim()); if("on".equalsIgnoreCase(request.getPartAsStringFailsafe("gotoNext", 7))) { KeyIterator it = base.getDefaultLanguageTranslation().keyIterator(""); } else if(request.getPartAsStringFailsafe("remove_confirmed", 32).length() > 0) { String key = request.getPartAsStringFailsafe("remove_confirm", 256).trim(); this.base.setOverride(key, "");
private String selectedValue(HTTPRequest request) { if (request.isParameterSet(filenameField()) && (request.isParameterSet(selectDir) || request.isParameterSet(selectFile))) { //Request is a GET. return request.getParam(filenameField()); } else if (request.isPartSet(filenameField()) && (request.isPartSet(selectDir) || request.isPartSet(selectFile))) { //Request is a POST. return request.getPartAsStringFailsafe(filenameField(), MAX_POST_SIZE); } return null; }
@Override public String postStep(HTTPRequest request) { String networkThreatLevel = request.getPartAsStringFailsafe("security-levels.networkThreatLevel", 128); SecurityLevels.NETWORK_THREAT_LEVEL newThreatLevel = SecurityLevels.parseNetworkThreatLevel(networkThreatLevel);
FilterOperation filterOperation = getFilterOperation(request); ResultHandling resultHandling = getResultHandling(request); String mimeType = request.getPartAsStringFailsafe("mime-type", 100); MultiValueTable<String, String> responseHeaders = new MultiValueTable<String, String>(); responseHeaders.put("Location", LocalFileFilterToadlet.PATH