Merge Pull Request #87 into develop
This commit is contained in:
@@ -253,6 +253,18 @@
|
|||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.mail</groupId>
|
||||||
|
<artifactId>javax.mail-api</artifactId>
|
||||||
|
<version>1.5.5</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.mail</groupId>
|
||||||
|
<artifactId>javax.mail</artifactId>
|
||||||
|
<version>1.5.5</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>taglibs</groupId>
|
<groupId>taglibs</groupId>
|
||||||
<artifactId>standard</artifactId>
|
<artifactId>standard</artifactId>
|
||||||
|
|||||||
+46
@@ -40,6 +40,12 @@ public class AdvancedSettingsCommand {
|
|||||||
private boolean isReloadNeeded;
|
private boolean isReloadNeeded;
|
||||||
private boolean toast;
|
private boolean toast;
|
||||||
|
|
||||||
|
private String smtpServer;
|
||||||
|
private String smtpEncryption;
|
||||||
|
private String smtpPort;
|
||||||
|
private String smtpUser;
|
||||||
|
private String smtpPassword;
|
||||||
|
|
||||||
public String getDownloadLimit() {
|
public String getDownloadLimit() {
|
||||||
return downloadLimit;
|
return downloadLimit;
|
||||||
}
|
}
|
||||||
@@ -127,4 +133,44 @@ public class AdvancedSettingsCommand {
|
|||||||
public void setToast(boolean toast) {
|
public void setToast(boolean toast) {
|
||||||
this.toast = toast;
|
this.toast = toast;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSmtpServer() {
|
||||||
|
return smtpServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSmtpServer(String smtpServer) {
|
||||||
|
this.smtpServer = smtpServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpEncryption() {
|
||||||
|
return smtpEncryption;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSmtpEncryption(String smtpEncryption) {
|
||||||
|
this.smtpEncryption = smtpEncryption;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpPort() {
|
||||||
|
return smtpPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSmtpPort(String smtpPort) {
|
||||||
|
this.smtpPort = smtpPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpUser() {
|
||||||
|
return smtpUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSmtpUser(String smtpUser) {
|
||||||
|
this.smtpUser = smtpUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpPassword() {
|
||||||
|
return smtpPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSmtpPassword(String smtpPassword) {
|
||||||
|
this.smtpPassword = smtpPassword;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+14
@@ -47,6 +47,11 @@ public class AdvancedSettingsController extends SimpleFormController {
|
|||||||
command.setLdapAutoShadowing(settingsService.isLdapAutoShadowing());
|
command.setLdapAutoShadowing(settingsService.isLdapAutoShadowing());
|
||||||
command.setBrand(settingsService.getBrand());
|
command.setBrand(settingsService.getBrand());
|
||||||
|
|
||||||
|
command.setSmtpServer(settingsService.getSmtpServer());
|
||||||
|
command.setSmtpEncryption(settingsService.getSmtpEncryption());
|
||||||
|
command.setSmtpPort(settingsService.getSmtpPort());
|
||||||
|
command.setSmtpUser(settingsService.getSmtpUser());
|
||||||
|
|
||||||
return command;
|
return command;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,6 +79,15 @@ public class AdvancedSettingsController extends SimpleFormController {
|
|||||||
settingsService.setLdapManagerPassword(command.getLdapManagerPassword());
|
settingsService.setLdapManagerPassword(command.getLdapManagerPassword());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
settingsService.setSmtpServer(command.getSmtpServer());
|
||||||
|
settingsService.setSmtpEncryption(command.getSmtpEncryption());
|
||||||
|
settingsService.setSmtpPort(command.getSmtpPort());
|
||||||
|
settingsService.setSmtpUser(command.getSmtpUser());
|
||||||
|
|
||||||
|
if (StringUtils.isNotEmpty(command.getSmtpPassword())) {
|
||||||
|
settingsService.setSmtpPassword(command.getSmtpPassword());
|
||||||
|
}
|
||||||
|
|
||||||
settingsService.save();
|
settingsService.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+61
-28
@@ -23,20 +23,21 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import javax.mail.Message;
|
||||||
|
import javax.mail.Session;
|
||||||
|
import javax.mail.Transport;
|
||||||
|
import javax.mail.internet.InternetAddress;
|
||||||
|
import javax.mail.internet.MimeMessage;
|
||||||
|
|
||||||
import org.apache.commons.lang.ObjectUtils;
|
import org.apache.commons.lang.ObjectUtils;
|
||||||
import org.apache.commons.lang.RandomStringUtils;
|
import org.apache.commons.lang.RandomStringUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.http.NameValuePair;
|
|
||||||
import org.apache.http.client.HttpClient;
|
|
||||||
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
|
||||||
import org.apache.http.client.methods.HttpPost;
|
|
||||||
import org.apache.http.impl.client.DefaultHttpClient;
|
|
||||||
import org.apache.http.message.BasicNameValuePair;
|
|
||||||
import org.apache.http.params.HttpConnectionParams;
|
|
||||||
import org.springframework.web.bind.ServletRequestUtils;
|
import org.springframework.web.bind.ServletRequestUtils;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
|
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
|
||||||
@@ -136,33 +137,65 @@ public class MultiController extends MultiActionController {
|
|||||||
return new ModelAndView("recover", "model", map);
|
return new ModelAndView("recover", "model", map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e-mail user new password via configured Smtp server
|
||||||
|
*/
|
||||||
private boolean emailPassword(String password, String username, String email) {
|
private boolean emailPassword(String password, String username, String email) {
|
||||||
HttpClient client = new DefaultHttpClient();
|
/* Default to protocol smtp when SmtpEncryption is set to "None" */
|
||||||
try {
|
String prot = "smtp";
|
||||||
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000);
|
|
||||||
HttpConnectionParams.setSoTimeout(client.getParams(), 10000);
|
|
||||||
HttpPost method = new HttpPost("http://libresonic.org/backend/sendMail.view");
|
|
||||||
|
|
||||||
List<NameValuePair> params = new ArrayList<NameValuePair>();
|
if (settingsService.getSmtpServer() == null || settingsService.getSmtpServer().isEmpty()) {
|
||||||
params.add(new BasicNameValuePair("from", "noreply@libresonic.org"));
|
LOG.warn("Can not send email; no Smtp server configured.");
|
||||||
params.add(new BasicNameValuePair("to", email));
|
return false;
|
||||||
params.add(new BasicNameValuePair("subject", "Libresonic Password"));
|
}
|
||||||
params.add(new BasicNameValuePair("text",
|
|
||||||
"Hi there!\n\n" +
|
Properties props = new Properties();
|
||||||
"You have requested to reset your Libresonic password. Please find your new login details below.\n\n" +
|
if (settingsService.getSmtpEncryption().equals("SSL/TLS")) {
|
||||||
"Username: " + username + "\n" +
|
prot = "smtps";
|
||||||
"Password: " + password + "\n\n" +
|
props.put("mail." + prot + ".ssl.enable", "true");
|
||||||
"--\n" +
|
} else if (settingsService.getSmtpEncryption().equals("STARTTLS")) {
|
||||||
"The Libresonic Team\n" +
|
prot = "smtp";
|
||||||
"libresonic.org"));
|
props.put("mail." + prot + ".starttls.enable", "true");
|
||||||
method.setEntity(new UrlEncodedFormEntity(params, StringUtil.ENCODING_UTF8));
|
}
|
||||||
client.execute(method);
|
props.put("mail." + prot + ".host", settingsService.getSmtpServer());
|
||||||
|
props.put("mail." + prot + ".port", settingsService.getSmtpPort());
|
||||||
|
/* use authentication when SmtpUser is configured */
|
||||||
|
if (settingsService.getSmtpUser() != null && !settingsService.getSmtpUser().isEmpty()) {
|
||||||
|
props.put("mail." + prot + ".auth", "true");
|
||||||
|
}
|
||||||
|
|
||||||
|
Session session = Session.getInstance(props, null);
|
||||||
|
|
||||||
|
try {
|
||||||
|
Message message = new MimeMessage(session);
|
||||||
|
message.setFrom(new InternetAddress("libresonic@libresonic.org"));
|
||||||
|
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(email));
|
||||||
|
message.setSubject("Libresonic Password");
|
||||||
|
message.setText("Hi there!\n\n" +
|
||||||
|
"You have requested to reset your Libresonic password. Please find your new login details below.\n\n" +
|
||||||
|
"Username: " + username + "\n" +
|
||||||
|
"Password: " + password + "\n\n" +
|
||||||
|
"--\n" +
|
||||||
|
"Your Libresonic server\n" +
|
||||||
|
"libresonic.org");
|
||||||
|
message.setSentDate(new Date());
|
||||||
|
|
||||||
|
Transport trans = session.getTransport(prot);
|
||||||
|
try {
|
||||||
|
if (props.get("mail." + prot + ".auth") != null && props.get("mail." + prot + ".auth").equals("true")) {
|
||||||
|
trans.connect(settingsService.getSmtpServer(), settingsService.getSmtpUser(), settingsService.getSmtpPassword());
|
||||||
|
} else {
|
||||||
|
trans.connect();
|
||||||
|
}
|
||||||
|
trans.sendMessage(message, message.getAllRecipients());
|
||||||
|
} finally {
|
||||||
|
trans.close();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} catch (Exception x) {
|
} catch (Exception x) {
|
||||||
LOG.warn("Failed to send email.", x);
|
LOG.warn("Failed to send email.", x);
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
|
||||||
client.getConnectionManager().shutdown();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ public class SettingsService {
|
|||||||
private static final String KEY_SONOS_SERVICE_NAME = "SonosServiceName";
|
private static final String KEY_SONOS_SERVICE_NAME = "SonosServiceName";
|
||||||
private static final String KEY_SONOS_SERVICE_ID = "SonosServiceId";
|
private static final String KEY_SONOS_SERVICE_ID = "SonosServiceId";
|
||||||
|
|
||||||
|
private static final String KEY_SMTP_SERVER = "SmtpServer";
|
||||||
|
private static final String KEY_SMTP_ENCRYPTION = "SmtpEncryption";
|
||||||
|
private static final String KEY_SMTP_PORT = "SmtpPort";
|
||||||
|
private static final String KEY_SMTP_USER = "SmtpUser";
|
||||||
|
private static final String KEY_SMTP_PASSWORD = "SmtpPassword";
|
||||||
|
|
||||||
// Default values.
|
// Default values.
|
||||||
private static final String DEFAULT_INDEX_STRING = "A B C D E F G H I J K L M N O P Q R S T U V W X-Z(XYZ)";
|
private static final String DEFAULT_INDEX_STRING = "A B C D E F G H I J K L M N O P Q R S T U V W X-Z(XYZ)";
|
||||||
private static final String DEFAULT_IGNORED_ARTICLES = "The El La Los Las Le Les";
|
private static final String DEFAULT_IGNORED_ARTICLES = "The El La Los Las Le Les";
|
||||||
@@ -212,6 +218,12 @@ public class SettingsService {
|
|||||||
private static final String DEFAULT_SONOS_SERVICE_NAME = "Libresonic";
|
private static final String DEFAULT_SONOS_SERVICE_NAME = "Libresonic";
|
||||||
private static final int DEFAULT_SONOS_SERVICE_ID = 242;
|
private static final int DEFAULT_SONOS_SERVICE_ID = 242;
|
||||||
|
|
||||||
|
private static final String DEFAULT_SMTP_SERVER = null;
|
||||||
|
private static final String DEFAULT_SMTP_ENCRYPTION = "None";
|
||||||
|
private static final String DEFAULT_SMTP_PORT = "25";
|
||||||
|
private static final String DEFAULT_SMTP_USER = null;
|
||||||
|
private static final String DEFAULT_SMTP_PASSWORD = null;
|
||||||
|
|
||||||
// Array of obsolete keys. Used to clean property file.
|
// Array of obsolete keys. Used to clean property file.
|
||||||
private static final List<String> OBSOLETE_KEYS = Arrays.asList("PortForwardingPublicPort", "PortForwardingLocalPort",
|
private static final List<String> OBSOLETE_KEYS = Arrays.asList("PortForwardingPublicPort", "PortForwardingLocalPort",
|
||||||
"DownsamplingCommand", "DownsamplingCommand2", "DownsamplingCommand3", "AutoCoverBatch", "MusicMask",
|
"DownsamplingCommand", "DownsamplingCommand2", "DownsamplingCommand3", "AutoCoverBatch", "MusicMask",
|
||||||
@@ -1446,4 +1458,54 @@ public class SettingsService {
|
|||||||
public void setVersionService(VersionService versionService) {
|
public void setVersionService(VersionService versionService) {
|
||||||
this.versionService = versionService;
|
this.versionService = versionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSmtpServer() {
|
||||||
|
return properties.getProperty(KEY_SMTP_SERVER, DEFAULT_SMTP_SERVER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSmtpServer(String smtpServer) {
|
||||||
|
setString(KEY_SMTP_SERVER, smtpServer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpPort() {
|
||||||
|
return getString(KEY_SMTP_PORT, DEFAULT_SMTP_PORT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSmtpPort(String smtpPort) {
|
||||||
|
setString(KEY_SMTP_PORT, smtpPort);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpEncryption() {
|
||||||
|
return properties.getProperty(KEY_SMTP_ENCRYPTION, DEFAULT_SMTP_ENCRYPTION);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSmtpEncryption(String encryptionMethod) {
|
||||||
|
setString(KEY_SMTP_ENCRYPTION, encryptionMethod);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpUser() {
|
||||||
|
return properties.getProperty(KEY_SMTP_USER, DEFAULT_SMTP_USER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSmtpUser(String smtpUser) {
|
||||||
|
setString(KEY_SMTP_USER, smtpUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpPassword() {
|
||||||
|
String s = properties.getProperty(KEY_SMTP_PASSWORD, DEFAULT_SMTP_PASSWORD);
|
||||||
|
try {
|
||||||
|
return StringUtil.utf8HexDecode(s);
|
||||||
|
} catch (Exception x) {
|
||||||
|
LOG.warn("Failed to decode Smtp password.", x);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setSmtpPassword(String smtpPassword) {
|
||||||
|
try {
|
||||||
|
smtpPassword = StringUtil.utf8HexEncode(smtpPassword);
|
||||||
|
} catch (Exception x) {
|
||||||
|
LOG.warn("Failed to encode Smtp password.", x);
|
||||||
|
}
|
||||||
|
properties.setProperty(KEY_SMTP_PASSWORD, smtpPassword);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+17
@@ -341,6 +341,14 @@ advancedsettings.ldapsearchfilter = LDAP search filter
|
|||||||
advancedsettings.ldapmanagerdn = LDAP manager DN<br><div class="detail">(Optional)</div>
|
advancedsettings.ldapmanagerdn = LDAP manager DN<br><div class="detail">(Optional)</div>
|
||||||
advancedsettings.ldapmanagerpassword = Password
|
advancedsettings.ldapmanagerpassword = Password
|
||||||
advancedsettings.ldapautoshadowing = Automatically create users in {0}
|
advancedsettings.ldapautoshadowing = Automatically create users in {0}
|
||||||
|
advancedsettings.smtpPort = SMTP port
|
||||||
|
advancedsettings.smtpServer = SMTP server
|
||||||
|
advancedsettings.smtpEncryption = SMTP encryption method
|
||||||
|
advancedsettings.smtpUser = SMTP username
|
||||||
|
advancedsettings.smtpPassword = SMTP password
|
||||||
|
advancedsettings.smtpEncryption.none = None
|
||||||
|
advancedsettings.smtpEncryption.starttls = STARTTLS
|
||||||
|
advancedsettings.smtpEncryption.ssl = SSL/TLS
|
||||||
|
|
||||||
# personalSettings.jsp
|
# personalSettings.jsp
|
||||||
personalsettings.title = Personal settings for {0}
|
personalsettings.title = Personal settings for {0}
|
||||||
@@ -808,6 +816,15 @@ helppopup.autocontrol.text = <p>With this option selected, {0} will automaticall
|
|||||||
in the playlist. Otherwise, you must start and connect the player yourself.</p>
|
in the playlist. Otherwise, you must start and connect the player yourself.</p>
|
||||||
helppopup.dynamicip.title = Dynamic IP address
|
helppopup.dynamicip.title = Dynamic IP address
|
||||||
helppopup.dynamicip.text = <p>Turn off this option if the player uses a static IP address.</p>
|
helppopup.dynamicip.text = <p>Turn off this option if the player uses a static IP address.</p>
|
||||||
|
helppopup.smtpServer.title = SMTP Server
|
||||||
|
helppopup.smtpServer.text = <p>The hostname of the SMTP server. This server will be used to send e-mails to users \
|
||||||
|
who have requested a password reset.</p>
|
||||||
|
helppopup.smtpPort.title = SMTP Port
|
||||||
|
helppopup.smtpPort.text = <p>The server's port that should be connected to for SMTP traffic.</p>
|
||||||
|
helppopup.smtpUser.title = SMTP User
|
||||||
|
helppopup.smtpUser.text = <p>The username to be used to authenticate with the server. Leave empty to connect without authentication.</p>
|
||||||
|
helppopup.smtpEncryption.title = SMTP Encryption
|
||||||
|
helppopup.smtpEncryption.text = <p>The encryption method to be used to connect to the SMTP server. Choose "None" for no encryption.</p>
|
||||||
|
|
||||||
# wap/index.jsp
|
# wap/index.jsp
|
||||||
wap.index.missing = No music found
|
wap.index.missing = No music found
|
||||||
|
|||||||
+6
@@ -339,6 +339,12 @@ advancedsettings.ldapsearchfilter = LDAP zoekfilter
|
|||||||
advancedsettings.ldapmanagerdn = LDAP manager DN<br><div class="detail">(Optioneel)</div>
|
advancedsettings.ldapmanagerdn = LDAP manager DN<br><div class="detail">(Optioneel)</div>
|
||||||
advancedsettings.ldapmanagerpassword = Wachtwoord
|
advancedsettings.ldapmanagerpassword = Wachtwoord
|
||||||
advancedsettings.ldapautoshadowing = Maak automatisch gebruikers aan in {0}
|
advancedsettings.ldapautoshadowing = Maak automatisch gebruikers aan in {0}
|
||||||
|
advancedsettings.smtpPort = SMTP poort
|
||||||
|
advancedsettings.smtpServer = SMTP server
|
||||||
|
advancedsettings.smtpEncryption = SMTP versleutelingsmethode
|
||||||
|
advancedsettings.smtpUser = SMTP gebruikersnaam
|
||||||
|
advancedsettings.smtpPassword = SMTP wachtwoord
|
||||||
|
advancedsettings.smtpEncryption.none = Geen
|
||||||
|
|
||||||
# personalsettings.jsp
|
# personalsettings.jsp
|
||||||
personalsettings.title = Persoonlijke instellingen voor {0}
|
personalsettings.title = Persoonlijke instellingen voor {0}
|
||||||
|
|||||||
@@ -41,6 +41,56 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<table style="white-space:nowrap" class="indent">
|
||||||
|
<tr>
|
||||||
|
<td><fmt:message key="advancedsettings.smtpServer"/></td>
|
||||||
|
<td>
|
||||||
|
<form:input path="smtpServer" size="50"/>
|
||||||
|
<c:import url="helpToolTip.jsp"><c:param name="topic" value="smtpServer"/></c:import>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><fmt:message key="advancedsettings.smtpPort"/></td>
|
||||||
|
<td>
|
||||||
|
<form:input path="smtpPort" size="5"/>
|
||||||
|
<c:import url="helpToolTip.jsp"><c:param name="topic" value="smtpPort"/></c:import>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><fmt:message key="advancedsettings.smtpEncryption"/></td>
|
||||||
|
<td>
|
||||||
|
<form:select path="smtpEncryption" cssStyle="width:20em">
|
||||||
|
<fmt:message key="advancedsettings.smtpEncryption.none" var="none"/>
|
||||||
|
<fmt:message key="advancedsettings.smtpEncryption.starttls" var="starttls"/>
|
||||||
|
<fmt:message key="advancedsettings.smtpEncryption.ssl" var="ssl"/>
|
||||||
|
|
||||||
|
<form:option value="None" label="None"/>
|
||||||
|
<form:option value="STARTTLS" label="STARTTLS"/>
|
||||||
|
<form:option value="SSL/TLS" label="SSL/TLS"/>
|
||||||
|
</form:select>
|
||||||
|
<c:import url="helpToolTip.jsp"><c:param name="topic" value="smtpEncryption"/></c:import>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><fmt:message key="advancedsettings.smtpUser"/></td>
|
||||||
|
<td>
|
||||||
|
<form:input path="smtpUser" size="40"/>
|
||||||
|
<c:import url="helpToolTip.jsp"><c:param name="topic" value="smtpUser"/></c:import>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><fmt:message key="advancedsettings.smtpPassword"/></td>
|
||||||
|
<td>
|
||||||
|
<form:password path="smtpPassword" size="40"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
|
||||||
<table class="indent"><tr><td>
|
<table class="indent"><tr><td>
|
||||||
<form:checkbox path="ldapEnabled" id="ldap" cssClass="checkbox" onclick="enableLdapFields()"/>
|
<form:checkbox path="ldapEnabled" id="ldap" cssClass="checkbox" onclick="enableLdapFields()"/>
|
||||||
<label for="ldap"><fmt:message key="advancedsettings.ldapenabled"/></label>
|
<label for="ldap"><fmt:message key="advancedsettings.ldapenabled"/></label>
|
||||||
|
|||||||
Reference in New Issue
Block a user