import mir.util.DateTimeFunctions;
import mir.util.GeneratorFormatAdapters;
import mir.util.StringRoutines;
+import mir.util.EntityUtility;
import mircoders.entity.EntityComment;
import mircoders.entity.EntityContent;
import mircoders.localizer.MirAdminInterfaceLocalizer;
private String articleBlockAction;
private String commentBlockAction;
private List log;
- private String configFile = MirGlobal.config().getStringWithHome("Abuse.Config");
+ private File configFile = MirGlobal.config().getFile("Abuse.Config");
private MirPropertiesConfiguration configuration;
line.append(" ");
line.append(filterRule.getType() +" ("+ filterRule.getExpression()+")");
- aComment.appendLineToField("comment", line.toString());
+ EntityUtility.appendLineToField(aComment, "comment", line.toString());
MirGlobal.performCommentOperation(null, aComment, filterRule.getCommentAction());
setCookie(aResponse);
line.append(" ");
line.append(filterRule.getType() +" ("+ filterRule.getExpression()+")");
- anArticle.appendLineToField("comment", line.toString());
+ EntityUtility.appendLineToField(anArticle, "comment", line.toString());
MirGlobal.performArticleOperation(null, anArticle, filterRule.getArticleAction());
setCookie(aResponse);
ExtendedProperties configuration = new ExtendedProperties();
try {
- configuration = new ExtendedProperties(configFile);
+ configuration = new ExtendedProperties(configFile.getAbsolutePath());
}
catch (FileNotFoundException e) {
}
configuration.addProperty("abuse.articleBlockAction", getArticleBlockAction());
configuration.addProperty("abuse.commentBlockAction", getCommentBlockAction());
- configuration.save(new BufferedOutputStream(new FileOutputStream(new File(configFile)),8192), "Anti abuse configuration");
+ configuration.save(new BufferedOutputStream(new FileOutputStream(configFile),8192), "Anti abuse configuration");
}
catch (Throwable t) {
throw new RuntimeException(t.toString());
public FilterRule getFilter(String anId) {
synchronized (filterRules) {
- FilterRule result = (FilterRule) findFilter(filterRules, anId);
+ FilterRule result = findFilter(filterRules, anId);
if (result == null)
return result;
else
moveFilter(filterRules, anIdentifier, 1);
}
+ public void moveFilterToTop(String anIdentifier) {
+ setFilterPosition(filterRules, anIdentifier, 0);
+ }
+
+ public void moveFilterToBottom(String anIdentifier) {
+ setFilterPosition(filterRules, anIdentifier, Integer.MAX_VALUE);
+ }
+
private String addFilter(List aFilters, String aType, String anExpression, String aComments, String aCommentAction, String anArticleAction, Date aLastHit) {
MirAntiAbuseFilterType type = (MirAntiAbuseFilterType) filterTypes.get(aType);
return null;
}
+ private void setFilterPosition(List aFilters, String anIdentifier, int aPosition) {
+ synchronized (aFilters) {
+ if (aPosition<0)
+ aPosition=0;
+
+ for (int i = 0; i < aFilters.size(); i++) {
+ FilterRule rule = (FilterRule) aFilters.get(i);
+
+ if (rule.getId().equals(anIdentifier)) {
+ aFilters.remove(rule);
+
+ if (aPosition<aFilters.size())
+ aFilters.add(aPosition, rule);
+ else
+ aFilters.add(rule);
+ break;
+ }
+ }
+ }
+ }
+
private void moveFilter(List aFilters, String anIdentifier, int aDirection) {
synchronized (aFilters) {
for (int i = 0; i < aFilters.size(); i++) {
}
}
+ private String escapeConfigListEntry(String aFilterPart) {
+ return StringRoutines.replaceStringCharacters(aFilterPart,
+ new char[] {'\\', ':'},
+ new String[] {"\\\\", "\\:"});
+ }
+
private String escapeFilterPart(String aFilterPart) {
return StringRoutines.replaceStringCharacters(aFilterPart,
- new char[] {'\\', ':', '\n', '\r', '\t', ' '},
- new String[] {"\\\\", "\\:", "\\n", "\\r", "\\t", "\\ "});
+ new char[] {'\\', '\n', '\r', '\t', ' '},
+ new String[] {"\\\\", "\\n", "\\r", "\\t", "\\ "});
}
private String deescapeFilterPart(String aFilterPart) {
FilterRule filter = (FilterRule) i.next();
String filterconfig =
- escapeFilterPart(filter.getType()) + ":" +
- escapeFilterPart(filter.getExpression()) + ":" +
- escapeFilterPart(filter.getArticleAction()) + ":" +
- escapeFilterPart(filter.getCommentAction()) + ":" +
- escapeFilterPart(filter.getComments()) + ":";
+ escapeConfigListEntry(escapeFilterPart(filter.getType())) + ":" +
+ escapeConfigListEntry(escapeFilterPart(filter.getExpression())) + ":" +
+ escapeConfigListEntry(escapeFilterPart(filter.getArticleAction())) + ":" +
+ escapeConfigListEntry(escapeFilterPart(filter.getCommentAction())) + ":" +
+ escapeConfigListEntry(escapeFilterPart(filter.getComments())) + ":";
if (filter.getLastHit() != null)
filterconfig = filterconfig + filter.getLastHit().getTime();