📄 configdialog.java
字号:
if (defaultServerNameH != null && (index = defaultServerNameH.lastIndexOf(":")) != -1) { if ((0 == index) || (index == defaultServerNameH.length())) { throw new IllegalArgumentException("Bad HTTP server name. Cannot proceed."); } defaultServerPortH = defaultServerNameH.substring(index + 1); defaultServerNameH = defaultServerNameH.substring(0, index); } else { defaultServerNameH = ""; defaultServerPortH = "9700"; } noPublicAddressesH = httpAdv.getPublicAddressOnly(); } catch (Exception failure) { throw new ConfiguratorException("Broken Platform Config. Cannot proceed.", failure); } // Rendezvous Settings boolean isRendezvous = false; boolean onlySeeds = false; List seedRdvs = new ArrayList(); List seedingRdvs = new ArrayList(); try { RdvConfigAdv rdvConfigAdv = null; param = (XMLElement) configAdv.getServiceParam(PeerGroup.rendezvousClassID); // XXX 20041027 backwards compatibility param.addAttribute("type", RdvConfigAdv.getAdvertisementType()); rdvConfigAdv = (RdvConfigAdv) AdvertisementFactory.newAdvertisement(param); isRendezvous = (RendezVousConfiguration.RENDEZVOUS == rdvConfigAdv.getConfiguration()); onlySeeds = rdvConfigAdv.getUseOnlySeeds(); Iterator eachRdv = Arrays.asList(rdvConfigAdv.getSeedRendezvous()).iterator(); while (eachRdv.hasNext()) { seedRdvs.add(eachRdv.next().toString()); } eachRdv = Arrays.asList(rdvConfigAdv.getSeedingURIs()).iterator(); while (eachRdv.hasNext()) { seedingRdvs.add(eachRdv.next().toString()); } } catch (Exception failure) { throw new ConfiguratorException("Broken Platform Config. Cannot proceed.", failure); } // Relay Settings boolean isRelay = false; boolean useRelay = false; boolean useOnlySeedRelays = false; List seedRelays = new ArrayList(); List seedingRelays = new ArrayList(); try { param = (XMLElement) configAdv.getServiceParam(PeerGroup.relayProtoClassID); // XXX bondolo 20041027 for backwards compatibility. param.addAttribute("type", RelayConfigAdv.getAdvertisementType()); RelayConfigAdv relayConfig = (RelayConfigAdv) AdvertisementFactory.newAdvertisement(param); isRelay = relayConfig.isServerEnabled(); useRelay = relayConfig.isClientEnabled(); useOnlySeedRelays = relayConfig.getUseOnlySeeds(); Iterator eachRelay = Arrays.asList(relayConfig.getSeedRelays()).iterator(); while (eachRelay.hasNext()) { seedRelays.add(eachRelay.next().toString()); } eachRelay = Arrays.asList(relayConfig.getSeedingURIs()).iterator(); while (eachRelay.hasNext()) { seedingRelays.add(eachRelay.next().toString()); } } catch (Exception failure) { throw new ConfiguratorException("Broken Platform Config. Cannot proceed.", failure); } // BEGIN BUILDING UI GridBagLayout layout = new GridBagLayout(); setLayout(layout); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { beCanceled(); } }); helpLabel = new Label("See \"http://platform.jxta.org/java/confighelp.html\" for config help", Label.CENTER); helpLabel.setBackground(new Color(220, 220, 220)); helpLabel.setForeground(Color.black); helpLabel.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { helpLabel.setForeground(Color.black); helpLabel.setText("See \"http://platform.jxta.org/java/confighelp.html\" for config help"); } }); idPanel = new IdPanel(peerName, needSecurityConfig); debugPanel = new DebugPanel(dftDebugLevel); enablingPanel = new EnablingPanel(isRelay, isRendezvous, isJxmeProxy); tcpPanel = new IPTptPanel(IPTptPanel.TYPE_TCP, tcpEnabled, "TCP Settings", defaultInterfaceAddressT, defaultPortT, clientDefaultT, serverDefaultT, defaultServerNameT, defaultServerPortT, noPublicAddressesT, multicastEnabledT); httpPanel = new IPTptPanel(IPTptPanel.TYPE_HTTP, httpEnabled, "HTTP Settings", defaultInterfaceAddressH, defaultPortH, clientDefaultH, serverDefaultH, defaultServerNameH, defaultServerPortH, noPublicAddressesH); rdvPanel = new RdvPanel(onlySeeds); // add the relays Iterator rdvs = seedRdvs.iterator(); while (rdvs.hasNext()) { rdvPanel.seeds.addItem((String) rdvs.next()); } rdvs = seedingRdvs.iterator(); while (rdvs.hasNext()) { rdvPanel.seeding.addItem((String) rdvs.next()); } relayPanel = new RelayPanel(useRelay, useOnlySeedRelays); // add the relays Iterator relays = seedRelays.iterator(); while (relays.hasNext()) { relayPanel.seeds.addItem((String) relays.next()); } relays = seedingRelays.iterator(); while (relays.hasNext()) { relayPanel.seeding.addItem((String) relays.next()); } ok = new Button(" OK "); ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (verifyInput()) { if (saveValues()) { beDone(); } else { beCanceled(); } } } }); cancel = new Button("Cancel"); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { beCanceled(); } }); Panel okPanel = new Panel(); okPanel.add(ok); okPanel.add(cancel); // build basic panel Panel basicsPanel = pages.addPage("Basic", "Basic settings"); GridBagConstraints centerWConstr = (GridBagConstraints) centerConstr.clone(); centerWConstr.weighty = 1; basicsPanel.add(idPanel, centerWConstr); // build Advanced panel Panel advancedPanel = pages.addPage("Advanced", "Experienced Users Only"); advancedPanel.add(debugPanel, fillInsetConstr); advancedPanel.add(enablingPanel, fillInsetConstr); advancedPanel.add(tcpPanel, fillInsetConstr); advancedPanel.add(httpPanel, fillInsetConstr); Panel proxyRdvRelayPanel = pages.addPage("Rendezvous/Relays", "Experienced Users Only"); proxyRdvRelayPanel.add(rdvPanel, fillInsetConstr); proxyRdvRelayPanel.add(relayPanel, fillInsetConstr); add(helpLabel, fillConstr); add(pages, fillInsetConstr); add(okPanel, centerLastConstr); pack(); setVisible(true); } public synchronized boolean untilDone() { try { while (!done) { wait(); } } catch (InterruptedException e) { Thread.interrupted(); } if (canceled) { throw new JxtaError("Canceled during configuration"); } return (done); } private synchronized boolean beDone() { done = true; notify(); dispose(); return canceled; } private synchronized boolean beCanceled() { canceled = true; done = true; notify(); dispose(); return canceled; } private boolean verifyPort(String portName, String ports, boolean dynamicok) { int p1; if ((null == ports) || (0 == ports.trim().length())) { ports = "0"; } try { p1 = Integer.parseInt(ports); } catch (Exception ex) { helpLabel.setForeground(Color.red.darker()); helpLabel.setText(portName + " port number must be an integer: " + ports); return false; } if ((p1 > 65535) || (p1 < (dynamicok ? 0 : 1))) { helpLabel.setForeground(Color.red.darker()); helpLabel.setText(portName + " port number must be an integer between " + (dynamicok ? "0" : "1") + " and 65535, found " + p1); return false; } return true; } private boolean verifyAddr(String proto, boolean serverOn, String localAddress, String localPort, String publicAddress, String publicPort) { // if a public name is specified, check its port. if (serverOn && (publicAddress.length() > 0)) { if (!verifyPort(proto + " local", localPort, false)) { helpLabel.setForeground(Color.red.darker()); helpLabel.setText("Dynamic tcp port selection not supported when server public address is specified."); pages.showPage("Advanced"); return false; } if (!verifyPort(proto + " public", publicPort, false)) { pages.showPage("Advanced"); helpLabel.setForeground(Color.red.darker()); helpLabel.setText("Dynamic tcp port selection not supported for server public address."); return false; } } else if (!verifyPort(proto + " local", localPort, true)) { pages.showPage("Advanced"); return false; } return true; } private boolean verifyInput() { if (0 == idPanel.getName().trim().length()) { helpLabel.setForeground(Color.red.darker()); helpLabel.setText("A peer name is required."); pages.showPage("Basic"); return false; } // Verify security parameters if we are not initialized // Password and principal if (null != idPanel.passwd) { String passwd = idPanel.getPassword(); String vpasswd = idPanel.getVerifyPassword(); // Verify password // must be at least 8 chars a la unix if (passwd.length() < 8) { // Clear password text boxes idPanel.clearPasswords(); helpLabel.setForeground(Color.red.darker()); helpLabel.setText("Passwords must be at least 8 characters"); pages.showPage("Basic"); return false; } // must be identical if (!passwd.equals(vpasswd)) { // Clear password text boxes idPanel.clearPasswords(); helpLabel.setForeground(Color.red.darker()); helpLabel.setText("Password does not match Verify Password"); pages.showPage("Basic"); return false; } File certFile = idPanel.getCertFile(); if (null != certFile) { if (!certFile.exists() || !certFile.isFile()) { // Clear password text boxes idPanel.clearPasswords(); helpLabel.setForeground(Color.red.darker()); helpLabel.setText("Invalid Root Certificate File"); pages.showPage("Basic"); return false; } } } // make sure *some* transport is enabled. if ((httpPanel.getState() == false) && (tcpPanel.getState() == false)) { helpLabel.setForeground(Color.red.darker()); helpLabel.setText("At least one of TCP or HTTP must be enabled."); pages.showPage("Advanced"); return false; } // http settings if (httpPanel.useMe.getState()) { // make sure at least incoming or outgoing enabled. if (!httpPanel.clientEnabled.getState() && !httpPanel.publicAddr.getState()) { helpLabel.setForeground(Color.red.darker()); helpLabel.setText("Must enable incoming and/or outcoming to enable HTTP"); pages.showPage("Advanced"); return false; } // Check the http port fields. boolean valid = verifyAddr("HTTP", httpPanel.publicAddr.getState(), httpPanel.getInterfaceAddress(), httpPanel.ifAddr.getPort(), httpPanel.publicAddr.getHost(), httpPanel.publicAddr.getPort()); if( !valid ) { return false; } } // tcp settings if (tcpPanel.useMe.getState()) { // make sure at least incoming or outgoing enabled. if (!tcpPanel.clientEnabled.getState() && !tcpPanel.publicAddr.getState()) { helpLabel.setForeground(Color.red.darker()); helpLabel.setText("Must enable incoming and/or outcoming to enable TCP"); pages.showPage("Advanced"); return false; } // Check the tcp port fields. boolean valid = verifyAddr("TCP", tcpPanel.publicAddr.getState(), tcpPanel.getInterfaceAddr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -