mirror of
https://github.com/moparisthebest/davmail
synced 2025-02-28 09:21:49 -05:00
Patch 1944352 by flszen :
Specify network binding interface, also added a new advanced tab in settings frame git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@144 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
parent
927a12173d
commit
d56022aa6d
@ -3,6 +3,7 @@ package davmail;
|
|||||||
import davmail.tray.DavGatewayTray;
|
import davmail.tray.DavGatewayTray;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.Inet4Address;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
|
||||||
@ -16,6 +17,10 @@ public abstract class AbstractServer extends Thread {
|
|||||||
/**
|
/**
|
||||||
* Create a ServerSocket to listen for connections.
|
* Create a ServerSocket to listen for connections.
|
||||||
* Start the thread.
|
* Start the thread.
|
||||||
|
*
|
||||||
|
* @param port tcp socket chosen port
|
||||||
|
* @param defaultPort tcp socket default port
|
||||||
|
* @throws java.io.IOException unable to create server socket
|
||||||
*/
|
*/
|
||||||
public AbstractServer(int port, int defaultPort) throws IOException {
|
public AbstractServer(int port, int defaultPort) throws IOException {
|
||||||
if (port == 0) {
|
if (port == 0) {
|
||||||
@ -23,8 +28,14 @@ public abstract class AbstractServer extends Thread {
|
|||||||
} else {
|
} else {
|
||||||
this.port = port;
|
this.port = port;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String bindAddress = Settings.getProperty("davmail.bindAddress");
|
||||||
//noinspection SocketOpenedButNotSafelyClosed
|
//noinspection SocketOpenedButNotSafelyClosed
|
||||||
|
if (bindAddress == null || bindAddress.length() == 0) {
|
||||||
serverSocket = new ServerSocket(port);
|
serverSocket = new ServerSocket(port);
|
||||||
|
} else {
|
||||||
|
serverSocket = new ServerSocket(port, 0, Inet4Address.getByName(bindAddress));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,6 +48,7 @@ public class Settings {
|
|||||||
SETTINGS.put("davmail.smtpPort", "1025");
|
SETTINGS.put("davmail.smtpPort", "1025");
|
||||||
SETTINGS.put("davmail.keepDelay", "30");
|
SETTINGS.put("davmail.keepDelay", "30");
|
||||||
SETTINGS.put("davmail.allowRemote", "false");
|
SETTINGS.put("davmail.allowRemote", "false");
|
||||||
|
SETTINGS.put("davmail.bindAddress", "");
|
||||||
SETTINGS.put("davmail.enableProxy", "false");
|
SETTINGS.put("davmail.enableProxy", "false");
|
||||||
SETTINGS.put("davmail.proxyHost", "");
|
SETTINGS.put("davmail.proxyHost", "");
|
||||||
SETTINGS.put("davmail.proxyPort", "");
|
SETTINGS.put("davmail.proxyPort", "");
|
||||||
|
@ -19,8 +19,12 @@ public class SettingsFrame extends JFrame {
|
|||||||
public SettingsFrame() {
|
public SettingsFrame() {
|
||||||
setTitle("DavMail Settings");
|
setTitle("DavMail Settings");
|
||||||
|
|
||||||
JPanel panel = new JPanel(new GridLayout(5, 2));
|
JTabbedPane tabbedPane = new JTabbedPane();
|
||||||
panel.setBorder(BorderFactory.createTitledBorder("Gateway settings"));
|
|
||||||
|
JPanel mainPanel = new JPanel(new GridLayout(2, 1));
|
||||||
|
|
||||||
|
JPanel settingsPanel = new JPanel(new GridLayout(4, 2));
|
||||||
|
settingsPanel.setBorder(BorderFactory.createTitledBorder("Gateway settings"));
|
||||||
|
|
||||||
final JTextField urlField = new JTextField(Settings.getProperty("davmail.url"), 15);
|
final JTextField urlField = new JTextField(Settings.getProperty("davmail.url"), 15);
|
||||||
urlField.setToolTipText("Base outlook web access URL");
|
urlField.setToolTipText("Base outlook web access URL");
|
||||||
@ -29,20 +33,16 @@ public class SettingsFrame extends JFrame {
|
|||||||
final JTextField keepDelayField = new JTextField(Settings.getProperty("davmail.keepDelay"), 4);
|
final JTextField keepDelayField = new JTextField(Settings.getProperty("davmail.keepDelay"), 4);
|
||||||
keepDelayField.setToolTipText("Number of days to keep messages in trash");
|
keepDelayField.setToolTipText("Number of days to keep messages in trash");
|
||||||
|
|
||||||
final JCheckBox allowRemoteField = new JCheckBox();
|
|
||||||
allowRemoteField.setSelected(Settings.getBooleanProperty("davmail.allowRemote"));
|
|
||||||
allowRemoteField.setToolTipText("Allow remote connections to the gateway (server mode)");
|
|
||||||
|
|
||||||
addSettingComponent(panel, "OWA url: ", urlField);
|
addSettingComponent(settingsPanel, "OWA url: ", urlField);
|
||||||
addSettingComponent(panel, "Local POP port: ", popPortField);
|
addSettingComponent(settingsPanel, "Local POP port: ", popPortField);
|
||||||
addSettingComponent(panel, "Local SMTP port: ", smtpPortField);
|
addSettingComponent(settingsPanel, "Local SMTP port: ", smtpPortField);
|
||||||
addSettingComponent(panel, "Keep Delay: ", keepDelayField);
|
addSettingComponent(settingsPanel, "Keep Delay: ", keepDelayField);
|
||||||
addSettingComponent(panel, "Allow Remote Connections: ", allowRemoteField);
|
|
||||||
|
|
||||||
add("North", panel);
|
mainPanel.add(settingsPanel);
|
||||||
|
|
||||||
panel = new JPanel(new GridLayout(5, 2));
|
JPanel proxyPanel = new JPanel(new GridLayout(5, 2));
|
||||||
panel.setBorder(BorderFactory.createTitledBorder("Proxy settings"));
|
proxyPanel.setBorder(BorderFactory.createTitledBorder("Proxy settings"));
|
||||||
|
|
||||||
boolean enableProxy = Settings.getBooleanProperty("davmail.enableProxy");
|
boolean enableProxy = Settings.getBooleanProperty("davmail.enableProxy");
|
||||||
final JCheckBox enableProxyField = new JCheckBox();
|
final JCheckBox enableProxyField = new JCheckBox();
|
||||||
@ -67,15 +67,38 @@ public class SettingsFrame extends JFrame {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
addSettingComponent(panel, "Enable proxy: ", enableProxyField);
|
addSettingComponent(proxyPanel, "Enable proxy: ", enableProxyField);
|
||||||
addSettingComponent(panel, "Proxy server: ", httpProxyField);
|
addSettingComponent(proxyPanel, "Proxy server: ", httpProxyField);
|
||||||
addSettingComponent(panel, "Proxy port: ", httpProxyPortField);
|
addSettingComponent(proxyPanel, "Proxy port: ", httpProxyPortField);
|
||||||
addSettingComponent(panel, "Proxy user: ", httpProxyUserField);
|
addSettingComponent(proxyPanel, "Proxy user: ", httpProxyUserField);
|
||||||
addSettingComponent(panel, "Proxy password: ", httpProxyPasswordField);
|
addSettingComponent(proxyPanel, "Proxy password: ", httpProxyPasswordField);
|
||||||
|
|
||||||
add("Center", panel);
|
mainPanel.add(proxyPanel);
|
||||||
|
|
||||||
panel = new JPanel();
|
tabbedPane.add("Main", mainPanel);
|
||||||
|
|
||||||
|
JPanel advancedPanel = new JPanel();
|
||||||
|
|
||||||
|
JPanel networkSettingsPanel = new JPanel(new GridLayout(2, 2));
|
||||||
|
networkSettingsPanel.setBorder(BorderFactory.createTitledBorder("Network settings"));
|
||||||
|
|
||||||
|
final JCheckBox allowRemoteField = new JCheckBox();
|
||||||
|
allowRemoteField.setSelected(Settings.getBooleanProperty("davmail.allowRemote"));
|
||||||
|
allowRemoteField.setToolTipText("Allow remote connections to the gateway (server mode)");
|
||||||
|
|
||||||
|
final JTextField bindAddressField = new JTextField(Settings.getProperty("davmail.bindAddress"), 15);
|
||||||
|
bindAddressField.setToolTipText("Bind only to the specified network address");
|
||||||
|
|
||||||
|
addSettingComponent(networkSettingsPanel, "Bind address: ", bindAddressField);
|
||||||
|
addSettingComponent(networkSettingsPanel, "Allow Remote Connections: ", allowRemoteField);
|
||||||
|
|
||||||
|
advancedPanel.add(networkSettingsPanel);
|
||||||
|
|
||||||
|
tabbedPane.add("Advanced", advancedPanel);
|
||||||
|
|
||||||
|
add("Center", tabbedPane);
|
||||||
|
|
||||||
|
JPanel buttonPanel = new JPanel();
|
||||||
JButton cancel = new JButton("Cancel");
|
JButton cancel = new JButton("Cancel");
|
||||||
JButton ok = new JButton("Save");
|
JButton ok = new JButton("Save");
|
||||||
ActionListener save = new ActionListener() {
|
ActionListener save = new ActionListener() {
|
||||||
@ -86,6 +109,7 @@ public class SettingsFrame extends JFrame {
|
|||||||
Settings.setProperty("davmail.smtpPort", smtpPortField.getText());
|
Settings.setProperty("davmail.smtpPort", smtpPortField.getText());
|
||||||
Settings.setProperty("davmail.keepDelay", keepDelayField.getText());
|
Settings.setProperty("davmail.keepDelay", keepDelayField.getText());
|
||||||
Settings.setProperty("davmail.allowRemote", String.valueOf(allowRemoteField.isSelected()));
|
Settings.setProperty("davmail.allowRemote", String.valueOf(allowRemoteField.isSelected()));
|
||||||
|
Settings.setProperty("davmail.bindAddress", bindAddressField.getText());
|
||||||
Settings.setProperty("davmail.enableProxy", String.valueOf(enableProxyField.isSelected()));
|
Settings.setProperty("davmail.enableProxy", String.valueOf(enableProxyField.isSelected()));
|
||||||
Settings.setProperty("davmail.proxyHost", httpProxyField.getText());
|
Settings.setProperty("davmail.proxyHost", httpProxyField.getText());
|
||||||
Settings.setProperty("davmail.proxyPort", httpProxyPortField.getText());
|
Settings.setProperty("davmail.proxyPort", httpProxyPortField.getText());
|
||||||
@ -107,6 +131,7 @@ public class SettingsFrame extends JFrame {
|
|||||||
smtpPortField.setText(Settings.getProperty("davmail.smtpPort"));
|
smtpPortField.setText(Settings.getProperty("davmail.smtpPort"));
|
||||||
keepDelayField.setText(Settings.getProperty("davmail.keepDelay"));
|
keepDelayField.setText(Settings.getProperty("davmail.keepDelay"));
|
||||||
allowRemoteField.setSelected(Settings.getBooleanProperty(("davmail.allowRemote")));
|
allowRemoteField.setSelected(Settings.getBooleanProperty(("davmail.allowRemote")));
|
||||||
|
bindAddressField.setText(Settings.getProperty("davmail.bindAddress"));
|
||||||
boolean enableProxy = Settings.getBooleanProperty("davmail.allowRemote");
|
boolean enableProxy = Settings.getBooleanProperty("davmail.allowRemote");
|
||||||
enableProxyField.setSelected(enableProxy);
|
enableProxyField.setSelected(enableProxy);
|
||||||
httpProxyField.setEnabled(enableProxy);
|
httpProxyField.setEnabled(enableProxy);
|
||||||
@ -121,10 +146,10 @@ public class SettingsFrame extends JFrame {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
panel.add(ok);
|
buttonPanel.add(ok);
|
||||||
panel.add(cancel);
|
buttonPanel.add(cancel);
|
||||||
|
|
||||||
add("South", panel);
|
add("South", buttonPanel);
|
||||||
|
|
||||||
pack();
|
pack();
|
||||||
setResizable(false);
|
setResizable(false);
|
||||||
|
@ -3,6 +3,7 @@ davmail.popPort=1110
|
|||||||
davmail.smtpPort=1025
|
davmail.smtpPort=1025
|
||||||
davmail.keepDelay=30
|
davmail.keepDelay=30
|
||||||
davmail.allowRemote=true
|
davmail.allowRemote=true
|
||||||
|
davmail.bindAddress=
|
||||||
davmail.enableProxy=false
|
davmail.enableProxy=false
|
||||||
davmail.proxyHost=
|
davmail.proxyHost=
|
||||||
davmail.proxyPort=
|
davmail.proxyPort=
|
||||||
|
Loading…
x
Reference in New Issue
Block a user