From 2fe1e2d109fd84ec7a615c2d3d6740ff001dbf40 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 29 Mar 2013 17:47:44 -0400
Subject: [PATCH] Document SNI workaround for Java-based clients
---
src/main/java/com/gitblit/GitBlit.java | 59 ++++++++++++++++++++++++++++++++++-------------------------
1 files changed, 34 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java
index 7c6a535..12815e7 100644
--- a/src/main/java/com/gitblit/GitBlit.java
+++ b/src/main/java/com/gitblit/GitBlit.java
@@ -54,6 +54,8 @@
import javax.mail.Message;
import javax.mail.MessagingException;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMultipart;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
@@ -452,12 +454,13 @@
* advertise alternative urls for Git client repository access.
*
* @param repositoryName
+ * @param userName
* @return list of non-gitblit clone urls
*/
- public List<String> getOtherCloneUrls(String repositoryName) {
+ public List<String> getOtherCloneUrls(String repositoryName, String username) {
List<String> cloneUrls = new ArrayList<String>();
for (String url : settings.getStrings(Keys.web.otherUrls)) {
- cloneUrls.add(MessageFormat.format(url, repositoryName));
+ cloneUrls.add(MessageFormat.format(url, repositoryName, username));
}
return cloneUrls;
}
@@ -1656,6 +1659,11 @@
} else {
model.name = com.gitblit.utils.FileUtils.getRelativePath(basePath, r.getDirectory().getParentFile());
}
+ if (StringUtils.isEmpty(model.name)) {
+ // Repository is NOT located relative to the base folder because it
+ // is symlinked. Use the provided repository name.
+ model.name = repositoryName;
+ }
model.hasCommits = JGitUtils.hasCommits(r);
model.lastChange = JGitUtils.getLastChange(r);
model.projectPath = StringUtils.getFirstPathElement(repositoryName);
@@ -2575,17 +2583,8 @@
}
// send an email, if possible
- try {
- Message message = mailExecutor.createMessageForAdministrators();
- if (message != null) {
- message.setSubject("Federation proposal from " + proposal.url);
- message.setText("Please review the proposal @ " + gitblitUrl + "/proposal/"
- + proposal.token);
- mailExecutor.queue(message);
- }
- } catch (Throwable t) {
- logger.error("Failed to notify administrators of proposal", t);
- }
+ sendMailToAdministrators("Federation proposal from " + proposal.url,
+ "Please review the proposal @ " + gitblitUrl + "/proposal/" + proposal.token);
return true;
}
@@ -2872,16 +2871,8 @@
* @param message
*/
public void sendMailToAdministrators(String subject, String message) {
- try {
- Message mail = mailExecutor.createMessageForAdministrators();
- if (mail != null) {
- mail.setSubject(subject);
- mail.setText(message);
- mailExecutor.queue(mail);
- }
- } catch (MessagingException e) {
- logger.error("Messaging error", e);
- }
+ List<String> toAddresses = settings.getStrings(Keys.mail.adminAddresses);
+ sendMail(subject, message, toAddresses);
}
/**
@@ -2911,7 +2902,16 @@
Message mail = mailExecutor.createMessage(toAddresses);
if (mail != null) {
mail.setSubject(subject);
- mail.setText(message);
+
+ MimeBodyPart messagePart = new MimeBodyPart();
+ messagePart.setText(message, "utf-8");
+ messagePart.setHeader("Content-Type", "text/plain; charset=\"utf-8\"");
+ messagePart.setHeader("Content-Transfer-Encoding", "quoted-printable");
+
+ MimeMultipart multiPart = new MimeMultipart();
+ multiPart.addBodyPart(messagePart);
+ mail.setContent(multiPart);
+
mailExecutor.queue(mail);
}
} catch (MessagingException e) {
@@ -2946,7 +2946,16 @@
Message mail = mailExecutor.createMessage(toAddresses);
if (mail != null) {
mail.setSubject(subject);
- mail.setContent(message, "text/html");
+
+ MimeBodyPart messagePart = new MimeBodyPart();
+ messagePart.setText(message, "utf-8");
+ messagePart.setHeader("Content-Type", "text/html; charset=\"utf-8\"");
+ messagePart.setHeader("Content-Transfer-Encoding", "quoted-printable");
+
+ MimeMultipart multiPart = new MimeMultipart();
+ multiPart.addBodyPart(messagePart);
+ mail.setContent(multiPart);
+
mailExecutor.queue(mail);
}
} catch (MessagingException e) {
--
Gitblit v1.9.1