media handling fixes, gotten rid of StorageObject, set the default method for blots...
[mir.git] / source / mircoders / localizer / basic / MirBasicOpenPostingLocalizer.java
index 088d96f..e621cc4 100755 (executable)
  */
 package mircoders.localizer.basic;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Vector;
-
 import mir.config.MirPropertiesConfiguration;
 import mir.log.LoggerWrapper;
 import mir.session.Request;
 import mir.session.Session;
 import mir.session.SessionHandler;
+import mircoders.abuse.FilterType;
+import mircoders.abuse.ThrottleFilter;
+import mircoders.abuse.IPFilterType;
+import mircoders.abuse.RegularExpressionFilterType;
 import mircoders.entity.EntityComment;
 import mircoders.entity.EntityContent;
 import mircoders.global.MirGlobal;
 import mircoders.global.ProducerEngine;
-import mircoders.localizer.MirAntiAbuseFilterType;
 import mircoders.localizer.MirLocalizerExc;
 import mircoders.localizer.MirLocalizerFailure;
 import mircoders.localizer.MirOpenPostingLocalizer;
 
+import java.util.*;
+
 public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
   private List afterContentProducerTasks;
   private List afterCommentProducerTasks;
@@ -80,21 +79,29 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
       throw new MirLocalizerFailure(t);
     }
 
-    filterTypes = new Vector();
+    filterTypes = new ArrayList();
     filterTypesMap = new HashMap();
 
-    addSimpleAntiAbuseFilterType(new MirBasicAntiAbuseFilterTypes.RegularExpressionFilter("regexp"));
-    addSimpleAntiAbuseFilterType(new MirBasicAntiAbuseFilterTypes.IPFilter("ip"));
+    addSimpleAntiAbuseFilterType(new RegularExpressionFilterType("regexp"));
+    addSimpleAntiAbuseFilterType(new RegularExpressionFilterType("useragent", false, false,
+        RegularExpressionFilterType.REQUEST_HEADERS, new String[] {"User-Agent"}));
+    addSimpleAntiAbuseFilterType(new IPFilterType("ip"));
+    addSimpleAntiAbuseFilterType(new RegularExpressionFilterType("hostname", false, false,
+        RegularExpressionFilterType.REQUEST_HEADERS, new String[] {"hostname"}));
+    addSimpleAntiAbuseFilterType(new ThrottleFilter("throttle"));
   }
 
   public SessionHandler getOpenSessionHandler(String aSessionType) throws MirLocalizerExc, MirLocalizerFailure  {
-/*    if (aSessionType!=null && aSessionType.equals("email"))
+    if ("email".equals(aSessionType))
       return new MirBasicEmailArticleHandler();
-*/
-    if (aSessionType!=null && aSessionType.equals("comment"))
-      return new MirBasicCommentPostingHandler();
 
-    return new MirBasicArticlePostingHandler();
+    if ("comment".equals(aSessionType))
+      return new MirBasicCommentPostingHandler(configuration.getBoolean("Localizer.OpenSession.PersistentUploadedFiles"));
+
+    if ("translation".equals(aSessionType))
+      return new MirBasicTranslationPostingHandler();
+
+    return new MirBasicArticlePostingHandler(configuration.getBoolean("Localizer.OpenSession.PersistentUploadedFiles"));
   }
 
   public SessionHandler getOpenSessionHandler(Request aRequest, Session aSession) throws MirLocalizerExc, MirLocalizerFailure {
@@ -107,7 +114,18 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
   }
 
   public void afterContentPosting() {
-    MirGlobal.producerEngine().addTasks(afterContentProducerTasks);
+    Iterator i = afterContentProducerTasks.iterator();
+
+    while (i.hasNext()) {
+      ProducerEngine.ProducerTask task = (ProducerEngine.ProducerTask) i.next();
+
+      try {
+        MirGlobal.getProducerEngine().addTask(task);
+      }
+      catch (Throwable t) {
+        logger.error("Error adding content task "+task.getProducer()+"::"+task.getVerb()+": " + t.toString());
+      }
+    }
   }
 
   public void afterContentPosting(EntityContent aContent) {
@@ -119,7 +137,18 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
   }
 
   public void afterCommentPosting() {
-    MirGlobal.producerEngine().addTasks(afterCommentProducerTasks);
+    Iterator i = afterCommentProducerTasks.iterator();
+
+    while (i.hasNext()) {
+      ProducerEngine.ProducerTask task = (ProducerEngine.ProducerTask) i.next();
+
+      try {
+        MirGlobal.getProducerEngine().addTask(task);
+      }
+      catch (Throwable t) {
+        logger.error("Error adding comment task "+task.getProducer()+"::"+task.getVerb()+": " + t.toString());
+      }
+    }
   }
 
   public String generateOnetimePassword() {
@@ -146,7 +175,7 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
     filterTypesMap.remove(aName);
   }
 
-  public void addSimpleAntiAbuseFilterType(MirAntiAbuseFilterType aFilterType) {
+  public void addSimpleAntiAbuseFilterType(FilterType aFilterType) {
     removeSimpleAntiAbuseFilterType(aFilterType.getName());
     filterTypesMap.put(aFilterType.getName(), aFilterType);
     filterTypes.add(aFilterType);