propagate from branch 'i2p.i2p.zzz.test' (head 104b5c1cea8683af30650a55d5b63141e988bb4c)

to branch 'i2p.i2p' (head 8d35e0858095b3eed3fb6d8f4ecee23cbdadfbb1)
This commit is contained in:
zzz
2009-06-29 04:13:38 +00:00
52 changed files with 2120 additions and 186 deletions

View File

@ -77,11 +77,13 @@
<property name="build_lib" location="lib"/>
<property name="build_i2pref" location="../../build"/>
<property name="build_routerconsole" location="../routerconsole/java/build/"/>
<property name="build_i2ptunnel" location="../i2ptunnel/java/build/"/>
<path id="build_classpath">
<fileset dir="${build_lib}" includes="**/*.jar"/>
<fileset dir="${build_i2pref}" includes="**/*.jar"/>
<fileset dir="${build_routerconsole}" includes="**/*.jar"/>
<fileset dir="${build_i2ptunnel}" includes="**/*.jar"/>
</path>
<target name="build_init">
<!-- Create the time stamp -->

View File

@ -22,6 +22,7 @@ dist.javadoc.dir=${dist.dir}/javadoc
excludes=
file.reference.appframework.jar=lib/appframework.jar
file.reference.i2p.jar=../../core/java/build/i2p.jar
file.reference.i2ptunnel.jar=../i2ptunnel/java/build/i2ptunnel.jar
file.reference.router.jar=../../router/java/build/router.jar
file.reference.routerconsole.jar=../routerconsole/java/build/routerconsole.jar
file.reference.swing-worker.jar=lib/swing-worker.jar
@ -32,7 +33,8 @@ javac.classpath=\
${file.reference.appframework.jar}:\
${file.reference.swing-worker.jar}:\
${file.reference.i2p.jar}:\
${file.reference.routerconsole.jar}
${file.reference.routerconsole.jar}:\
${file.reference.i2ptunnel.jar}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false

View File

@ -10,5 +10,5 @@ package net.i2p.desktopgui.desktopgui;
* @author mathias
*/
public class GUIVersion {
public static final String VERSION = "0.0.1.3";
public static final String VERSION = "0.0.2";
}

View File

