X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Flocalizer%2Fbasic%2FMirBasicOpenPostingLocalizer.java;h=a851ac08d4fcb258b126c4dee0e7d9be989b9893;hb=42680c1f9fe3250bcbd0f9ed5d9dee6188333b15;hp=d5a898c81c85d1939fc8508fbf61a6584a35f59e;hpb=e6533008ab22fdde08c4046313bb98fdedd22508;p=mir.git diff --git a/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java b/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java index d5a898c8..a851ac08 100755 --- a/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java @@ -34,17 +34,28 @@ import mir.log.LoggerWrapper; import mir.session.Request; import mir.session.Session; import mir.session.SessionHandler; +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; import mircoders.global.ProducerEngine; -import mircoders.localizer.MirAntiAbuseFilterType; import mircoders.localizer.MirLocalizerExc; import mircoders.localizer.MirLocalizerFailure; import mircoders.localizer.MirOpenPostingLocalizer; -import mircoders.localizer.basic.filters.ThrottleFilter; -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; @@ -54,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 { @@ -77,26 +88,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.RegularExpressionFilter("useragent", false, false, - MirBasicAntiAbuseFilterTypes.RegularExpressionFilter.REQUEST_HEADERS, new String[] {"User-Agent"})); - addSimpleAntiAbuseFilterType(new MirBasicAntiAbuseFilterTypes.IPFilter("ip")); - addSimpleAntiAbuseFilterType(new MirBasicAntiAbuseFilterTypes.RegularExpressionFilter("hostname", false, false, - MirBasicAntiAbuseFilterTypes.RegularExpressionFilter.REQUEST_HEADERS, new String[] {"hostname"})); - addSimpleAntiAbuseFilterType(new ThrottleFilter("throttle", 60*60*1000)); + 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")); + addSimpleAntiAbuseFilterType(new PostingSizeFilterType("size")); + addSimpleAntiAbuseFilterType(new URLBlacklistFilterType("urlblacklist", + Arrays.asList(MirGlobal.config().getStringArray("Mir.URLBlacklistFilter.WhiteList")))); } 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")) + if ("comment".equals(aSessionType)) return new MirBasicCommentPostingHandler(configuration.getBoolean("Localizer.OpenSession.PersistentUploadedFiles")); - if (aSessionType.equals("translation")) + if ("translation".equals(aSessionType)) return new MirBasicTranslationPostingHandler(); return new MirBasicArticlePostingHandler(configuration.getBoolean("Localizer.OpenSession.PersistentUploadedFiles")); @@ -126,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(); } @@ -156,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; @@ -165,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) { @@ -173,7 +200,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);