X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Flocalizer%2Fbasic%2FMirBasicOpenPostingLocalizer.java;h=e621cc4e0abb97e9c95882638a114614b1a9e218;hb=259a8dadb6be28e48c7ffbd15de888eab066064c;hp=088d96f33ecf934fa35e38caab0f0280dd649db0;hpb=0d512e810fc3838b6787c2a866864481d79c93ca;p=mir.git diff --git a/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java b/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java index 088d96f3..e621cc4e 100755 --- a/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java @@ -29,26 +29,25 @@ */ 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);