@ -0,0 +1,396 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="3"/>
<Property name="title" type="java.lang.String" resourceKey="Form.title"/>
<Property name="name" type="java.lang.String" value="Form" noResource="true"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,48,0,0,2,48"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
<Property name="useNullLayout" type="boolean" value="true"/>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="tunnelNameLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelNameLabel.text"/>
<Property name="name" type="java.lang.String" value="tunnelNameLabel" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="20" width="120" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="tunnelTypeLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelTypeLabel.text"/>
<Property name="name" type="java.lang.String" value="tunnelTypeLabel" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="50" width="120" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="tunnelPortLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelPortLabel.text"/>
<Property name="name" type="java.lang.String" value="tunnelPortLabel" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="80" width="110" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="tunnelDestinationLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelDestinationLabel.text"/>
<Property name="name" type="java.lang.String" value="tunnelDestinationLabel" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="110" width="110" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="tunnelProfileLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelProfileLabel.text"/>
<Property name="name" type="java.lang.String" value="tunnelProfileLabel" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="140" width="110" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JCheckBox" name="delayConnect">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="delayConnect.text"/>
<Property name="name" type="java.lang.String" value="delayConnect" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="170" width="160" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JCheckBox" name="sharedClient">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="sharedClient.text"/>
<Property name="name" type="java.lang.String" value="sharedClient" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="200" width="160" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JCheckBox" name="autoStart">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="autoStart.text"/>
<Property name="name" type="java.lang.String" value="autoStart" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="230" width="160" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JSeparator" name="jSeparator1">
<Properties>
<Property name="name" type="java.lang.String" value="jSeparator1" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="0" y="510" width="750" height="10"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="tunnelDepthLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelDepthLabel.text"/>
<Property name="name" type="java.lang.String" value="tunnelDepthLabel" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="280" width="160" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="depthVarianceLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="depthVarianceLabel.text"/>
<Property name="name" type="java.lang.String" value="depthVarianceLabel" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="310" width="160" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="tunnelCountLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelCountLabel.text"/>
<Property name="name" type="java.lang.String" value="tunnelCountLabel" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="340" width="160" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="backupTunnelCountLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="backupTunnelCountLabel.text"/>
<Property name="name" type="java.lang.String" value="backupTunnelCountLabel" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="370" width="170" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JSeparator" name="jSeparator2">
<Properties>
<Property name="name" type="java.lang.String" value="jSeparator2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="0" y="260" width="750" height="10"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JCheckBox" name="reduceIdle">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="reduceIdle.text"/>
<Property name="name" type="java.lang.String" value="reduceIdle" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="420" width="300" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JCheckBox" name="closeIdle">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="closeIdle.text"/>
<Property name="name" type="java.lang.String" value="closeIdle" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="450" width="370" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JCheckBox" name="delayIdle">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="delayIdle.text"/>
<Property name="name" type="java.lang.String" value="delayIdle" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="20" y="480" width="400" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JSeparator" name="jSeparator3">
<Properties>
<Property name="name" type="java.lang.String" value="jSeparator3" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="0" y="400" width="760" height="10"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="save">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="save.text"/>
<Property name="name" type="java.lang.String" value="save" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="10" y="520" width="-1" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="cancel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="cancel.text"/>
<Property name="name" type="java.lang.String" value="cancel" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="60" y="520" width="-1" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JTextField" name="tunnelName">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelName.text"/>
<Property name="name" type="java.lang.String" value="tunnelName" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="200" y="20" width="340" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="tunnelType">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelType.text"/>
<Property name="name" type="java.lang.String" value="tunnelType" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="200" y="50" width="340" height="20"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JTextField" name="tunnelPort">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelPort.text"/>
<Property name="name" type="java.lang.String" value="tunnelPort" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="200" y="70" width="340" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JTextField" name="tunnelDestination">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="tunnelDestination.text"/>
<Property name="name" type="java.lang.String" value="tunnelDestination" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="200" y="100" width="340" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JComboBox" name="tunnelProfile">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="2">
<StringItem index="0" value="Interactive connection (Instant messaging)"/>
<StringItem index="1" value="Bulk connection (Downloads, websites...)"/>
</StringArray>
</Property>
<Property name="name" type="java.lang.String" value="tunnelProfile" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="200" y="130" width="340" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JComboBox" name="tunnelDepth">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="4">
<StringItem index="0" value="0 hop tunnel (no anonymity, low latency)"/>
<StringItem index="1" value="1 hop tunnel (low anonymity, low latency)"/>
<StringItem index="2" value="2 hop tunnel (medium anonymity, medium latency)"/>
<StringItem index="3" value="3 hop tunnel (high anonymity, high latency)"/>
</StringArray>
</Property>
<Property name="name" type="java.lang.String" value="tunnelDepth" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="200" y="280" width="350" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JComboBox" name="depthVariance">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="5">
<StringItem index="0" value="0 hop variance (no random, good performance)"/>
<StringItem index="1" value="+ 0-1 hop variance (slightly random, lower performance)"/>
<StringItem index="2" value="+ 0-2 hop variance (very random, lower performance)"/>
<StringItem index="3" value="+/- 0-1 hop variance (slightly random, standard performance)"/>
<StringItem index="4" value="+/- 0-2 hop variance (not recommended)"/>
</StringArray>
</Property>
<Property name="name" type="java.lang.String" value="depthVariance" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="200" y="310" width="350" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JComboBox" name="tunnelCount">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="3">
<StringItem index="0" value="1 tunnel (low bandwidth usage, low reliability)"/>
<StringItem index="1" value="2 tunnels (standard bandwidth usage, standard reliability)"/>
<StringItem index="2" value="3 tunnels (high bandwidth usage, high reliability)"/>
</StringArray>
</Property>
<Property name="name" type="java.lang.String" value="tunnelCount" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="200" y="340" width="350" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JComboBox" name="backupTunnelCount">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="4">
<StringItem index="0" value="0 backup tunnels (no redundancy, no resource usage)"/>
<StringItem index="1" value="1 backup tunnel (low redundancy, low resource usage)"/>
<StringItem index="2" value="2 backup tunnels (medium redundancy, medium resource usage)"/>
<StringItem index="3" value="3 backup tunnels (high redundancy, high resource usage)"/>
</StringArray>
</Property>
<Property name="name" type="java.lang.String" value="backupTunnelCount" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="200" y="370" width="350" height="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="changeTunnelState">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="changeTunnelState.text"/>
<Property name="name" type="java.lang.String" value="changeTunnelState" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="160" y="520" width="150" height="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,434 @@
/*
* ClientTunnelWindow.java
*
* Created on 10-jun-2009, 16:49:12
*/
package net.i2p.desktopgui.gui;
import net.i2p.i2ptunnel.web.EditBean;
import java.awt.event.ActionListener;
/**
*
* @author mathias
*/
public class ClientTunnelWindow extends javax.swing.JFrame {
/** Creates new form ClientTunnelWindow */
public ClientTunnelWindow(int tunnelNumber, ActionListener al) {
initComponents();
this.tunnelNumber = tunnelNumber;
this.al = al;
extraInitComponents();
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setSize(600, 600);
this.setLocationRelativeTo(null);
this.requestFocus();
this.changeTunnelState.setVisible(false); //TODO: implement tunnel state change
this.setVisible(true);
}
public void extraInitComponents() {
EditBean bean = new EditBean();
if(!bean.isClient(tunnelNumber)) {
this.dispose();
}
else {
this.tunnelName.setText(bean.getTunnelName(tunnelNumber));
this.tunnelType.setText(bean.getTunnelType(tunnelNumber));
this.tunnelPort.setText(bean.getClientPort(tunnelNumber));
this.tunnelDestination.setText(bean.getClientDestination(tunnelNumber));
if(bean.getTunnelType(tunnelNumber).equals(TYPE_STREAMR_CLIENT)) {
tunnelProfile.setVisible(false);
tunnelProfileLabel.setVisible(false);
this.delayConnect.setVisible(false);
this.sharedClient.setVisible(false);
this.autoStart.setVisible(false);
}
else {
if(bean.isInteractive(tunnelNumber)) {
tunnelProfile.setSelectedIndex(TUNNEL_INTERACTIVE);
}
else {
tunnelProfile.setSelectedIndex(TUNNEL_BULK);
}
this.delayConnect.setSelected(bean.shouldDelay(tunnelNumber));
this.sharedClient.setSelected(bean.isSharedClient(tunnelNumber));
this.autoStart.setSelected(bean.startAutomatically(tunnelNumber));
}
this.tunnelDepth.setSelectedIndex(bean.getTunnelDepth(tunnelNumber, 2));
int variance = bean.getTunnelVariance(tunnelNumber, 0);
if(variance == 0) {
this.depthVariance.setSelectedIndex(0);
}
else if(variance == 1) {
this.depthVariance.setSelectedIndex(1);
}
else if(variance == 2) {
this.depthVariance.setSelectedIndex(2);
}
else if(variance == -1) {
this.depthVariance.setSelectedIndex(3);
}
else if(variance == -2) {
this.depthVariance.setSelectedIndex(4);
}
int tunnelQuantity = bean.getTunnelQuantity(tunnelNumber, 2) - 1;
if(tunnelQuantity >= 0 && tunnelQuantity <= 2) {
this.tunnelCount.setSelectedIndex(tunnelQuantity);
}
int backupTunnelQuantity = bean.getTunnelBackupQuantity(tunnelNumber, 0);
if(backupTunnelQuantity >= 0 && backupTunnelQuantity <= 3) {
this.backupTunnelCount.setSelectedIndex(backupTunnelQuantity);
}
if(bean.getTunnelType(tunnelNumber).equals(TYPE_STREAMR_CLIENT)) {
this.reduceIdle.setVisible(false);
this.closeIdle.setVisible(false);
this.delayIdle.setVisible(false);
}
else {
this.reduceIdle.setSelected(bean.getReduce(tunnelNumber));
this.closeIdle.setSelected(bean.getClose(tunnelNumber));
this.delayIdle.setSelected(bean.getDelayOpen(tunnelNumber));
}
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
tunnelNameLabel = new javax.swing.JLabel();
tunnelTypeLabel = new javax.swing.JLabel();
tunnelPortLabel = new javax.swing.JLabel();
tunnelDestinationLabel = new javax.swing.JLabel();
tunnelProfileLabel = new javax.swing.JLabel();
delayConnect = new javax.swing.JCheckBox();
sharedClient = new javax.swing.JCheckBox();
autoStart = new javax.swing.JCheckBox();
jSeparator1 = new javax.swing.JSeparator();
tunnelDepthLabel = new javax.swing.JLabel();
depthVarianceLabel = new javax.swing.JLabel();
tunnelCountLabel = new javax.swing.JLabel();
backupTunnelCountLabel = new javax.swing.JLabel();
jSeparator2 = new javax.swing.JSeparator();
reduceIdle = new javax.swing.JCheckBox();
closeIdle = new javax.swing.JCheckBox();
delayIdle = new javax.swing.JCheckBox();
jSeparator3 = new javax.swing.JSeparator();
save = new javax.swing.JButton();
cancel = new javax.swing.JButton();
tunnelName = new javax.swing.JTextField();
tunnelType = new javax.swing.JLabel();
tunnelPort = new javax.swing.JTextField();
tunnelDestination = new javax.swing.JTextField();
tunnelProfile = new javax.swing.JComboBox();
tunnelDepth = new javax.swing.JComboBox();
depthVariance = new javax.swing.JComboBox();
tunnelCount = new javax.swing.JComboBox();
backupTunnelCount = new javax.swing.JComboBox();
changeTunnelState = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(net.i2p.desktopgui.desktopgui.Main.class).getContext().getResourceMap(ClientTunnelWindow.class);
setTitle(resourceMap.getString("Form.title")); // NOI18N
setName("Form"); // NOI18N
getContentPane().setLayout(null);
tunnelNameLabel.setText(resourceMap.getString("tunnelNameLabel.text")); // NOI18N
tunnelNameLabel.setName("tunnelNameLabel"); // NOI18N
getContentPane().add(tunnelNameLabel);
tunnelNameLabel.setBounds(20, 20, 120, 17);
tunnelTypeLabel.setText(resourceMap.getString("tunnelTypeLabel.text")); // NOI18N
tunnelTypeLabel.setName("tunnelTypeLabel"); // NOI18N
getContentPane().add(tunnelTypeLabel);
tunnelTypeLabel.setBounds(20, 50, 120, 17);
tunnelPortLabel.setText(resourceMap.getString("tunnelPortLabel.text")); // NOI18N
tunnelPortLabel.setName("tunnelPortLabel"); // NOI18N
getContentPane().add(tunnelPortLabel);
tunnelPortLabel.setBounds(20, 80, 110, 17);
tunnelDestinationLabel.setText(resourceMap.getString("tunnelDestinationLabel.text")); // NOI18N
tunnelDestinationLabel.setName("tunnelDestinationLabel"); // NOI18N
getContentPane().add(tunnelDestinationLabel);
tunnelDestinationLabel.setBounds(20, 110, 110, 17);
tunnelProfileLabel.setText(resourceMap.getString("tunnelProfileLabel.text")); // NOI18N
tunnelProfileLabel.setName("tunnelProfileLabel"); // NOI18N
getContentPane().add(tunnelProfileLabel);
tunnelProfileLabel.setBounds(20, 140, 110, 17);
delayConnect.setText(resourceMap.getString("delayConnect.text")); // NOI18N
delayConnect.setName("delayConnect"); // NOI18N
getContentPane().add(delayConnect);
delayConnect.setBounds(20, 170, 160, 22);
sharedClient.setText(resourceMap.getString("sharedClient.text")); // NOI18N
sharedClient.setName("sharedClient"); // NOI18N
getContentPane().add(sharedClient);
sharedClient.setBounds(20, 200, 160, 22);
autoStart.setText(resourceMap.getString("autoStart.text")); // NOI18N
autoStart.setName("autoStart"); // NOI18N
getContentPane().add(autoStart);
autoStart.setBounds(20, 230, 160, 22);
jSeparator1.setName("jSeparator1"); // NOI18N
getContentPane().add(jSeparator1);
jSeparator1.setBounds(0, 510, 750, 10);
tunnelDepthLabel.setText(resourceMap.getString("tunnelDepthLabel.text")); // NOI18N
tunnelDepthLabel.setName("tunnelDepthLabel"); // NOI18N
getContentPane().add(tunnelDepthLabel);
tunnelDepthLabel.setBounds(20, 280, 160, 17);
depthVarianceLabel.setText(resourceMap.getString("depthVarianceLabel.text")); // NOI18N
depthVarianceLabel.setName("depthVarianceLabel"); // NOI18N
getContentPane().add(depthVarianceLabel);
depthVarianceLabel.setBounds(20, 310, 160, 17);
tunnelCountLabel.setText(resourceMap.getString("tunnelCountLabel.text")); // NOI18N
tunnelCountLabel.setName("tunnelCountLabel"); // NOI18N
getContentPane().add(tunnelCountLabel);
tunnelCountLabel.setBounds(20, 340, 160, 17);
backupTunnelCountLabel.setText(resourceMap.getString("backupTunnelCountLabel.text")); // NOI18N
backupTunnelCountLabel.setName("backupTunnelCountLabel"); // NOI18N
getContentPane().add(backupTunnelCountLabel);
backupTunnelCountLabel.setBounds(20, 370, 170, 17);
jSeparator2.setName("jSeparator2"); // NOI18N
getContentPane().add(jSeparator2);
jSeparator2.setBounds(0, 260, 750, 10);
reduceIdle.setText(resourceMap.getString("reduceIdle.text")); // NOI18N
reduceIdle.setName("reduceIdle"); // NOI18N
getContentPane().add(reduceIdle);
reduceIdle.setBounds(20, 420, 300, 22);
closeIdle.setText(resourceMap.getString("closeIdle.text")); // NOI18N
closeIdle.setName("closeIdle"); // NOI18N
getContentPane().add(closeIdle);
closeIdle.setBounds(20, 450, 370, 22);
delayIdle.setText(resourceMap.getString("delayIdle.text")); // NOI18N
delayIdle.setName("delayIdle"); // NOI18N
getContentPane().add(delayIdle);
delayIdle.setBounds(20, 480, 400, 22);
jSeparator3.setName("jSeparator3"); // NOI18N
getContentPane().add(jSeparator3);
jSeparator3.setBounds(0, 400, 760, 10);
save.setText(resourceMap.getString("save.text")); // NOI18N
save.setName("save"); // NOI18N
save.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
saveActionPerformed(evt);
}
});
getContentPane().add(save);
save.setBounds(10, 520, 44, 29);
cancel.setText(resourceMap.getString("cancel.text")); // NOI18N
cancel.setName("cancel"); // NOI18N
cancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelActionPerformed(evt);
}
});
getContentPane().add(cancel);
cancel.setBounds(60, 520, 55, 29);
tunnelName.setText(resourceMap.getString("tunnelName.text")); // NOI18N
tunnelName.setName("tunnelName"); // NOI18N
getContentPane().add(tunnelName);
tunnelName.setBounds(200, 20, 340, 27);
tunnelType.setText(resourceMap.getString("tunnelType.text")); // NOI18N
tunnelType.setName("tunnelType"); // NOI18N
getContentPane().add(tunnelType);
tunnelType.setBounds(200, 50, 340, 20);
tunnelPort.setText(resourceMap.getString("tunnelPort.text")); // NOI18N
tunnelPort.setName("tunnelPort"); // NOI18N
getContentPane().add(tunnelPort);
tunnelPort.setBounds(200, 70, 340, 27);
tunnelDestination.setText(resourceMap.getString("tunnelDestination.text")); // NOI18N
tunnelDestination.setName("tunnelDestination"); // NOI18N
getContentPane().add(tunnelDestination);
tunnelDestination.setBounds(200, 100, 340, 27);
tunnelProfile.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Interactive connection (Instant messaging)", "Bulk connection (Downloads, websites...)" }));
tunnelProfile.setName("tunnelProfile"); // NOI18N
getContentPane().add(tunnelProfile);
tunnelProfile.setBounds(200, 130, 340, 27);
tunnelDepth.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 hop tunnel (no anonymity, low latency)", "1 hop tunnel (low anonymity, low latency)", "2 hop tunnel (medium anonymity, medium latency)", "3 hop tunnel (high anonymity, high latency)" }));
tunnelDepth.setName("tunnelDepth"); // NOI18N
getContentPane().add(tunnelDepth);
tunnelDepth.setBounds(200, 280, 350, 27);
depthVariance.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 hop variance (no random, good performance)", "+ 0-1 hop variance (slightly random, lower performance)", "+ 0-2 hop variance (very random, lower performance)", "+/- 0-1 hop variance (slightly random, standard performance)", "+/- 0-2 hop variance (not recommended)" }));
depthVariance.setName("depthVariance"); // NOI18N
getContentPane().add(depthVariance);
depthVariance.setBounds(200, 310, 350, 27);
tunnelCount.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1 tunnel (low bandwidth usage, low reliability)", "2 tunnels (standard bandwidth usage, standard reliability)", "3 tunnels (high bandwidth usage, high reliability)" }));
tunnelCount.setName("tunnelCount"); // NOI18N
getContentPane().add(tunnelCount);
tunnelCount.setBounds(200, 340, 350, 27);
backupTunnelCount.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 backup tunnels (no redundancy, no resource usage)", "1 backup tunnel (low redundancy, low resource usage)", "2 backup tunnels (medium redundancy, medium resource usage)", "3 backup tunnels (high redundancy, high resource usage)" }));
backupTunnelCount.setName("backupTunnelCount"); // NOI18N
getContentPane().add(backupTunnelCount);
backupTunnelCount.setBounds(200, 370, 350, 27);
changeTunnelState.setText(resourceMap.getString("changeTunnelState.text")); // NOI18N
changeTunnelState.setName("changeTunnelState"); // NOI18N
getContentPane().add(changeTunnelState);
changeTunnelState.setBounds(160, 520, 150, 29);
pack();
}// </editor-fold>//GEN-END:initComponents
private void saveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveActionPerformed
EditBean bean = new EditBean();
if(!bean.isClient(tunnelNumber)) {
al.actionPerformed(evt);
this.dispose();
}
else {
bean.setTunnel("" + tunnelNumber);
bean.setName(tunnelName.getText());
bean.setPort(tunnelPort.getText());
bean.setTargetDestination(tunnelDestination.getText());
if(!bean.getTunnelType(tunnelNumber).equals(TYPE_STREAMR_CLIENT)) {
if(tunnelProfile.getSelectedIndex() == TUNNEL_INTERACTIVE) {
bean.setProfile("interactive");
}
else {
bean.setProfile("bulk");
}
if(delayConnect.isSelected()) {
bean.setConnectDelay("true");
}
else {
bean.setConnectDelay("false");
}
if(sharedClient.isSelected()) {
bean.setShared(true);
}
else {
bean.setShared(false);
}
if(autoStart.isSelected()) {
bean.setStartOnLoad("true");
}
else {
}
}
bean.setTunnelDepth("" + tunnelDepth.getSelectedIndex());
int variance = depthVariance.getSelectedIndex();
if(variance >= 0 && variance <= 2) {
bean.setTunnelVariance("" + variance);
}
else if(variance == 3) {
bean.setTunnelVariance("-1");
}
else if(variance == 4) {
bean.setTunnelVariance("-2");
}
bean.setTunnelQuantity("" + tunnelCount.getSelectedIndex() + 1);
bean.setTunnelBackupQuantity("" + backupTunnelCount.getSelectedIndex());
if(!bean.getTunnelType(tunnelNumber).equals(TYPE_STREAMR_CLIENT)) {
if(reduceIdle.isSelected()) {
bean.setReduce("true");
}
else {
}
if(closeIdle.isSelected()) {
bean.setClose("true");
}
else {
}
if(delayIdle.isSelected()) {
bean.setDelayOpen("true");
}
}
}
al.actionPerformed(evt);
this.dispose();
}//GEN-LAST:event_saveActionPerformed
private void cancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelActionPerformed
al.actionPerformed(evt);
this.dispose();
}//GEN-LAST:event_cancelActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox autoStart;
private javax.swing.JComboBox backupTunnelCount;
private javax.swing.JLabel backupTunnelCountLabel;
private javax.swing.JButton cancel;
private javax.swing.JButton changeTunnelState;
private javax.swing.JCheckBox closeIdle;
private javax.swing.JCheckBox delayConnect;
private javax.swing.JCheckBox delayIdle;
private javax.swing.JComboBox depthVariance;
private javax.swing.JLabel depthVarianceLabel;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JCheckBox reduceIdle;
private javax.swing.JButton save;
private javax.swing.JCheckBox sharedClient;
private javax.swing.JComboBox tunnelCount;
private javax.swing.JLabel tunnelCountLabel;
private javax.swing.JComboBox tunnelDepth;
private javax.swing.JLabel tunnelDepthLabel;
private javax.swing.JTextField tunnelDestination;
private javax.swing.JLabel tunnelDestinationLabel;
private javax.swing.JTextField tunnelName;
private javax.swing.JLabel tunnelNameLabel;
private javax.swing.JTextField tunnelPort;
private javax.swing.JLabel tunnelPortLabel;
private javax.swing.JComboBox tunnelProfile;
private javax.swing.JLabel tunnelProfileLabel;
private javax.swing.JLabel tunnelType;
private javax.swing.JLabel tunnelTypeLabel;
// End of variables declaration//GEN-END:variables
private int tunnelNumber;
private ActionListener al;
private static final int TUNNEL_INTERACTIVE = 0;
private static final int TUNNEL_BULK = 1;
private static final String TYPE_STREAMR_CLIENT = "Streamr client";
}

