*/
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 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.IPFilterType;
+import mircoders.abuse.RegularExpressionFilterType;
+import mircoders.abuse.ThrottleFilter;
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;
protected LoggerWrapper logger;
protected MirPropertiesConfiguration configuration;
- public MirBasicOpenPostingLocalizer() throws MirLocalizerExc, MirLocalizerFailure {
+ public MirBasicOpenPostingLocalizer() throws MirLocalizerFailure {
logger = new LoggerWrapper("Localizer.Basic.OpenPosting");
try {
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 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 {
}
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 afterArticlePosting() {
afterContentPosting();
}
+ public void afterArticlePosting(EntityContent anArticle) {
+ afterContentPosting(anArticle);
+ }
+
+ public void afterContentPosting(EntityContent anArticle) {
+ afterArticlePosting();
+ }
+
public void afterCommentPosting(EntityComment aComment) {
afterCommentPosting();
}
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() {
return filterTypes;
}
+ public boolean allowArticlePublication(EntityContent anArticle){
+ return (anArticle!=null) && "t".equals(anArticle.getFieldValue("is_published"));
+ }
+
public void removeSimpleAntiAbuseFilterType(String aName) {
filterTypes.remove(filterTypesMap.get(aName));
filterTypesMap.remove(aName);
}
- public void addSimpleAntiAbuseFilterType(MirAntiAbuseFilterType aFilterType) {
+ public void addSimpleAntiAbuseFilterType(FilterType aFilterType) {
removeSimpleAntiAbuseFilterType(aFilterType.getName());
filterTypesMap.put(aFilterType.getName(), aFilterType);
filterTypes.add(aFilterType);