added:
[mir.git] / source / mircoders / localizer / basic / MirBasicOpenPostingLocalizer.java
index 0009383..a851ac0 100755 (executable)
  */
 package mircoders.localizer.basic;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
 import mir.config.MirPropertiesConfiguration;
 import mir.log.LoggerWrapper;
 import mir.session.Request;
@@ -45,6 +38,8 @@ import mircoders.abuse.FilterType;
 import mircoders.abuse.IPFilterType;
 import mircoders.abuse.RegularExpressionFilterType;
 import mircoders.abuse.ThrottleFilter;
+import mircoders.abuse.PostingSizeFilterType;
+import mircoders.abuse.URLBlacklistFilterType;
 import mircoders.entity.EntityComment;
 import mircoders.entity.EntityContent;
 import mircoders.global.MirGlobal;
@@ -53,6 +48,15 @@ import mircoders.localizer.MirLocalizerExc;
 import mircoders.localizer.MirLocalizerFailure;
 import mircoders.localizer.MirOpenPostingLocalizer;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Arrays;
+
 public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
   private List afterContentProducerTasks;
   private List afterCommentProducerTasks;
@@ -61,7 +65,7 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
   protected LoggerWrapper logger;
   protected MirPropertiesConfiguration configuration;
 
-  public MirBasicOpenPostingLocalizer() throws MirLocalizerExc, MirLocalizerFailure {
+  public MirBasicOpenPostingLocalizer() throws MirLocalizerFailure {
     logger = new LoggerWrapper("Localizer.Basic.OpenPosting");
 
     try {
@@ -94,6 +98,9 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
     addSimpleAntiAbuseFilterType(new RegularExpressionFilterType("hostname", false, false,
         RegularExpressionFilterType.REQUEST_HEADERS, new String[] {"hostname"}));
     addSimpleAntiAbuseFilterType(new ThrottleFilter("throttle"));
+    addSimpleAntiAbuseFilterType(new PostingSizeFilterType("size"));
+    addSimpleAntiAbuseFilterType(new URLBlacklistFilterType("urlblacklist",
+        Arrays.asList(MirGlobal.config().getStringArray("Mir.URLBlacklistFilter.WhiteList"))));
   }
 
   public SessionHandler getOpenSessionHandler(String aSessionType) throws MirLocalizerExc, MirLocalizerFailure  {
@@ -133,10 +140,18 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
     }
   }
 
-  public void afterContentPosting(EntityContent aContent) {
+  public void afterArticlePosting() {
     afterContentPosting();
   }
 
+  public void afterArticlePosting(EntityContent anArticle) {
+    afterContentPosting(anArticle);
+  }
+
+  public void afterContentPosting(EntityContent anArticle) {
+    afterArticlePosting();
+  }
+
   public void afterCommentPosting(EntityComment aComment) {
     afterCommentPosting();
   }
@@ -163,8 +178,9 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
     long l = System.currentTimeMillis();
 
     l = (l*l*l*l)/random;
-    if (l<0)
+    if (l<0) {
       l = l * -1;
+    }
 
     String returnString = ""+l;
 
@@ -172,7 +188,11 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
   }
 
   public List getAntiAbuseFilterTypes() {
-    return filterTypes;
+    return Collections.unmodifiableList(filterTypes);
+  }
+
+  public boolean allowArticlePublication(EntityContent anArticle){
+    return anArticle != null && "1".equals(anArticle.getFieldValue("is_published"));
   }
 
   public void removeSimpleAntiAbuseFilterType(String aName) {