View File

@ -322,14 +322,14 @@
</Group>
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="40" pref="40" max="40" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="updateDownload" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="updateInform" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="updateDownloadRestart" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" max="-2" attributes="0">
<Component id="updateInform" alignment="0" pref="377" max="32767" attributes="1"/>
<Component id="updateDownload" alignment="0" max="32767" attributes="1"/>
<Component id="updateDownloadRestart" alignment="0" max="32767" attributes="1"/>
</Group>
</Group>
</Group>
<EmptySpace min="-2" pref="9" max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="1" attributes="0">
<EmptySpace pref="339" max="32767" attributes="0"/>
@ -439,11 +439,11 @@
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="serverFrame" alignment="1" pref="538" max="32767" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="tunnelsExplanation" alignment="0" pref="538" max="32767" attributes="0"/>
<Component id="serverFrame" alignment="1" pref="538" max="32767" attributes="0"/>
<Component id="clientTunnelLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="clientFrame" alignment="0" pref="538" max="32767" attributes="0"/>
<Component id="serverTunnelLabel" alignment="0" min="-2" max="-2" attributes="0"/>
@ -463,9 +463,9 @@
<Component id="serverTunnelLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="serverFrame" pref="122" max="32767" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="tunnelsExplanation" min="-2" pref="65" max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="tunnelsExplanation" min="-2" pref="45" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="32" max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@ -477,6 +477,51 @@
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="clientTable">
<Properties>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="4" rowCount="0">
<Column editable="true" title="Name" type="java.lang.Object"/>
<Column editable="true" title="Type" type="java.lang.Object"/>
<Column editable="true" title="Address" type="java.lang.Object"/>
<Column editable="true" title="Status" type="java.lang.Object"/>
</Table>
</Property>
<Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor">
<TableColumnModel selectionModel="0">
<Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true">
<Title resourceKey="clientTable.columnModel.title0"/>
<Editor/>
<Renderer/>
</Column>
<Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true">
<Title resourceKey="clientTable.columnModel.title1"/>
<Editor/>
<Renderer/>
</Column>
<Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true">
<Title resourceKey="clientTable.columnModel.title2"/>
<Editor/>
<Renderer/>
</Column>
<Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true">
<Title resourceKey="clientTable.columnModel.title3"/>
<Editor/>
<Renderer/>
</Column>
</TableColumnModel>
</Property>
<Property name="name" type="java.lang.String" value="clientTable" noResource="true"/>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
<TableHeader reorderingAllowed="true" resizingAllowed="true"/>
</Property>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="clientTableMouseClicked"/>
</Events>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JScrollPane" name="serverFrame">
<Properties>
@ -484,6 +529,45 @@
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="serverTable">
<Properties>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="3" rowCount="4">
<Column editable="true" title="Name" type="java.lang.Object"/>
<Column editable="true" title="Address" type="java.lang.Object"/>
<Column editable="true" title="Status" type="java.lang.Object"/>
</Table>
</Property>
<Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor">
<TableColumnModel selectionModel="0">
<Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true">
<Title resourceKey="serverTable.columnModel.title0"/>
<Editor/>
<Renderer/>
</Column>
<Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true">
<Title resourceKey="serverTable.columnModel.title1"/>
<Editor/>
<Renderer/>
</Column>
<Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true">
<Title resourceKey="serverTable.columnModel.title2"/>
<Editor/>
<Renderer/>
</Column>
</TableColumnModel>
</Property>
<Property name="name" type="java.lang.String" value="serverTable" noResource="true"/>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
<TableHeader reorderingAllowed="true" resizingAllowed="true"/>
</Property>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="serverTableMouseClicked"/>
</Events>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JLabel" name="tunnelsExplanation">
<Properties>

