From 3a9d1c15a4fde376b1cd2f8c01543d9aee8a414d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Tue, 13 Oct 2015 12:41:28 +0200 Subject: [PATCH] upd: add properties "emailProvider.smtpHost" + "emailProvider.smtpPort" to allow setting a target SMTP server. --- src/org/cacert/gigi/dbObjects/Certificate.java | 2 +- src/org/cacert/gigi/email/Sendmail.java | 11 +++++++++-- tests/org/cacert/gigi/email/TestSendmail.java | 3 +++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/org/cacert/gigi/dbObjects/Certificate.java b/src/org/cacert/gigi/dbObjects/Certificate.java index ac8d5aab..7cbdeb59 100644 --- a/src/org/cacert/gigi/dbObjects/Certificate.java +++ b/src/org/cacert/gigi/dbObjects/Certificate.java @@ -374,7 +374,7 @@ public class Certificate { // TODO caching? try { - String concat = "group_concat(concat('/', `name`, '=', REPLACE(REPLACE(value, '\\\\', '\\\\\\\\'), '/', '\\\\/')))"; + String concat = "string_agg(concat('/', `name`, '=', REPLACE(REPLACE(value, '\\\\', '\\\\\\\\'), '/', '\\\\/')), '')"; GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT certs.id, " + concat + " as subject, md, csr_name, crt_name,memid, profile, certs.serial FROM `certs` LEFT JOIN `certAvas` ON `certAvas`.`certId`=certs.id WHERE certs.id=? GROUP BY certs.id"); ps.setInt(1, id); GigiResultSet rs = ps.executeQuery(); diff --git a/src/org/cacert/gigi/email/Sendmail.java b/src/org/cacert/gigi/email/Sendmail.java index 285eee6b..78d5a0ba 100644 --- a/src/org/cacert/gigi/email/Sendmail.java +++ b/src/org/cacert/gigi/email/Sendmail.java @@ -19,7 +19,14 @@ import org.cacert.gigi.util.ServerConstants; public class Sendmail extends EmailProvider { - protected Sendmail(Properties props) {} + private final String targetHost; + + private final int targetPort; + + protected Sendmail(Properties props) { + targetHost = props.getProperty("emailProvider.smtpHost", "localhost"); + targetPort = Integer.parseInt(props.getProperty("emailProvider.smtpPort", "25")); + } private static final Pattern NON_ASCII = Pattern.compile("[^a-zA-Z0-9 .-\\[\\]!_@]"); @@ -28,7 +35,7 @@ public class Sendmail extends EmailProvider { String[] bits = from.split(","); - try (Socket smtp = new Socket("localhost", 25); PrintWriter out = new PrintWriter(new OutputStreamWriter(smtp.getOutputStream(), "UTF-8")); BufferedReader in = new BufferedReader(new InputStreamReader(smtp.getInputStream(), "UTF-8"));) { + try (Socket smtp = new Socket(targetHost, targetPort); PrintWriter out = new PrintWriter(new OutputStreamWriter(smtp.getOutputStream(), "UTF-8")); BufferedReader in = new BufferedReader(new InputStreamReader(smtp.getInputStream(), "UTF-8"));) { readSMTPResponse(in, 220); out.print("HELO www.cacert.org\r\n"); out.flush(); diff --git a/tests/org/cacert/gigi/email/TestSendmail.java b/tests/org/cacert/gigi/email/TestSendmail.java index 83cb9aaa..3535abb0 100644 --- a/tests/org/cacert/gigi/email/TestSendmail.java +++ b/tests/org/cacert/gigi/email/TestSendmail.java @@ -107,8 +107,11 @@ public class TestSendmail extends ConfiguredTest { } private void initSelfsign() throws GeneralSecurityException, CertificateException, IOException, NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, SignatureException { + assumeNotNull(getTestProps().getProperty("emailProvider.smtpHost"), getTestProps().getProperty("emailProvider.smtpPort")); Properties prop = new Properties(); prop.setProperty("emailProvider", "org.cacert.gigi.email.Sendmail"); + prop.setProperty("emailProvider.smtpHost", getTestProps().getProperty("emailProvider.smtpHost")); + prop.setProperty("emailProvider.smtpPort", getTestProps().getProperty("emailProvider.smtpPort")); KeyPair kp = generateKeypair(); X509CertInfo info = new X509CertInfo(); // Add all mandatory attributes -- 2.39.2