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.abuse.ThrottleFilter;
+import mircoders.abuse.PostingSizeFilterType;
+import mircoders.abuse.URLBlacklistFilterType;
import mircoders.entity.EntityComment;
import mircoders.entity.EntityContent;
import mircoders.global.MirGlobal;
import mircoders.localizer.MirLocalizerFailure;
import mircoders.localizer.MirOpenPostingLocalizer;
-import java.util.*;
+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;
protected LoggerWrapper logger;
protected MirPropertiesConfiguration configuration;
- public MirBasicOpenPostingLocalizer() throws MirLocalizerExc, MirLocalizerFailure {
+ public MirBasicOpenPostingLocalizer() throws MirLocalizerFailure {
logger = new LoggerWrapper("Localizer.Basic.OpenPosting");
try {
addSimpleAntiAbuseFilterType(new IPFilterType("ip"));
addSimpleAntiAbuseFilterType(new RegularExpressionFilterType("hostname", false, false,
RegularExpressionFilterType.REQUEST_HEADERS, new String[] {"hostname"}));
- addSimpleAntiAbuseFilterType(new ThrottleFilter("throttle", 60*60*1000));
+ 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 {
}
}
- 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();
}
long l = System.currentTimeMillis();
l = (l*l*l*l)/random;
- if (l<0)
+ if (l<0) {
l = l * -1;
+ }
String returnString = ""+l;
}
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) {