View File

@ -7,6 +7,7 @@
package net.i2p.desktopgui.gui;
import java.awt.Desktop;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
@ -23,6 +24,9 @@ import net.i2p.router.web.NewsFetcher;
import net.i2p.desktopgui.router.configuration.UpdateHandler;
import java.util.Date;
import javax.swing.SwingWorker;
import net.i2p.i2ptunnel.web.IndexBean;
import javax.swing.table.DefaultTableModel;
import java.awt.event.ActionListener;
/**
*
@ -43,6 +47,7 @@ public class GeneralConfiguration extends javax.swing.JFrame {
private void extraInitComponents() {
initSpeedTab();
initUpdateTab();
initTunnelTab();
}
private void initSpeedTab() {
@ -87,6 +92,48 @@ public class GeneralConfiguration extends javax.swing.JFrame {
}
}
private void initTunnelTab() {
while(((DefaultTableModel) clientTable.getModel()).getRowCount() > 0) {
((DefaultTableModel) clientTable.getModel()).removeRow(0);
}
while(((DefaultTableModel) serverTable.getModel()).getRowCount() > 0) {
((DefaultTableModel) serverTable.getModel()).removeRow(0);
}
IndexBean bean = new IndexBean();
for(int i=0; i<bean.getTunnelCount(); i++) {
if(bean.isClient(i)) {
Object[] row = {bean.getTunnelName(i), bean.getTunnelType(i),
bean.getClientInterface(i) + ":" + bean.getClientPort(i),
getTunnelStatus(bean.getTunnelStatus(i))};
((DefaultTableModel) clientTable.getModel()).addRow(row);
}
else {
Object[] row = {bean.getTunnelName(i),
bean.getServerTarget(i),
getTunnelStatus(bean.getTunnelStatus(i))};
((DefaultTableModel) serverTable.getModel()).addRow(row);
}
}
}
public String getTunnelStatus(int status) {
if(status == IndexBean.NOT_RUNNING) {
return "Not running";
}
else if(status == IndexBean.RUNNING) {
return "Running";
}
else if(status == IndexBean.STANDBY) {
return "Standby";
}
else if(status == IndexBean.STARTING) {
return "Starting";
}
else {
return "Error: status not found";
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
@ -125,7 +172,9 @@ public class GeneralConfiguration extends javax.swing.JFrame {
advancedUpdateConfig = new javax.swing.JToggleButton();
tunnelPanel = new javax.swing.JPanel();
clientFrame = new javax.swing.JScrollPane();
clientTable = new javax.swing.JTable();
serverFrame = new javax.swing.JScrollPane();
serverTable = new javax.swing.JTable();
tunnelsExplanation = new javax.swing.JLabel();
clientTunnelLabel = new javax.swing.JLabel();
serverTunnelLabel = new javax.swing.JLabel();
@ -334,11 +383,11 @@ public class GeneralConfiguration extends javax.swing.JFrame {
.addComponent(updateNow))))
.addGroup(updatesPanelLayout.createSequentialGroup()
.addGap(40, 40, 40)
.addGroup(updatesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(updateDownload)
.addComponent(updateInform)
.addComponent(updateDownloadRestart))))
.addGap(9, 9, 9))
.addGroup(updatesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(updateInform, javax.swing.GroupLayout.DEFAULT_SIZE, 377, Short.MAX_VALUE)
.addComponent(updateDownload, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(updateDownloadRestart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap())
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, updatesPanelLayout.createSequentialGroup()
.addContainerGap(339, Short.MAX_VALUE)
.addComponent(advancedUpdateConfig)
@ -370,8 +419,50 @@ public class GeneralConfiguration extends javax.swing.JFrame {
clientFrame.setName("clientFrame"); // NOI18N
clientTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Name", "Type", "Address", "Status"
}
));
clientTable.setName("clientTable"); // NOI18N
clientTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
clientTableMouseClicked(evt);
}
});
clientFrame.setViewportView(clientTable);
clientTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("clientTable.columnModel.title0")); // NOI18N
clientTable.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("clientTable.columnModel.title1")); // NOI18N
clientTable.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("clientTable.columnModel.title2")); // NOI18N
clientTable.getColumnModel().getColumn(3).setHeaderValue(resourceMap.getString("clientTable.columnModel.title3")); // NOI18N
serverFrame.setName("serverFrame"); // NOI18N
serverTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null}
},
new String [] {
"Name", "Address", "Status"
}
));
serverTable.setName("serverTable"); // NOI18N
serverTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
serverTableMouseClicked(evt);
}
});
serverFrame.setViewportView(serverTable);
serverTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("serverTable.columnModel.title0")); // NOI18N
serverTable.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("serverTable.columnModel.title1")); // NOI18N
serverTable.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("serverTable.columnModel.title2")); // NOI18N
tunnelsExplanation.setText(resourceMap.getString("tunnelsExplanation.text")); // NOI18N
tunnelsExplanation.setName("tunnelsExplanation"); // NOI18N
@ -385,14 +476,14 @@ public class GeneralConfiguration extends javax.swing.JFrame {
tunnelPanel.setLayout(tunnelPanelLayout);
tunnelPanelLayout.setHorizontalGroup(
tunnelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(tunnelPanelLayout.createSequentialGroup()
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, tunnelPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(tunnelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(serverFrame, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE)
.addComponent(tunnelsExplanation, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE)
.addComponent(clientTunnelLabel)
.addComponent(clientFrame, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE)
.addComponent(serverTunnelLabel))
.addGroup(tunnelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(tunnelsExplanation, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE)
.addComponent(serverFrame, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE)
.addComponent(clientTunnelLabel, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(clientFrame, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE)
.addComponent(serverTunnelLabel, javax.swing.GroupLayout.Alignment.LEADING))
.addContainerGap())
);
tunnelPanelLayout.setVerticalGroup(
@ -407,8 +498,8 @@ public class GeneralConfiguration extends javax.swing.JFrame {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(serverFrame, javax.swing.GroupLayout.DEFAULT_SIZE, 122, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tunnelsExplanation, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
.addComponent(tunnelsExplanation, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(32, 32, 32))
);
settingsPanel.addTab(resourceMap.getString("tunnelPanel.TabConstraints.tabTitle"), tunnelPanel); // NOI18N
@ -584,6 +675,68 @@ private void advancedUpdateConfigActionPerformed(java.awt.event.ActionEvent evt)
}
}//GEN-LAST:event_advancedUpdateConfigActionPerformed
private void clientTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_clientTableMouseClicked
int row = clientTable.getSelectedRow();
if(row == -1) { //No selected row
return;
}
else {
IndexBean bean = new IndexBean();
/*
* TODO: This is not entirely good: if one adds/removes a tunnel without desktopgui, this number will be wrong
*/
int clientNumber = 0;
int i = 0;
for(clientNumber=0; clientNumber<bean.getTunnelCount(); clientNumber++) {
if(bean.isClient(clientNumber)) {
if(i == row) {
break;
}
i++;
}
}
new ClientTunnelWindow(clientNumber, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
initTunnelTab();
}
});
}
}//GEN-LAST:event_clientTableMouseClicked
private void serverTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_serverTableMouseClicked
int row = serverTable.getSelectedRow();
if(row == -1) { //No selected row
return;
}
else {
IndexBean bean = new IndexBean();
/*
* TODO: This is not entirely good: if one adds/removes a tunnel without desktopgui, this number will be wrong
*/
int serverNumber = 0;
int i = 0;
for(serverNumber=0; serverNumber<bean.getTunnelCount(); serverNumber++) {
if(!bean.isClient(serverNumber)) {
if(i == row) {
break;
}
i++;
}
}
new ServerTunnelWindow(serverNumber, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
initTunnelTab();
}
});
}
}//GEN-LAST:event_serverTableMouseClicked
protected void initUsage(String upload, String download) {
uploadgb.setText("" + SpeedHelper.calculateMonthlyUsage(Integer.parseInt(upload)));
downloadgb.setText("" + SpeedHelper.calculateMonthlyUsage(Integer.parseInt(download)));
@ -646,6 +799,7 @@ private void advancedUpdateConfigActionPerformed(java.awt.event.ActionEvent evt)
private javax.swing.JToggleButton cancel;
private javax.swing.JToggleButton checkUpdates;
private javax.swing.JScrollPane clientFrame;
private javax.swing.JTable clientTable;
private javax.swing.JLabel clientTunnelLabel;
private javax.swing.JLabel downloadSpeedLabel;
private javax.swing.JLabel downloadUsageLabel;
@ -657,6 +811,7 @@ private void advancedUpdateConfigActionPerformed(java.awt.event.ActionEvent evt)
private javax.swing.JPanel networkPanel;
private javax.swing.JToggleButton ok;
private javax.swing.JScrollPane serverFrame;
private javax.swing.JTable serverTable;
private javax.swing.JLabel serverTunnelLabel;
private javax.swing.JTabbedPane settingsPanel;
private javax.swing.JPanel speedPanel;

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="3"/>
<Property name="name" type="java.lang.String" value="Form" noResource="true"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
<Property name="useNullLayout" type="boolean" value="true"/>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
<AbsoluteConstraints x="10" y="10" width="-1" height="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,60 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* ServerTunnelWindow.java
*
* Created on 11-jun-2009, 14:55:53
*/
package net.i2p.desktopgui.gui;
import java.awt.event.ActionListener;
/**
*
* @author mathias
*/
public class ServerTunnelWindow extends javax.swing.JFrame {
/** Creates new form ServerTunnelWindow */
public ServerTunnelWindow(int tunnelNumber, ActionListener al) {
initComponents();
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setSize(600, 600);
this.setLocationRelativeTo(null);
this.requestFocus();
this.setVisible(true);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setName("Form"); // NOI18N
getContentPane().setLayout(null);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(net.i2p.desktopgui.desktopgui.Main.class).getContext().getResourceMap(ServerTunnelWindow.class);
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
getContentPane().add(jLabel1);
jLabel1.setBounds(10, 10, 43, 17);
pack();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,26 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
Form.title=Client Tunnel Configuration
tunnelNameLabel.text=Name:
tunnelTypeLabel.text=Type:
tunnelType.text=jLabel10
tunnelName.text=jTextField1
tunnelPortLabel.text=Port:
tunnelPort.text=jTextField2
tunnelDestination.text=jTextField3
tunnelDestinationLabel.text=Destination:
tunnelProfileLabel.text=Profile:
delayConnect.text=Delay connect
sharedClient.text=Shared client
autoStart.text=Auto start
tunnelDepthLabel.text=Tunnel depth:
depthVarianceLabel.text=Depth variance:
tunnelCountLabel.text=Tunnel count:
backupTunnelCountLabel.text=Backup tunnel count:
reduceIdle.text=Reduce tunnel count when idle
closeIdle.text=Close tunnels when idle
delayIdle.text=Delay opening of tunnels when idle
save.text=Save
cancel.text=Cancel
changeTunnelState.text=Start Tunnel

View File

@ -13,7 +13,7 @@ downloadspeed.text=jTextField2
uploadgb.text=jTextField3
downloadgb.text=jTextField4
updateMethod.text=What is your preferred automatic update setting?
updateInform.text=Only inform about updates
updateInform.text=Only inform about updates (not advised)
updateDownload.text=Download and verify update file, do not restart
updateDownloadRestart.text=Download, verify and restart
checkUpdates.text=Check for updates now
@ -21,9 +21,17 @@ updateNow.text=Update available: update now
advancedUpdateConfig.text=Advanced update configuration
clientTunnelLabel.text=Client tunnels:
serverTunnelLabel.text=Server tunnels:
tunnelsExplanation.text=Tunnel explanation
tunnelsExplanation.text=Click on a tunnel to view and change its configuration. + Tunnel explanation
uploadUsageLabel.text=Monthly usage:
downloadUsageLabel.text=Monthly usage:
gbUploadLabel.text=GB
gbDownloadLabel.text=GB
uploadDownloadExplanation.text=Explanation ...
clientTable.columnModel.title3=Status
clientTable.columnModel.title2=Address
clientTable.columnModel.title1=Type
clientTable.columnModel.title0=Name
serverTable.columnModel.title0=Name
serverTable.columnModel.title3=Title 4
serverTable.columnModel.title2=Status
serverTable.columnModel.title1=Address

View File

@ -0,0 +1 @@
jLabel1.text=Name:

View File

@ -9,7 +9,7 @@ import net.i2p.desktopgui.router.RouterHelper;
public class UpdateHelper {
public static final String PROP_NEWS_URL = "router.newsURL";
public static final String DEFAULT_NEWS_URL = "http://complication.i2p/news.xml";
public static final String DEFAULT_NEWS_URL = "http://echelon.i2p/i2p/news.xml";
public static final String PROP_REFRESH_FREQUENCY = "router.newsRefreshFrequency";
public static final String DEFAULT_REFRESH_FREQUENCY = 24*60*60*1000 + "";
@ -31,7 +31,6 @@ public class UpdateHelper {
public static final String DEFAULT_UPDATE_URL =
"http://echelon.i2p/i2p/i2pupdate.sud\r\n" +
"http://stats.i2p/i2p/i2pupdate.sud\r\n" +
"http://complication.i2p/i2p/i2pupdate.sud\r\n" +
"http://www.i2p2.i2p/_static/i2pupdate.sud\r\n" +
"http://update.postman.i2p/i2pupdate.sud" ;

View File

@ -15,7 +15,7 @@ public class ConfigClientsHelper extends HelperBase {
public String getForm1() {
StringBuffer buf = new StringBuffer(1024);
buf.append("<table border=\"1\">\n");
buf.append("<tr><td>Client</td><td>Run at Startup?</td><td>Start Now</td><td>Class and arguments</td></tr>\n");
buf.append("<tr><th>Client</th><th>Run at Startup?</th><th>Start Now</th><th>Class and arguments</th></tr>\n");
List clients = ClientAppConfig.getClientApps(_context);
for (int cur = 0; cur < clients.size(); cur++) {
@ -31,7 +31,7 @@ public class ConfigClientsHelper extends HelperBase {
public String getForm2() {
StringBuffer buf = new StringBuffer(1024);
buf.append("<table border=\"1\">\n");
buf.append("<tr><td>WebApp</td><td>Run at Startup?</td><td>Start Now</td><td>Description</td></tr>\n");
buf.append("<tr><th>WebApp</th><th>Run at Startup?</th><th>Start Now</th><th>Description</th></tr>\n");
Properties props = RouterConsoleRunner.webAppProperties();
Set keys = new TreeSet(props.keySet());
for (Iterator iter = keys.iterator(); iter.hasNext(); ) {

View File

@ -56,27 +56,27 @@ public class ConfigTunnelsHelper extends HelperBase {
private static final int MIN_NEG_VARIANCE = -1;
private void renderForm(StringBuffer buf, int index, String prefix, String name, TunnelPoolSettings in, TunnelPoolSettings out) {
buf.append("<tr><td colspan=\"3\"><b><a name=\"").append(prefix).append("\">");
buf.append(name).append("</a></b></td></tr>\n");
buf.append("<tr><th colspan=\"3\"><a name=\"").append(prefix).append("\">");
buf.append(name).append("</a></th></tr>\n");
if (in.getLength() <= 0 ||
in.getLength() + in.getLengthVariance() <= 0 ||
out.getLength() <= 0 ||
out.getLength() + out.getLengthVariance() <= 0)
buf.append("<tr><td colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 0-hop tunnels</font></td></tr>");
buf.append("<tr><th colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 0-hop tunnels</font></th></tr>");
else if (in.getLength() <= 1 ||
in.getLength() + in.getLengthVariance() <= 1 ||
out.getLength() <= 1 ||
out.getLength() + out.getLengthVariance() <= 1)
buf.append("<tr><td colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 1-hop tunnels</font></td></tr>");
buf.append("<tr><th colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 1-hop tunnels</font></th></tr>");
if (in.getLength() + Math.abs(in.getLengthVariance()) >= WARN_LENGTH ||
out.getLength() + Math.abs(out.getLengthVariance()) >= WARN_LENGTH)
buf.append("<tr><td colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include very long tunnels</font></td></tr>");
buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include very long tunnels</font></th></tr>");
if (in.getQuantity() + in.getBackupQuantity() >= WARN_QUANTITY ||
out.getQuantity() + out.getBackupQuantity() >= WARN_QUANTITY)
buf.append("<tr><td colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include high tunnel quantities</font></td></tr>");
buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include high tunnel quantities</font></th></tr>");
buf.append("<tr><td></td><td><b>Inbound</b></td><td><b>Outbound</b></td></tr>\n");
buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n");
// tunnel depth
buf.append("<tr><td>Depth</td>\n");

View File

@ -19,7 +19,8 @@ public class ConfigUpdateHandler extends FormHandler {
public static final String PROP_NEWS_URL = "router.newsURL";
// public static final String DEFAULT_NEWS_URL = "http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/news.xml?rev=HEAD";
public static final String DEFAULT_NEWS_URL = "http://complication.i2p/news.xml";
public static final String OLD_DEFAULT_NEWS_URL = "http://complication.i2p/news.xml";
public static final String DEFAULT_NEWS_URL = "http://echelon.i2p/i2p/news.xml";
public static final String PROP_REFRESH_FREQUENCY = "router.newsRefreshFrequency";
public static final String DEFAULT_REFRESH_FREQUENCY = 24*60*60*1000 + "";
public static final String PROP_UPDATE_POLICY = "router.updatePolicy";
@ -57,7 +58,7 @@ public class ConfigUpdateHandler extends FormHandler {
}
if ( (_newsURL != null) && (_newsURL.length() > 0) ) {
String oldURL = _context.router().getConfigSetting(PROP_NEWS_URL);
String oldURL = ConfigUpdateHelper.getNewsURL(_context);
if ( (oldURL == null) || (!_newsURL.equals(oldURL)) ) {
_context.router().setConfigSetting(PROP_NEWS_URL, _newsURL);
addFormNotice("Updating news URL to " + _newsURL);

View File

@ -1,5 +1,6 @@
package net.i2p.router.web;
import net.i2p.I2PAppContext;
import net.i2p.crypto.TrustedUpdate;
import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext;
@ -12,8 +13,14 @@ public class ConfigUpdateHelper extends HelperBase {
}
public String getNewsURL() {
String url = _context.getProperty(ConfigUpdateHandler.PROP_NEWS_URL);
if (url != null)
return getNewsURL(_context);
}
/** hack to replace the old news location with the new one, even if they have saved
the update page at some point */
public static String getNewsURL(I2PAppContext ctx) {
String url = ctx.getProperty(ConfigUpdateHandler.PROP_NEWS_URL);
if (url != null && !url.equals(ConfigUpdateHandler.OLD_DEFAULT_NEWS_URL))
return url;
else
return ConfigUpdateHandler.DEFAULT_NEWS_URL;
@ -26,18 +33,10 @@ public class ConfigUpdateHelper extends HelperBase {
return ConfigUpdateHandler.DEFAULT_UPDATE_URL;
}
public String getProxyHost() {
String host = _context.getProperty(ConfigUpdateHandler.PROP_PROXY_HOST);
if (host != null)
return host;
else
return ConfigUpdateHandler.DEFAULT_PROXY_HOST;
return _context.getProperty(ConfigUpdateHandler.PROP_PROXY_HOST, ConfigUpdateHandler.DEFAULT_PROXY_HOST);
}
public String getProxyPort() {
String port = _context.getProperty(ConfigUpdateHandler.PROP_PROXY_PORT);
if (port != null)
return port;
else
return ConfigUpdateHandler.DEFAULT_PROXY_PORT;
return _context.getProperty(ConfigUpdateHandler.PROP_PROXY_PORT, ConfigUpdateHandler.DEFAULT_PROXY_PORT);
}
public String getUpdateThroughProxy() {
@ -76,8 +75,7 @@ public class ConfigUpdateHelper extends HelperBase {
}
public String getUpdatePolicySelectBox() {
String policy = _context.getProperty(ConfigUpdateHandler.PROP_UPDATE_POLICY);
if (policy == null) policy = ConfigUpdateHandler.DEFAULT_UPDATE_POLICY;
String policy = _context.getProperty(ConfigUpdateHandler.PROP_UPDATE_POLICY, ConfigUpdateHandler.DEFAULT_UPDATE_POLICY);
StringBuffer buf = new StringBuffer(256);
buf.append("<select name=\"updatePolicy\">");

View File

@ -113,7 +113,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
}
}
public void fetchNews() {
String newsURL = _context.getProperty(ConfigUpdateHandler.PROP_NEWS_URL, ConfigUpdateHandler.DEFAULT_NEWS_URL);
String newsURL = ConfigUpdateHelper.getNewsURL(_context);
boolean shouldProxy = Boolean.valueOf(_context.getProperty(ConfigUpdateHandler.PROP_SHOULD_PROXY, ConfigUpdateHandler.DEFAULT_SHOULD_PROXY)).booleanValue();
String proxyHost = _context.getProperty(ConfigUpdateHandler.PROP_PROXY_HOST, ConfigUpdateHandler.DEFAULT_PROXY_HOST);
String port = _context.getProperty(ConfigUpdateHandler.PROP_PROXY_PORT, ConfigUpdateHandler.DEFAULT_PROXY_PORT);

View File

@ -366,7 +366,7 @@ public class SummaryHelper extends HelperBase {
buf.append("<i>No leases</i><br />\n");
}
}
buf.append("<hr />\n");
// buf.append("<hr />\n");
return buf.toString();
}

View File

@ -139,7 +139,8 @@ public class UpdateHandler {
try {
EepGet get = null;
if (shouldProxy)
get = new EepGet(_context, proxyHost, proxyPort, 20, _updateFile, updateURL, false);
// 40 retries!!
get = new EepGet(_context, proxyHost, proxyPort, 40, SIGNED_UPDATE_FILE, updateURL, false);
else
get = new EepGet(_context, 1, _updateFile, updateURL, false);
get.addStatusListener(UpdateRunner.this);

View File

@ -27,27 +27,32 @@
if (prev != null) System.setProperty("net.i2p.router.web.ConfigUpdateHandler.noncePrev", prev);
System.setProperty("net.i2p.router.web.ConfigUpdateHandler.nonce", new java.util.Random().nextLong()+""); %>
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigUpdateHandler.nonce")%>" />
<table border="0" cellspacing="5"><tr><td valign="top"><b>News:</b><td>
<% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %>
<i>Update In Progress</i><br /><br />
<% } else { %>
<input type="submit" name="action" value="Check for update now" /><br /><br />
<% } %>
News URL:
<input type="text" size="60" name="newsURL" value="<jsp:getProperty name="updatehelper" property="newsURL" />"><br />
Refresh frequency:
<jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" /><br />
Update policy:
<jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /><br />
<p>Update through the eepProxy?
<jsp:getProperty name="updatehelper" property="updateThroughProxy" /><br />
eepProxy host: <input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" /><br />
eepProxy port: <input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /></p>
<p>Update URLs:<br />
<textarea name="updateURL" cols="90" rows="4" wrap="off"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea></p>
<p>Trusted keys:</br />
<textarea name="trustedKeys" cols="90" rows="4" wrap="off"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea></p>
<br />
<input type="submit" name="action" value="Save" />
<tr><td><td>
<tr><td valign="top"><b>News URL:</b>
<td><input type="text" size="60" name="newsURL" value="<jsp:getProperty name="updatehelper" property="newsURL" />">
<tr><td valign="top"><b>Refresh frequency:</b>
<td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" />
<tr><td valign="top"><b>Update policy:</b>
<td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" />
<tr><td valign="top"><b>Update through the eepProxy?</b>
<td><jsp:getProperty name="updatehelper" property="updateThroughProxy" />
<tr><td valign="top"><b>eepProxy host:</b>
<td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" />
<tr><td valign="top"><b>eepProxy port:</b>
<td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" />
<tr><td valign="top"><b>Update URLs:</b>
<td><textarea name="updateURL" cols="90" rows="4" wrap="off"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea>
<tr><td valign="top"><b>Trusted keys:</b>
<td><textarea name="trustedKeys" cols="90" rows="4" wrap="off"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea>
<tr><td><td>
<tr><td><td><input type="submit" name="action" value="Save" /> <input type="reset" value="Cancel" />
</table>
</form>
</div>

View File

@ -1,112 +0,0 @@
body {
font-family: Verdana, Tahoma, Helvetica, sans-serif;
margin: 1em 0em;
padding: 0em;
text-align: center;
background-color: white;
color: black;
font-size: 100%;
}
.hide {
display: none;
}
img {
border: none;
}
pre {
width: 100%;
overflow-x: scroll;
}
div.logo {
float: left;
width: 200px;
left: 1em;
top: 1em;
margin: 0em;
padding: .5em;
text-align: center;
}
div.toolbar {
margin: 0em 0em 2em 0em;
font-weight: bold;
}
div.routersummaryouter {
float: left;
width: 215px;
margin: 0;
padding: 0;
border: 0;
clear: left; /* fixes a bug in Opera */
overflow: auto;
}
div.routersummary {
background-color: #fafaff;
width: 195px;
color: inherit;
margin: 0em;
padding: 5px;
text-align: left;
border: medium solid #efefff;
font-size: 0.82em;
}
div.warning {
margin: 0em 1em 1em 224px;
padding: .5em 1em;
background-color: #ffefef;
border: medium solid #ffafaf;
text-align: left;
color: inherit;
}
div.main {
margin: 0em 1em 1em 224px;
padding: .5em 1em;
background-color: #ffffef;
border: medium solid #ffffd0;
text-align: left;
color: inherit;
}
div.main textarea {
width: 100% !important;
}
div.news {
margin: 0em 1em 1em 224px;
padding: .5em 1em;
background-color: #ffffc0;
border: medium solid #ffffa0;
text-align: left;
color: inherit;
}
div.confignav {
padding: 1em;
background-color: #efefff;
}
div.configure {
padding: 1em;
background-color: #ffffc0;
}
div.messages {
padding: 1em;
background-color: #fafaff;
}
div.messages span.error {
color: #d00000;
}
div.messages span.notice {
font-style: italic;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 925 B

View File

@ -6,7 +6,7 @@
<title>I2P Router Console - home</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<%@include file="css.jsp" %>
<link rel="shortcut icon" href="favicon.ico" />
<link rel="shortcut icon" href="/themes/console/images/favicon.ico" />
</head><body>
<%
if (System.getProperty("router.consoleNonce") == null) {

View File

@ -1,6 +1,6 @@
<%@page import="java.io.File" %>
<div class="logo">
<a href="index.jsp"><img src="i2plogo.png" alt="Router Console" width="187" height="35" /></a><br />
<a href="index.jsp"><img src="/themes/console/images/i2plogo.png" alt="Router Console" width="187" height="35" /></a><br />
</div>
<div class="toolbar">
<% File path = new File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/toolbar.html");

View File

@ -83,8 +83,6 @@
<b>Used:</b> <jsp:getProperty name="helper" property="inboundTransferred" />/<jsp:getProperty name="helper" property="outboundTransferred" /><br />
<hr />
<jsp:getProperty name="helper" property="destinations" />
<u><b>Tunnels in/out</b></u><br />
<b>Exploratory:</b> <jsp:getProperty name="helper" property="inboundTunnels" />/<jsp:getProperty name="helper" property="outboundTunnels" /><br />
<b>Client:</b> <jsp:getProperty name="helper" property="inboundClientTunnels" />/<jsp:getProperty name="helper" property="outboundClientTunnels" /><br />
@ -97,4 +95,6 @@
<b>Tunnel lag:</b> <jsp:getProperty name="helper" property="tunnelLag" /><br />
<b>Handle backlog:</b> <jsp:getProperty name="helper" property="inboundBacklog" /><br />
<b><jsp:getProperty name="helper" property="tunnelStatus" /></b><br />
<hr />
<jsp:getProperty name="helper" property="destinations" />

View File

@ -14,9 +14,11 @@ if (uri.endsWith(".css")) {
response.setContentType("image/gif");
} else if (uri.endsWith(".jpg")) {
response.setContentType("image/jpeg");
} else if (uri.endsWith(".ico")) {
response.setContentType("image/x-icon");
}
response.setHeader("Cache-Control", "max-age=86400"); // cache for a day
String base = net.i2p.I2PAppContext.getGlobalContext().getBaseDir().getAbsolutePath() +
java.io.File.separatorChar + "docs";
net.i2p.util.FileUtil.readFile(uri, base, response.getOutputStream());
%>
%>

View File

@ -157,6 +157,20 @@ public class UrlLauncher {
// fall through
}
// This debian script tries everything in $BROWSER, then gnome-www-browser and x-www-browser
// if X is running and www-browser otherwise. Those point to the user's preferred
// browser using the update-alternatives system.
if (_shellCommand.executeSilentAndWaitTimed("sensible-browser " + url, 5))
return true;
// Try x-www-browser directly
if (_shellCommand.executeSilentAndWaitTimed("x-www-browser " + url, 5))
return true;
// puppy linux
if (_shellCommand.executeSilentAndWaitTimed("defaultbrowser " + url, 5))
return true;
if (_shellCommand.executeSilentAndWaitTimed("opera -newpage " + url, 5))
return true;
@ -175,6 +189,10 @@ public class UrlLauncher {
if (_shellCommand.executeSilentAndWaitTimed("galeon " + url, 5))
return true;
// Text Mode Browsers only below here
if (_shellCommand.executeSilentAndWaitTimed("www-browser " + url, 5))
return true;
if (_shellCommand.executeSilentAndWaitTimed("links " + url, 5))
return true;