public void multicastConfig() throws Exception {
		if (this.subconfig.equals("/multicast")
				|| this.subconfig.equals("/multicast/")) {

			this.requestThread.httpStatus(200, "OK");
			this.requestThread.httpAuth("p300");
			this.requestThread.httpContents();

			Layouter layouter = new Layouter(this.requestThread);
			layouter.replaceTitle("Discovery of other p300 nodes");
			layouter.replaceBasicStuff();
			this.requestThread.write(layouter.getBeforeMainDiv());

			this.requestThread.write("<p><ul>");
			this.requestThread
					.write("<li>Discovery of other hosts should happen automatically</li>");
			if (!Configuration.instance().isLocalNetworkIpsImplcitlyAllowed()) {
				this.requestThread
						.write("<li>You need to <a href='/config/allowedHosts'>allow</a> the IPs that should be able to connect to you</li>");
			}
			this.requestThread.write("<li>Only IPv4 will be used</li>");

			this.requestThread
					.write("<li>The network device needs to have multicast enabled on the OS</li>");
			this.requestThread
					.write("<li>Make sure port 4337 incoming TCP/UDP is allowed in your firewall</li>");
			this.requestThread
					.write("<li>The multicast route has to be set on some OS</li>");

			this.requestThread
					.write("<li>If host discovery does not work because of local firewalls or broken VPN software, use ");
			this.requestThread
					.write("<a href=\"/config/multicast/http\">manual discovery</a></li>");

			this.requestThread.write("</ul></p>");

			this.requestThread.write(layouter.getAfterMainDiv());

			this.requestThread.flush();
			this.requestThread.close();

		} else if (this.subconfig.equals("/multicast/http")) {
			this.requestThread.httpStatus(200, "OK");
			this.requestThread.httpAuth("p300");
			this.requestThread.httpContents();

			Layouter layouter = new Layouter(this.requestThread);
			layouter.replaceTitle("Multicast configuration");
			layouter.replaceBasicStuff();
			this.requestThread.write(layouter.getBeforeMainDiv());

			this.requestThread.write("<p>");

			this.requestThread.write("<h2>Multicast over HTTP</h2>");

			// HTTPMulticastHost hosts[] = MainDialog.hostFinderThread
			// .getWorkingHosts();
			// this.printHTTPMulticastHosts("Working hosts", hosts);
			// hosts = MainDialog.hostFinderThread.getNonWorkingHosts();
			// this.printHTTPMulticastHosts("Nonworking hosts", hosts);

			this.requestThread.write("<ul>");
			this.requestThread
					.write("<li>Add a IP:Port combination or http:// URL of a host on your network that is already running p300");

			this.requestThread
					.write("<form action='/config/multicast/http' method='GET' accept-charset='UTF-8'>");
			this.requestThread
					.write("<input type='text' name='hostip' size='22' value=''>");
			this.requestThread
					.write("<input type='submit' name='submit' value='Add'></td>");
			writeAuthKeyFormField(this.requestThread);
			this.requestThread
			.write("</form>");

			this.requestThread.write("</li>");
			this.requestThread.write("</ul>");

			this.requestThread.write("</p>");

			this.requestThread.write(layouter.getAfterMainDiv());

			this.requestThread.flush();
			this.requestThread.close();
			return;

		} else if (this.subconfig.startsWith("/multicast/http?")) {
			String hostip = URL.extractParameter(this.subconfig, "hostip");
			// if (hostip == null)
			// hostip = "";
			// conf.setUserStyleSheet(stylesheet);

			if (hostip != null) {
				new AddHostAction(hostip).actionPerformed(new ActionEvent(this,
						0, null));
				// give ourselves some time so we can immediatly let the user
				// see the results
				Thread.sleep(1500);
			}

			this.requestThread.close(302, "OK", "/config/multicast/http");
			// give ourselves some time so we can immediatly let the user
			// see the results
			Thread.sleep(1500);
		}
	}