]> WPIA git - gigi.git/blobdiff - util-testing/org/cacert/gigi/pages/Manager.java
add: allow the test-manager to filter forwarded mails
[gigi.git] / util-testing / org / cacert / gigi / pages / Manager.java
index 21b7e43218d907342d22480b52cd6332809fd7a8..8600785bc4a9da3033342c566f6a93e59ae231d6 100644 (file)
@@ -42,7 +42,7 @@ import org.cacert.gigi.dbObjects.Group;
 import org.cacert.gigi.dbObjects.NamePart;
 import org.cacert.gigi.dbObjects.NamePart.NamePartType;
 import org.cacert.gigi.dbObjects.User;
-import org.cacert.gigi.email.EmailProvider;
+import org.cacert.gigi.email.DelegateMailProvider;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.template.IterableDataset;
 import org.cacert.gigi.output.template.Template;
@@ -140,9 +140,23 @@ public class Manager extends Page {
         return instance;
     }
 
-    public static class MailFetcher extends EmailProvider {
+    public static class MailFetcher extends DelegateMailProvider {
 
-        public MailFetcher(Properties p) {}
+        Pattern[] toForward;
+
+        public MailFetcher(Properties props) {
+            super(props, props.getProperty("emailProvider.manager.target"));
+            String str = props.getProperty("emailProvider.manager.filter");
+            if (str == null) {
+                toForward = new Pattern[0];
+            } else {
+                String[] parts = str.split(" ");
+                toForward = new Pattern[parts.length];
+                for (int i = 0; i < parts.length; i++) {
+                    toForward[i] = Pattern.compile(parts[i]);
+                }
+            }
+        }
 
         @Override
         public String checkEmailServer(int forUid, String address) throws IOException {
@@ -157,6 +171,12 @@ public class Manager extends Page {
                 mails.put(to, hismails = new LinkedList<>());
             }
             hismails.addFirst(subject + "\n" + message);
+            for (int i = 0; i < toForward.length; i++) {
+                if (toForward[i].matcher(to).matches()) {
+                    super.sendMail(to, subject, message, from, replyto, toname, fromname, errorsto, extra);
+                    return;
+                }
+            }
         }
 
     }
@@ -352,9 +372,6 @@ public class Manager extends Page {
                 resp.getWriter().println("error");
             } catch (GigiApiException e) {
                 e.format(resp.getWriter(), Language.getInstance(Locale.ENGLISH));
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-                resp.getWriter().println("interrupted");
             }
 
         } else if (req.getParameter("addExDom") != null) {