mirror of https://github.com/zlatinb/muwire
ability to choose external router from options
parent
9f62fb6256
commit
746027c07d
|
@ -51,7 +51,10 @@ class OptionsController {
|
||||||
i2pProps["inbound.quantity"] = String.valueOf(tunnelQuantity)
|
i2pProps["inbound.quantity"] = String.valueOf(tunnelQuantity)
|
||||||
i2pProps["outbound.quantity"] = String.valueOf(tunnelQuantity)
|
i2pProps["outbound.quantity"] = String.valueOf(tunnelQuantity)
|
||||||
|
|
||||||
if (settings.embeddedRouter) {
|
final boolean embeddedAvailable = System.getProperty("embeddedRouter") == "true"
|
||||||
|
if (embeddedAvailable) {
|
||||||
|
settings.embeddedRouter = model.embeddedRouter
|
||||||
|
|
||||||
text = view.i2pNTCPPortField.text
|
text = view.i2pNTCPPortField.text
|
||||||
model.i2pNTCPPort = text
|
model.i2pNTCPPort = text
|
||||||
i2pProps["i2np.ntcp.port"] = text
|
i2pProps["i2np.ntcp.port"] = text
|
||||||
|
@ -66,6 +69,14 @@ class OptionsController {
|
||||||
i2pProps["i2np.upnp.ipv6.enable"] = String.valueOf(useUPNP)
|
i2pProps["i2np.upnp.ipv6.enable"] = String.valueOf(useUPNP)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
text = view.i2cpHostField.text
|
||||||
|
model.i2cpHost = text
|
||||||
|
i2pProps['i2cp.tcp.host'] = text
|
||||||
|
|
||||||
|
text = view.i2cpPortField.text
|
||||||
|
model.i2cpPort = text
|
||||||
|
i2pProps['i2cp.tcp.port'] = text
|
||||||
|
|
||||||
|
|
||||||
File i2pSettingsFile = new File(core.home, "i2p.properties")
|
File i2pSettingsFile = new File(core.home, "i2p.properties")
|
||||||
i2pSettingsFile.withOutputStream {
|
i2pSettingsFile.withOutputStream {
|
||||||
|
@ -161,7 +172,7 @@ class OptionsController {
|
||||||
settings.incompleteLocation = new File(incompleteLocation)
|
settings.incompleteLocation = new File(incompleteLocation)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings.embeddedRouter) {
|
if (embeddedAvailable) {
|
||||||
text = view.inBwField.text
|
text = view.inBwField.text
|
||||||
model.inBw = text
|
model.inBw = text
|
||||||
settings.inBw = Integer.valueOf(text)
|
settings.inBw = Integer.valueOf(text)
|
||||||
|
|
|
@ -335,6 +335,9 @@ OPTIONS_DOWNLOAD_UPDATES=Download updates automatically
|
||||||
# I2P tab
|
# I2P tab
|
||||||
OPTIONS_CHANGING_I2P_SETTINGS=Changing any I2P settings requires a restart
|
OPTIONS_CHANGING_I2P_SETTINGS=Changing any I2P settings requires a restart
|
||||||
OPTIONS_TUNNEL_SETTINGS=Tunnel Settings
|
OPTIONS_TUNNEL_SETTINGS=Tunnel Settings
|
||||||
|
OPTIONS_ROUTER_TYPE=Router Type
|
||||||
|
OPTIONS_EMBEDDED=Embedded
|
||||||
|
OPTIONS_EXTERNAL=External
|
||||||
|
|
||||||
# GUI tab
|
# GUI tab
|
||||||
OPTIONS_THEME_SETTINGS=Theme Settings
|
OPTIONS_THEME_SETTINGS=Theme Settings
|
||||||
|
@ -823,6 +826,8 @@ TOOLTIP_OPTIONS_ADVERTISE_FEED=Let others know about your file feed when you sen
|
||||||
TOOLTIP_OPTIONS_PUBLISH_SHARED=Publish files to your feed as soon as they are shared
|
TOOLTIP_OPTIONS_PUBLISH_SHARED=Publish files to your feed as soon as they are shared
|
||||||
TOOLTIP_OPTIONS_ONLY_TRUSTED=Connect only to users in your contact list
|
TOOLTIP_OPTIONS_ONLY_TRUSTED=Connect only to users in your contact list
|
||||||
TOOLTIP_OPTIONS_SEARCH_EXTRA_HOP=Search an extra hop. If enabled your search may reach users not in your contact list
|
TOOLTIP_OPTIONS_SEARCH_EXTRA_HOP=Search an extra hop. If enabled your search may reach users not in your contact list
|
||||||
|
TOOLTIP_OPTIONS_EMBEDDED=Use the embedded router that comes with MuWire
|
||||||
|
TOOLTIP_OPTIONS_EXTERNAL=Use an external I2P or I2Pd router
|
||||||
|
|
||||||
## Tooltips for Tools
|
## Tooltips for Tools
|
||||||
TOOLTIP_TOOLS_FOLDER_CONFIGURE=Configure properties of the selected folder
|
TOOLTIP_TOOLS_FOLDER_CONFIGURE=Configure properties of the selected folder
|
||||||
|
|
|
@ -41,6 +41,9 @@ class OptionsModel {
|
||||||
@Observable String i2pUDPPort
|
@Observable String i2pUDPPort
|
||||||
@Observable String i2pNTCPPort
|
@Observable String i2pNTCPPort
|
||||||
@Observable boolean useUPNP
|
@Observable boolean useUPNP
|
||||||
|
@Observable String i2cpHost
|
||||||
|
@Observable String i2cpPort
|
||||||
|
@Observable boolean embeddedRouter
|
||||||
|
|
||||||
// gui options
|
// gui options
|
||||||
@Observable boolean showMonitor
|
@Observable boolean showMonitor
|
||||||
|
@ -129,6 +132,9 @@ class OptionsModel {
|
||||||
i2pUDPPort = core.i2pOptions["i2np.udp.port"]
|
i2pUDPPort = core.i2pOptions["i2np.udp.port"]
|
||||||
i2pNTCPPort = core.i2pOptions["i2np.ntcp.port"]
|
i2pNTCPPort = core.i2pOptions["i2np.ntcp.port"]
|
||||||
useUPNP = Boolean.parseBoolean(core.i2pOptions.getProperty("i2np.upnp.enable","true"))
|
useUPNP = Boolean.parseBoolean(core.i2pOptions.getProperty("i2np.upnp.enable","true"))
|
||||||
|
i2cpHost = core.i2pOptions["i2cp.tcp.host"]
|
||||||
|
i2cpPort = core.i2pOptions["i2cp.tcp.port"]
|
||||||
|
embeddedRouter = core.muOptions.embeddedRouter
|
||||||
|
|
||||||
UISettings uiSettings = application.context.get("ui-settings")
|
UISettings uiSettings = application.context.get("ui-settings")
|
||||||
showMonitor = uiSettings.showMonitor
|
showMonitor = uiSettings.showMonitor
|
||||||
|
|
|
@ -75,6 +75,8 @@ class OptionsView {
|
||||||
def i2pUDPPortField
|
def i2pUDPPortField
|
||||||
def i2pNTCPPortField
|
def i2pNTCPPortField
|
||||||
def useUPNPCheckbox
|
def useUPNPCheckbox
|
||||||
|
def i2cpHostField
|
||||||
|
def i2cpPortField
|
||||||
|
|
||||||
def monitorCheckbox
|
def monitorCheckbox
|
||||||
def lnfComboBox
|
def lnfComboBox
|
||||||
|
@ -311,11 +313,32 @@ class OptionsView {
|
||||||
paintLabels : true)
|
paintLabels : true)
|
||||||
}
|
}
|
||||||
|
|
||||||
Core core = application.context.get("core")
|
if ("true" != System.getProperty("embeddedRouter")) {
|
||||||
if (core.router != null) {
|
panel(border: titledBorder(title: trans("EXTERNAL_ROUTER_I2CP_SETTINGS"), border: etchedBorder(), titlePosition: TitledBorder.TOP,
|
||||||
panel(border : titledBorder(title : trans("PORT_SETTINGS"), border : etchedBorder(), titlePosition : TitledBorder.TOP,
|
|
||||||
constraints: gbc(gridx: 0, gridy: 2, fill: GridBagConstraints.HORIZONTAL, weightx: 100))) {
|
constraints: gbc(gridx: 0, gridy: 2, fill: GridBagConstraints.HORIZONTAL, weightx: 100))) {
|
||||||
gridBagLayout()
|
gridBagLayout()
|
||||||
|
label(text: trans("HOST"),
|
||||||
|
constraints: gbc(gridx: 0, gridy: 0, anchor: GridBagConstraints.LINE_START, weightx: 100))
|
||||||
|
i2cpHostField = textField(text : bind {model.i2cpHost}, columns: COLUMNS, horizontalAlignment: JTextField.RIGHT,
|
||||||
|
constraints : gbc(gridx:1, gridy:0, anchor : GridBagConstraints.LINE_END))
|
||||||
|
label(text : trans("PORT"),
|
||||||
|
constraints: gbc(gridx: 0, gridy: 1, anchor: GridBagConstraints.LINE_START, weightx: 100))
|
||||||
|
i2cpPortField = textField(text : bind {model.i2cpPort}, columns: COLUMNS, horizontalAlignment: JTextField.RIGHT,
|
||||||
|
constraints : gbc(gridx:1, gridy:1, anchor : GridBagConstraints.LINE_END))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panel(border: titledBorder(title: trans("OPTIONS_ROUTER_TYPE"), border: etchedBorder(), titlePosition: TitledBorder.TOP,
|
||||||
|
constraints: gbc(gridx: 0, gridy: 2, fill: GridBagConstraints.HORIZONTAL, weightx: 100))) {
|
||||||
|
buttonGroup(id: "routerType")
|
||||||
|
radioButton(text : trans("OPTIONS_EMBEDDED"), toolTipText: trans("TOOLTIP_OPTIONS_EMBEDDED"),
|
||||||
|
selected: bind {model.embeddedRouter}, actionPerformed : switchToEmbedded)
|
||||||
|
radioButton(text : trans("OPTIONS_EXTERNAL"), toolTipText: trans("TOOLTIP_OPTIONS_EXTERNAL"),
|
||||||
|
selected: bind {!model.embeddedRouter}, actionPerformed : switchToExternal)
|
||||||
|
}
|
||||||
|
panel(id : "router-props", constraints: gbc(gridx: 0, gridy: 3, fill: GridBagConstraints.HORIZONTAL, weightx: 100)) {
|
||||||
|
cardLayout()
|
||||||
|
panel(id : "router-props-embedded", border: titledBorder(title: trans("PORT_SETTINGS"), border: etchedBorder(), titlePosition: TitledBorder.TOP)) {
|
||||||
|
gridBagLayout()
|
||||||
label(text: trans("TCP_PORT"), toolTipText: trans("TOOLTIP_OPTIONS_TCP_PORT"),
|
label(text: trans("TCP_PORT"), toolTipText: trans("TOOLTIP_OPTIONS_TCP_PORT"),
|
||||||
constraints: gbc(gridx: 0, gridy: 0, anchor: GridBagConstraints.LINE_START, weightx: 100))
|
constraints: gbc(gridx: 0, gridy: 0, anchor: GridBagConstraints.LINE_START, weightx: 100))
|
||||||
i2pNTCPPortField = textField(text: bind { model.i2pNTCPPort }, columns: COLUMNS, horizontalAlignment: JTextField.RIGHT,
|
i2pNTCPPortField = textField(text: bind { model.i2pNTCPPort }, columns: COLUMNS, horizontalAlignment: JTextField.RIGHT,
|
||||||
|
@ -329,6 +352,18 @@ class OptionsView {
|
||||||
label(text : trans("USE_UPNP"), constraints: gbc(gridx:0, gridy: 2, anchor: GridBagConstraints.LINE_START, weightx: 100))
|
label(text : trans("USE_UPNP"), constraints: gbc(gridx:0, gridy: 2, anchor: GridBagConstraints.LINE_START, weightx: 100))
|
||||||
useUPNPCheckbox = checkBox(selected: bind {model.useUPNP }, constraints: gbc(gridx: 1, gridy: 2, anchor: GridBagConstraints.LINE_END))
|
useUPNPCheckbox = checkBox(selected: bind {model.useUPNP }, constraints: gbc(gridx: 1, gridy: 2, anchor: GridBagConstraints.LINE_END))
|
||||||
}
|
}
|
||||||
|
panel(id : "router-props-external", border: titledBorder(title: trans("EXTERNAL_ROUTER_I2CP_SETTINGS"), border: etchedBorder(), titlePosition: TitledBorder.TOP)) {
|
||||||
|
gridBagLayout()
|
||||||
|
label(text: trans("HOST"),
|
||||||
|
constraints: gbc(gridx: 0, gridy: 0, anchor: GridBagConstraints.LINE_START, weightx: 100))
|
||||||
|
i2cpHostField = textField(text : bind {model.i2cpHost}, columns: COLUMNS, horizontalAlignment: JTextField.RIGHT,
|
||||||
|
constraints : gbc(gridx:1, gridy:0, anchor : GridBagConstraints.LINE_END))
|
||||||
|
label(text : trans("PORT"),
|
||||||
|
constraints: gbc(gridx: 0, gridy: 1, anchor: GridBagConstraints.LINE_START, weightx: 100))
|
||||||
|
i2cpPortField = textField(text : bind {model.i2cpPort}, columns: COLUMNS, horizontalAlignment: JTextField.RIGHT,
|
||||||
|
constraints : gbc(gridx:1, gridy:1, anchor : GridBagConstraints.LINE_END))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
panel(constraints : gbc(gridx: 0, gridy: 3, weighty: 100))
|
panel(constraints : gbc(gridx: 0, gridy: 3, weighty: 100))
|
||||||
|
|
||||||
|
@ -552,6 +587,18 @@ class OptionsView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def switchToEmbedded = {
|
||||||
|
model.embeddedRouter = true
|
||||||
|
def cardsPanel = builder.getVariable("router-props")
|
||||||
|
cardsPanel.getLayout().show(cardsPanel, "router-props-embedded")
|
||||||
|
}
|
||||||
|
|
||||||
|
def switchToExternal = {
|
||||||
|
model.embeddedRouter = false
|
||||||
|
def cardsPanel = builder.getVariable("router-props")
|
||||||
|
cardsPanel.getLayout().show(cardsPanel, "router-props-external")
|
||||||
|
}
|
||||||
|
|
||||||
boolean isAqua() {
|
boolean isAqua() {
|
||||||
// this is a Java bug. File choosers don't appear on Aqua L&F.
|
// this is a Java bug. File choosers don't appear on Aqua L&F.
|
||||||
model.lnfClassName == "system" && SystemVersion.isMac()
|
model.lnfClassName == "system" && SystemVersion.isMac()
|
||||||
|
@ -562,10 +609,15 @@ class OptionsView {
|
||||||
tabbedPane.addTab("MuWire", p)
|
tabbedPane.addTab("MuWire", p)
|
||||||
tabbedPane.addTab("I2P", i)
|
tabbedPane.addTab("I2P", i)
|
||||||
tabbedPane.addTab(trans("GUI"), u)
|
tabbedPane.addTab(trans("GUI"), u)
|
||||||
Core core = application.context.get("core")
|
|
||||||
if (core.router != null) {
|
if (System.getProperty("embeddedRouter") == "true") {
|
||||||
tabbedPane.addTab(trans("BANDWIDTH"), bandwidth)
|
tabbedPane.addTab(trans("BANDWIDTH"), bandwidth)
|
||||||
|
if (model.embeddedRouter)
|
||||||
|
switchToEmbedded.call()
|
||||||
|
else
|
||||||
|
switchToExternal.call()
|
||||||
}
|
}
|
||||||
|
|
||||||
tabbedPane.addTab(trans("FEED"), feed)
|
tabbedPane.addTab(trans("FEED"), feed)
|
||||||
tabbedPane.addTab(trans("TRUST_NOUN"), trust)
|
tabbedPane.addTab(trans("TRUST_NOUN"), trust)
|
||||||
tabbedPane.addTab(trans("COMMUNICATIONS"), chat)
|
tabbedPane.addTab(trans("COMMUNICATIONS"), chat)
|
||||||
|
@ -575,6 +627,7 @@ class OptionsView {
|
||||||
panel.add(tabbedPane, BorderLayout.CENTER)
|
panel.add(tabbedPane, BorderLayout.CENTER)
|
||||||
panel.add(buttonsPanel, BorderLayout.SOUTH)
|
panel.add(buttonsPanel, BorderLayout.SOUTH)
|
||||||
|
|
||||||
|
|
||||||
d.getContentPane().add(panel)
|
d.getContentPane().add(panel)
|
||||||
d.pack()
|
d.pack()
|
||||||
d.setLocationRelativeTo(mainFrame)
|
d.setLocationRelativeTo(mainFrame)
|
||||||
|
|
Loading…
Reference in New Issue