diff options
author | Shawn O. Pearce <sop@google.com> | 2009-06-02 09:09:50 -0700 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2009-06-02 09:09:50 -0700 |
commit | 2e4573b46409fc7481dbbf64b394bbc2e1ccff27 (patch) | |
tree | ed29528cb1795192676be6f3b5485633ed551a27 | |
parent | f52f33d3e4e465ea822ff1a1c3a988a194551db1 (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>
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()) { |