1
0
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:
mguessan 2008-10-09 23:29:45 +00:00
parent 927a12173d
commit d56022aa6d
4 changed files with 63 additions and 25 deletions

View File

@ -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));
}
} }

View File

@ -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", "");

View File

@ -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);

View File

@ -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=