summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2009-06-02 09:09:50 -0700
committerShawn O. Pearce <sop@google.com>2009-06-02 09:09:50 -0700
commit2e4573b46409fc7481dbbf64b394bbc2e1ccff27 (patch)
treeed29528cb1795192676be6f3b5485633ed551a27
parentf52f33d3e4e465ea822ff1a1c3a988a194551db1 (diff)
Add sendemail.enable to disable email output
Some installations might be unable to connect to a SMTP relay, but are still useful through the web page UI, provided that reviewers check their dashboard periodically. In such cases we can't open a socket to a SMTP server, so we should bypass any email sending code paths to prevent errors from filling up the server logs. Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--Documentation/config-gerrit.txt7
-rw-r--r--src/main/java/com/google/gerrit/client/account/ContactPanel.java14
-rw-r--r--src/main/java/com/google/gerrit/client/data/GerritConfig.java9
-rw-r--r--src/main/java/com/google/gerrit/server/GerritServer.java9
-rw-r--r--src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java6
5 files changed, 42 insertions, 3 deletions
diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt
index 0ecf2aa105..21f621851b 100644
--- a/Documentation/config-gerrit.txt
+++ b/Documentation/config-gerrit.txt
@@ -372,6 +372,13 @@ By default, false, as not all instances will deploy repo.
Section sendemail
~~~~~~~~~~~~~~~~~
+sendemail.enable::
++
+If false Gerrit will not send email messages, for any reason,
+and all other properties of section sendemail are ignored.
++
+By default, true, allowing notifications to be sent.
+
sendemail.smtpServer::
+
Hostname (or IP address) of a SMTP server that will relay
diff --git a/src/main/java/com/google/gerrit/client/account/ContactPanel.java b/src/main/java/com/google/gerrit/client/account/ContactPanel.java
index 461868f45c..ee98959c9e 100644
--- a/src/main/java/com/google/gerrit/client/account/ContactPanel.java
+++ b/src/main/java/com/google/gerrit/client/account/ContactPanel.java
@@ -137,7 +137,9 @@ class ContactPanel extends Composite {
});
final FlowPanel emailLine = new FlowPanel();
emailLine.add(emailPick);
- emailLine.add(registerNewEmail);
+ if (Common.getGerritConfig().isAllowRegisterNewEmail()) {
+ emailLine.add(registerNewEmail);
+ }
row(infoPlainText, 0, Util.C.contactFieldFullName(), nameTxt);
row(infoPlainText, 1, Util.C.contactFieldEmail(), emailLine);
@@ -261,8 +263,10 @@ class ContactPanel extends Composite {
if (emailPick.getItemCount() > 0) {
emailPick.setVisible(true);
emailPick.setEnabled(true);
- emailPick.addItem("... " + Util.C.buttonOpenRegisterNewEmail() + " ",
- Util.C.buttonOpenRegisterNewEmail());
+ if (Common.getGerritConfig().isAllowRegisterNewEmail()) {
+ final String t = Util.C.buttonOpenRegisterNewEmail();
+ emailPick.addItem("... " + t + " ", t);
+ }
} else {
emailPick.setVisible(false);
}
@@ -299,6 +303,10 @@ class ContactPanel extends Composite {
}
private void doRegisterNewEmail() {
+ if (!Common.getGerritConfig().isAllowRegisterNewEmail()) {
+ return;
+ }
+
final AutoCenterDialogBox box = new AutoCenterDialogBox(true, true);
final VerticalPanel body = new VerticalPanel();
diff --git a/src/main/java/com/google/gerrit/client/data/GerritConfig.java b/src/main/java/com/google/gerrit/client/data/GerritConfig.java
index d6d1eec2d5..f3414c277b 100644
--- a/src/main/java/com/google/gerrit/client/data/GerritConfig.java
+++ b/src/main/java/com/google/gerrit/client/data/GerritConfig.java
@@ -29,6 +29,7 @@ public class GerritConfig implements Cloneable {
protected List<ApprovalType> actionTypes;
protected boolean useContributorAgreements;
protected boolean useContactInfo;
+ protected boolean allowRegisterNewEmail;
protected SystemConfig.LoginType loginType;
protected boolean useRepoDownload;
protected String gitDaemonUrl;
@@ -110,6 +111,14 @@ public class GerritConfig implements Cloneable {
useContactInfo = r;
}
+ public boolean isAllowRegisterNewEmail() {
+ return allowRegisterNewEmail;
+ }
+
+ public void setAllowRegisterNewEmail(final boolean r) {
+ allowRegisterNewEmail = r;
+ }
+
public ApprovalType getApprovalType(final ApprovalCategory.Id id) {
if (byCategoryId == null) {
byCategoryId = new HashMap<ApprovalCategory.Id, ApprovalType>();
diff --git a/src/main/java/com/google/gerrit/server/GerritServer.java b/src/main/java/com/google/gerrit/server/GerritServer.java
index 11c185787b..40232bb954 100644
--- a/src/main/java/com/google/gerrit/server/GerritServer.java
+++ b/src/main/java/com/google/gerrit/server/GerritServer.java
@@ -678,6 +678,7 @@ public class GerritServer {
r.setUseRepoDownload(getGerritConfig().getBoolean("repo", null,
"showdownloadcommand", false));
r.setUseContactInfo(getContactStoreURL() != null);
+ r.setAllowRegisterNewEmail(isOutgoingMailEnabled());
r.setLoginType(getLoginType());
final String gitwebUrl = getGerritConfig().getString("gitweb", null, "url");
@@ -693,7 +694,15 @@ public class GerritServer {
Common.setGerritConfig(r);
}
+ public boolean isOutgoingMailEnabled() {
+ return getGerritConfig().getBoolean("sendemail", null, "enable", true);
+ }
+
public SMTPClient createOutgoingMail() throws EmailException {
+ if (!isOutgoingMailEnabled()) {
+ throw new EmailException("Sending email is disabled");
+ }
+
final RepositoryConfig cfg = getGerritConfig();
String smtpHost = cfg.getString("sendemail", null, "smtpserver");
if (smtpHost == null) {
diff --git a/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java b/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java
index 042ead384b..c3d5799b68 100644
--- a/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java
+++ b/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java
@@ -112,6 +112,12 @@ public abstract class OutgoingEmail {
* @throws EmailException
*/
public void send() throws EmailException {
+ if (!server.isOutgoingMailEnabled()) {
+ // Server has explicitly disabled email sending.
+ //
+ return;
+ }
+
init();
format();
if (shouldSendMessage()) {