*/
package mircoders.localizer.basic;
-import java.util.*;
-import java.util.Random;
-
import mir.config.MirPropertiesConfiguration;
import mir.log.LoggerWrapper;
import mir.session.Request;
import mircoders.entity.EntityContent;
import mircoders.global.MirGlobal;
import mircoders.global.ProducerEngine;
-import mircoders.localizer.*;
+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.*;
public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
private List afterContentProducerTasks;
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));
}
- public SessionHandler getOpenSessionHandler(String aSessionType) {
+ public SessionHandler getOpenSessionHandler(String aSessionType) throws MirLocalizerExc, MirLocalizerFailure {
+ if (aSessionType!=null && aSessionType.equals("email"))
+ return new MirBasicEmailArticleHandler();
+
if (aSessionType!=null && aSessionType.equals("comment"))
- return new MirBasicCommentPostingHandler();
+ return new MirBasicCommentPostingHandler(configuration.getBoolean("Localizer.OpenSession.PersistentUploadedFiles"));
- return new MirBasicArticlePostingHandler();
+ return new MirBasicArticlePostingHandler(configuration.getBoolean("Localizer.OpenSession.PersistentUploadedFiles"));
}
public SessionHandler getOpenSessionHandler(Request aRequest, Session aSession) throws MirLocalizerExc, MirLocalizerFailure {
}
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) {
}
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() {