From c214e75a013df44fb221f5e1a2d4c072247b87ed Mon Sep 17 00:00:00 2001 From: zapata Date: Thu, 8 Aug 2002 05:40:34 +0000 Subject: [PATCH] entered some unwanted posting protection for indymedia.nl. Extended the localization features in order to do that. --- source/mir/util/ParameterExpander.java | 2 +- .../localizer/MirOpenPostingLocalizer.java | 6 +- .../basic/MirBasicOpenPostingLocalizer.java | 9 +++ .../mircoders/servlet/ServletModuleOpenIndy.java | 11 +++- .../indymedia.nl/IndyNLOpenPostingLocalizer.java | 69 +++++++++++++++++++++- 5 files changed, 88 insertions(+), 9 deletions(-) diff --git a/source/mir/util/ParameterExpander.java b/source/mir/util/ParameterExpander.java index 0a5876b0..c377fc3c 100755 --- a/source/mir/util/ParameterExpander.java +++ b/source/mir/util/ParameterExpander.java @@ -10,7 +10,7 @@ public class ParameterExpander { final static String DEFAULT_KEY = "(default)"; final static String NODE_SEPARATOR = "."; - private static List splitString(String aString, String aSeparator) { + public static List splitString(String aString, String aSeparator) { List result= new Vector(); int previousPosition = 0; int position; diff --git a/source/mircoders/localizer/MirOpenPostingLocalizer.java b/source/mircoders/localizer/MirOpenPostingLocalizer.java index 0f818c9d..d9add8c8 100755 --- a/source/mircoders/localizer/MirOpenPostingLocalizer.java +++ b/source/mircoders/localizer/MirOpenPostingLocalizer.java @@ -3,9 +3,11 @@ package mircoders.localizer; import java.util.*; import javax.servlet.http.*; +import mircoders.entity.*; + public interface MirOpenPostingLocalizer { - public void afterContentPosting(); - public void afterCommentPosting(); + public void afterContentPosting(EntityContent aContent); + public void afterCommentPosting(EntityComment aComment); public String chooseOpenPostingLanguage(HttpServletRequest req); } diff --git a/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java b/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java index 955c3930..5e19a347 100755 --- a/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java @@ -6,6 +6,7 @@ import javax.servlet.http.*; import mir.misc.*; import mircoders.global.*; import mircoders.localizer.*; +import mircoders.entity.*; public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer { protected static Logfile logger = Logfile.getInstance( MirGlobal.getConfigProperty("Home") + "/" + MirGlobal.getConfigProperty("Mir.Localizer.Logfile")); @@ -21,11 +22,19 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer { MirGlobal.producerEngine().addJob("synchronization", "run"); } + public void afterContentPosting(EntityContent aContent) { + afterContentPosting(); + } + public void afterCommentPosting() { MirGlobal.producerEngine().addJob("content", "new"); MirGlobal.producerEngine().addJob("synchronization", "run"); } + public void afterCommentPosting(EntityComment aComment) { + afterCommentPosting(); + } + public String chooseOpenPostingLanguage(HttpServletRequest req) { Locale locale = req.getLocale(); diff --git a/source/mircoders/servlet/ServletModuleOpenIndy.java b/source/mircoders/servlet/ServletModuleOpenIndy.java index 32ad0631..4d275cec 100755 --- a/source/mircoders/servlet/ServletModuleOpenIndy.java +++ b/source/mircoders/servlet/ServletModuleOpenIndy.java @@ -44,6 +44,7 @@ public class ServletModuleOpenIndy extends ServletModule private String postingFormTemplate, postingFormDoneTemplate, postingFormDupeTemplate; private ModuleContent contentModule; + private ModuleComment commentModule; private ModuleImages imageModule; private ModuleTopics themenModule; private String directOp ="yes"; @@ -157,8 +158,11 @@ public class ServletModuleOpenIndy extends ServletModule } else { DatabaseContent.getInstance().setUnproduced("id="+aid); - MirGlobal.localizer().openPostings().afterCommentPosting(); - + + EntityComment comment = (EntityComment) DatabaseComment.getInstance().selectById(id); + + MirGlobal.localizer().openPostings().afterCommentPosting(comment); + } // redirecting to url @@ -499,12 +503,13 @@ public class ServletModuleOpenIndy extends ServletModule contentEnt.setValueForProperty("is_published","1"); contentEnt.update(); + MirGlobal.localizer().openPostings().afterContentPosting(contentEnt); + //dereference mp. -mh mp=null; - MirGlobal.localizer().openPostings().afterContentPosting(); } catch (IOException e) { throw new ServletModuleException("IOException: "+ e.toString());} catch (StorageObjectException e) { throw new ServletModuleException("StorageObjectException" + e.toString());} diff --git a/source/mirlocal/indymedia.nl/IndyNLOpenPostingLocalizer.java b/source/mirlocal/indymedia.nl/IndyNLOpenPostingLocalizer.java index 537d7b1d..c3860840 100755 --- a/source/mirlocal/indymedia.nl/IndyNLOpenPostingLocalizer.java +++ b/source/mirlocal/indymedia.nl/IndyNLOpenPostingLocalizer.java @@ -1,19 +1,82 @@ package mirlocal.indymedia.nl; +import java.util.*; +import mir.util.*; +import mir.entity.*; +import mir.storage.*; import mircoders.localizer.*; import mircoders.global.*; import mircoders.localizer.basic.*; +import mircoders.entity.*; +import mircoders.storage.*; public class IndyNLOpenPostingLocalizer extends MirBasicOpenPostingLocalizer { + +// private static String[] CONTENT_FIELDS_TO_CHECK = { "content_data", "description", "title", "creator" }; - public void afterContentPosting() { + + public void afterContentPosting(EntityContent aContent) { + if (checkEntity(aContent)) { + try { + aContent.setValueForProperty("to_article_type", "8"); + aContent.update(); + } + catch (Throwable t) { + } + } + MirGlobal.producerEngine().addJob("media", "new"); MirGlobal.producerEngine().addJob("content", "new"); MirGlobal.producerEngine().addJob("startpage", "(default)"); MirGlobal.producerEngine().addJob("synchronization", "run"); } - public void afterCommentPosting() { - super.afterCommentPosting(); + public void afterCommentPosting(EntityComment aComment) { + if (checkEntity(aComment)) { + try { + aComment.setValueForProperty("is_published", "0"); + aComment.update(); + } + catch (Throwable t) { + } + } + super.afterCommentPosting(aComment); + } + + private boolean checkEntity(Entity anEntity) { + String forbiddenWordsSpecification = MirGlobal.getConfigPropertyWithDefault("IndymediaNL.forbiddenExpressions", ""); + List forbiddenWords = ParameterExpander.splitString(forbiddenWordsSpecification, ":"); + Iterator i, j; + boolean found = false; + String field; + + + try { + j = anEntity.getFields().iterator(); + while (!found && j.hasNext()) { + field = anEntity.getValue((String) j.next()); + + if (field!=null) { + field=field.toLowerCase(); + i = forbiddenWords.iterator(); + while (!found && i.hasNext()) { + String forbiddenWord = (String) i.next(); + + try { + if (field.indexOf(forbiddenWord.toLowerCase())>=0) { + found = true; + } + } + catch (Throwable t) { + logger.printError("Error while matching " + field + " to " + forbiddenWord + ": " + t.toString()); + } + } + } + } + } + catch (Throwable t) { + } + + return found; } } -- 2.11.0