From f0409c63fad3833d4a2d4d8c3fd60f0ab829b299 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Thu, 28 Jul 2016 18:34:27 +0200 Subject: [PATCH] upd: transform existing mails into mail templates Change-Id: Ib0e9174ccf2cca11b5dba11e23da3af12bb7494c --- .../dbObjects/SupportNotificationMail.templ | 9 +++++ .../cacert/gigi/dbObjects/SupportedUser.java | 24 ++++++------- src/org/cacert/gigi/email/MailProbe.java | 22 ++++-------- src/org/cacert/gigi/email/MailProbe.templ | 9 +++++ .../cacert/gigi/pages/PasswordResetMail.templ | 12 +++++++ .../cacert/gigi/pages/PasswordResetPage.java | 34 ++++++------------- 6 files changed, 58 insertions(+), 52 deletions(-) create mode 100644 src/org/cacert/gigi/dbObjects/SupportNotificationMail.templ create mode 100644 src/org/cacert/gigi/email/MailProbe.templ create mode 100644 src/org/cacert/gigi/pages/PasswordResetMail.templ diff --git a/src/org/cacert/gigi/dbObjects/SupportNotificationMail.templ b/src/org/cacert/gigi/dbObjects/SupportNotificationMail.templ new file mode 100644 index 00000000..42254b73 --- /dev/null +++ b/src/org/cacert/gigi/dbObjects/SupportNotificationMail.templ @@ -0,0 +1,9 @@ +Subject: [] + +, + + + + + +RA DB diff --git a/src/org/cacert/gigi/dbObjects/SupportedUser.java b/src/org/cacert/gigi/dbObjects/SupportedUser.java index 193a32b0..975ef9b5 100644 --- a/src/org/cacert/gigi/dbObjects/SupportedUser.java +++ b/src/org/cacert/gigi/dbObjects/SupportedUser.java @@ -1,18 +1,15 @@ package org.cacert.gigi.dbObjects; import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; import java.util.HashMap; import java.util.Locale; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.database.GigiPreparedStatement; import org.cacert.gigi.dbObjects.Certificate.CertificateStatus; -import org.cacert.gigi.email.SendMail; import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.template.MailTemplate; import org.cacert.gigi.output.template.Outputable; -import org.cacert.gigi.output.template.SprintfCommand; import org.cacert.gigi.util.DayDate; import org.cacert.gigi.util.ServerConstants; @@ -87,19 +84,18 @@ public class SupportedUser { target.revokeGroup(supporter, toMod); } + private static final MailTemplate supportNotification = new MailTemplate(SupportedUser.class.getResource("SupportNotificationMail.templ")); + public void sendSupportNotification(String subject, Outputable message) { try { - StringWriter sw = new StringWriter(); - PrintWriter outMail = new PrintWriter(sw); - outMail.print("Hi," + "\n\n"); - SprintfCommand.createSimple("supporter {0} triggered:", supporter.getPreferredName().toString()).output(outMail, Language.getInstance(Locale.ENGLISH), new HashMap()); - outMail.print("\n\n"); - message.output(outMail, Language.getInstance(Locale.ENGLISH), new HashMap()); - outMail.print("\n\n"); - outMail.print("RA DB"); - outMail.close(); + HashMap vars = new HashMap<>(); + vars.put("supporter", supporter.getPreferredName().toString()); + vars.put("action", message); + vars.put("ticket", this.getTicket()); + vars.put("subject", subject); + String supportemailaddress = "support@" + ServerConstants.getWwwHostName().replaceFirst("^www\\.", ""); - SendMail.getInstance().sendMail(supportemailaddress, "[" + this.getTicket() + "] RA DB " + subject, sw.toString(), supportemailaddress, null, null, null, null, false); + supportNotification.sendMail(Language.getInstance(Locale.ENGLISH), vars, supportemailaddress); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/org/cacert/gigi/email/MailProbe.java b/src/org/cacert/gigi/email/MailProbe.java index 987c036e..4da2648a 100644 --- a/src/org/cacert/gigi/email/MailProbe.java +++ b/src/org/cacert/gigi/email/MailProbe.java @@ -1,28 +1,20 @@ package org.cacert.gigi.email; import java.io.IOException; +import java.util.HashMap; import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.template.MailTemplate; import org.cacert.gigi.util.ServerConstants; public class MailProbe { + private static final MailTemplate mailProbe = new MailTemplate(MailProbe.class.getResource("MailProbe.templ")); + public static void sendMailProbe(Language l, String type, int id, String hash, String address) throws IOException { - StringBuffer body = new StringBuffer(); - body.append(l.getTranslation("Thanks for signing up with SomeCA.org, below is the link you need to open to verify your account. Once your account is verified you will be able to start issuing certificates till your hearts' content!")); - body.append("\n\nhttps://"); - body.append(ServerConstants.getWwwHostNamePortSecure()); - body.append("/verify?type="); - body.append(type); - body.append("&id="); - body.append(id); - body.append("&hash="); - body.append(hash); - body.append("\n\n"); - body.append(l.getTranslation("Best regards")); - body.append("\n"); - body.append(l.getTranslation("SomeCA.org Support!")); - EmailProvider.getInstance().sendMail(address, "[SomeCA.org] " + l.getTranslation("Mail Probe"), body.toString(), "support@cacert.org", null, null, null, null, false); + HashMap vars = new HashMap<>(); + vars.put("link", "https://" + ServerConstants.getWwwHostNamePortSecure() + "/verify?type=" + type + "&id=" + id + "&hash=" + hash); + mailProbe.sendMail(l, vars, address); } } diff --git a/src/org/cacert/gigi/email/MailProbe.templ b/src/org/cacert/gigi/email/MailProbe.templ new file mode 100644 index 00000000..c6f818ff --- /dev/null +++ b/src/org/cacert/gigi/email/MailProbe.templ @@ -0,0 +1,9 @@ +Subject: + + + + + + + + diff --git a/src/org/cacert/gigi/pages/PasswordResetMail.templ b/src/org/cacert/gigi/pages/PasswordResetMail.templ new file mode 100644 index 00000000..dd274071 --- /dev/null +++ b/src/org/cacert/gigi/pages/PasswordResetMail.templ @@ -0,0 +1,12 @@ +Subject: + +, + + + + + + + + + diff --git a/src/org/cacert/gigi/pages/PasswordResetPage.java b/src/org/cacert/gigi/pages/PasswordResetPage.java index 1be5643c..45abb59c 100644 --- a/src/org/cacert/gigi/pages/PasswordResetPage.java +++ b/src/org/cacert/gigi/pages/PasswordResetPage.java @@ -2,7 +2,6 @@ package org.cacert.gigi.pages; import java.io.IOException; import java.io.PrintWriter; -import java.io.StringWriter; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; @@ -13,10 +12,9 @@ import javax.servlet.http.HttpServletResponse; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.database.GigiPreparedStatement; import org.cacert.gigi.dbObjects.User; -import org.cacert.gigi.email.SendMail; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.Form; -import org.cacert.gigi.output.template.SprintfCommand; +import org.cacert.gigi.output.template.MailTemplate; import org.cacert.gigi.output.template.Template; import org.cacert.gigi.util.AuthorizationContext; import org.cacert.gigi.util.RandomToken; @@ -114,30 +112,20 @@ public class PasswordResetPage extends Page { return true; } + private static final MailTemplate passwordResetMail = new MailTemplate(PasswordResetPage.class.getResource("PasswordResetMail.templ")); + public static void initPasswordResetProcess(PrintWriter out, User targetUser, HttpServletRequest req, String aword, Language l, String method, String subject) { String ptok = RandomToken.generateToken(32); int id = targetUser.generatePasswordResetTicket(Page.getUser(req), ptok, aword); try { - StringWriter sw = new StringWriter(); - PrintWriter outMail = new PrintWriter(sw); - outMail.print(l.getTranslation("Hi,") + "\n\n"); - outMail.print(method); - outMail.print("\n\nhttps://"); - outMail.print(ServerConstants.getWwwHostNamePortSecure() + PasswordResetPage.PATH); - outMail.print("?id="); - outMail.print(id); - outMail.print("&token="); - outMail.print(URLEncoder.encode(ptok, "UTF-8")); - outMail.print("\n"); - outMail.print("\n"); - SprintfCommand.createSimple("This process will expire in {0} hours.", Integer.toString(HOUR_MAX)).output(outMail, l, new HashMap()); - outMail.print("\n"); - outMail.print("\n"); - outMail.print(l.getTranslation("Best regards")); - outMail.print("\n"); - outMail.print(l.getTranslation("SomeCA.org Support!")); - outMail.close(); - SendMail.getInstance().sendMail(Page.getUser(req).getEmail(), "[SomeCA.org] " + subject, sw.toString(), "support@cacert.org", null, null, null, null, false); + HashMap vars = new HashMap<>(); + vars.put("subject", subject); + vars.put("method", method); + vars.put("link", "https://" + ServerConstants.getWwwHostNamePortSecure() + PasswordResetPage.PATH // + + "?id=" + id + "&token=" + URLEncoder.encode(ptok, "UTF-8")); + vars.put("hour_max", HOUR_MAX); + + passwordResetMail.sendMail(l, vars, Page.getUser(req).getEmail()); out.println(Page.getLanguage(req).getTranslation("Password reset successful.")); } catch (IOException e) { e.printStackTrace(); -- 2.39.2