mirror of
https://github.com/moparisthebest/davmail
synced 2025-02-28 01:11:57 -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 java.io.IOException;
|
||||
import java.net.Inet4Address;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
|
||||
@ -16,6 +17,10 @@ public abstract class AbstractServer extends Thread {
|
||||
/**
|
||||
* Create a ServerSocket to listen for connections.
|
||||
* 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 {
|
||||
if (port == 0) {
|
||||
@ -23,8 +28,14 @@ public abstract class AbstractServer extends Thread {
|
||||
} else {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
String bindAddress = Settings.getProperty("davmail.bindAddress");
|
||||
//noinspection SocketOpenedButNotSafelyClosed
|
||||
serverSocket = new ServerSocket(port);
|
||||
if (bindAddress == null || bindAddress.length() == 0) {
|
||||
serverSocket = new ServerSocket(port);
|
||||
} else {
|
||||
serverSocket = new ServerSocket(port, 0, Inet4Address.getByName(bindAddress));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -43,7 +54,7 @@ public abstract class AbstractServer extends Thread {
|
||||
clientSocket = serverSocket.accept();
|
||||
DavGatewayTray.debug("Connection from " + clientSocket.getInetAddress() + " on port " + port);
|
||||
// only accept localhost connections for security reasons
|
||||
if (Settings.getBooleanProperty("davmail.allowRemote") ||
|
||||
if (Settings.getBooleanProperty("davmail.allowRemote") ||
|
||||
clientSocket.getInetAddress().toString().indexOf("127.0.0.1") > 0) {
|
||||
connection = createConnectionHandler(clientSocket);
|
||||
connection.start();
|
||||
|
@ -48,6 +48,7 @@ public class Settings {
|
||||
SETTINGS.put("davmail.smtpPort", "1025");
|
||||
SETTINGS.put("davmail.keepDelay", "30");
|
||||
SETTINGS.put("davmail.allowRemote", "false");
|
||||
SETTINGS.put("davmail.bindAddress", "");
|
||||
SETTINGS.put("davmail.enableProxy", "false");
|
||||
SETTINGS.put("davmail.proxyHost", "");
|
||||
SETTINGS.put("davmail.proxyPort", "");
|
||||
|
@ -19,8 +19,12 @@ public class SettingsFrame extends JFrame {
|
||||
public SettingsFrame() {
|
||||
setTitle("DavMail Settings");
|
||||
|
||||
JPanel panel = new JPanel(new GridLayout(5, 2));
|
||||
panel.setBorder(BorderFactory.createTitledBorder("Gateway settings"));
|
||||
JTabbedPane tabbedPane = new JTabbedPane();
|
||||
|
||||
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);
|
||||
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);
|
||||
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(panel, "Local POP port: ", popPortField);
|
||||
addSettingComponent(panel, "Local SMTP port: ", smtpPortField);
|
||||
addSettingComponent(panel, "Keep Delay: ", keepDelayField);
|
||||
addSettingComponent(panel, "Allow Remote Connections: ", allowRemoteField);
|
||||
addSettingComponent(settingsPanel, "OWA url: ", urlField);
|
||||
addSettingComponent(settingsPanel, "Local POP port: ", popPortField);
|
||||
addSettingComponent(settingsPanel, "Local SMTP port: ", smtpPortField);
|
||||
addSettingComponent(settingsPanel, "Keep Delay: ", keepDelayField);
|
||||
|
||||
add("North", panel);
|
||||
mainPanel.add(settingsPanel);
|
||||
|
||||
panel = new JPanel(new GridLayout(5, 2));
|
||||
panel.setBorder(BorderFactory.createTitledBorder("Proxy settings"));
|
||||
JPanel proxyPanel = new JPanel(new GridLayout(5, 2));
|
||||
proxyPanel.setBorder(BorderFactory.createTitledBorder("Proxy settings"));
|
||||
|
||||
boolean enableProxy = Settings.getBooleanProperty("davmail.enableProxy");
|
||||
final JCheckBox enableProxyField = new JCheckBox();
|
||||
@ -67,15 +67,38 @@ public class SettingsFrame extends JFrame {
|
||||
}
|
||||
});
|
||||
|
||||
addSettingComponent(panel, "Enable proxy: ", enableProxyField);
|
||||
addSettingComponent(panel, "Proxy server: ", httpProxyField);
|
||||
addSettingComponent(panel, "Proxy port: ", httpProxyPortField);
|
||||
addSettingComponent(panel, "Proxy user: ", httpProxyUserField);
|
||||
addSettingComponent(panel, "Proxy password: ", httpProxyPasswordField);
|
||||
addSettingComponent(proxyPanel, "Enable proxy: ", enableProxyField);
|
||||
addSettingComponent(proxyPanel, "Proxy server: ", httpProxyField);
|
||||
addSettingComponent(proxyPanel, "Proxy port: ", httpProxyPortField);
|
||||
addSettingComponent(proxyPanel, "Proxy user: ", httpProxyUserField);
|
||||
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 ok = new JButton("Save");
|
||||
ActionListener save = new ActionListener() {
|
||||
@ -86,6 +109,7 @@ public class SettingsFrame extends JFrame {
|
||||
Settings.setProperty("davmail.smtpPort", smtpPortField.getText());
|
||||
Settings.setProperty("davmail.keepDelay", keepDelayField.getText());
|
||||
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.proxyHost", httpProxyField.getText());
|
||||
Settings.setProperty("davmail.proxyPort", httpProxyPortField.getText());
|
||||
@ -107,6 +131,7 @@ public class SettingsFrame extends JFrame {
|
||||
smtpPortField.setText(Settings.getProperty("davmail.smtpPort"));
|
||||
keepDelayField.setText(Settings.getProperty("davmail.keepDelay"));
|
||||
allowRemoteField.setSelected(Settings.getBooleanProperty(("davmail.allowRemote")));
|
||||
bindAddressField.setText(Settings.getProperty("davmail.bindAddress"));
|
||||
boolean enableProxy = Settings.getBooleanProperty("davmail.allowRemote");
|
||||
enableProxyField.setSelected(enableProxy);
|
||||
httpProxyField.setEnabled(enableProxy);
|
||||
@ -121,10 +146,10 @@ public class SettingsFrame extends JFrame {
|
||||
}
|
||||
});
|
||||
|
||||
panel.add(ok);
|
||||
panel.add(cancel);
|
||||
buttonPanel.add(ok);
|
||||
buttonPanel.add(cancel);
|
||||
|
||||
add("South", panel);
|
||||
add("South", buttonPanel);
|
||||
|
||||
pack();
|
||||
setResizable(false);
|
||||
|
@ -3,6 +3,7 @@ davmail.popPort=1110
|
||||
davmail.smtpPort=1025
|
||||
davmail.keepDelay=30
|
||||
davmail.allowRemote=true
|
||||
davmail.bindAddress=
|
||||
davmail.enableProxy=false
|
||||
davmail.proxyHost=
|
||||
davmail.proxyPort=
|
||||
|
Loading…
x
Reference in New Issue
Block a user