package mircoders.servlet;
-import java.util.Locale;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import mir.log.LoggerWrapper;
-import mir.servlet.ServletModule;
+import mir.servlet.AdminServletModule;
import mir.servlet.ServletModuleExc;
import mir.servlet.ServletModuleFailure;
+import mir.storage.DatabaseExc;
import mir.util.HTTPRequestParser;
import mir.util.URLBuilder;
-import mircoders.global.Abuse;
+import mircoders.abuse.FilterEngine;
import mircoders.global.MirGlobal;
-public class ServletModuleAbuse extends ServletModule {
- private static ServletModuleAbuse instance = new ServletModuleAbuse();
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+public class ServletModuleAbuse extends AdminServletModule {
private String editFilterTemplate;
private String listFiltersTemplate;
+ private String editFilterGroupTemplate;
+ private String listFilterGroupsTemplate;
private String mainTemplate;
private String viewLogTemplate;
- public static ServletModule getInstance() { return instance; }
-
- private ServletModuleAbuse() {
- logger = new LoggerWrapper("ServletModule.Abuse");
- defaultAction = "showsettings";
+ public ServletModuleAbuse() {
+ editFilterTemplate = getConfiguration().getString("ServletModule.Abuse.EditFilter.Template");
+ listFiltersTemplate = getConfiguration().getString("ServletModule.Abuse.ListFilters.Template");
+ editFilterGroupTemplate = getConfiguration().getString("ServletModule.Abuse.EditFilterGroup.Template");
+ listFilterGroupsTemplate = getConfiguration().getString("ServletModule.Abuse.ListFilterGroups.Template");
+ viewLogTemplate = getConfiguration().getString("ServletModule.Abuse.ViewLog.Template");
+ mainTemplate = getConfiguration().getString("ServletModule.Abuse.Main.Template");
+ }
- editFilterTemplate = configuration.getString("ServletModule.Abuse.EditFilter.Template");
- listFiltersTemplate = configuration.getString("ServletModule.Abuse.ListFilters.Template");
- viewLogTemplate = configuration.getString("ServletModule.Abuse.ViewLog.Template");
- mainTemplate = configuration.getString("ServletModule.Abuse.Main.Template");
+ public void defaultAction(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ showsettings(aRequest, aResponse);
}
- public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+ public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
String id=requestParser.getParameterWithDefault("id", "");
+ String groupid=requestParser.getParameterWithDefault("groupid", "");
- if (id.equals("")) {
- editfilter(aRequest, aResponse, "", "", "", "", "", "", "");
- }
- else {
- Abuse.FilterRule filter = MirGlobal.abuse().getFilter(id);
- if (filter==null)
- throw new ServletModuleExc("Filter not found");
+ FilterEngine.Filter filter = MirGlobal.abuse().getFilterEngine().getFilterForId(groupid, id);
- editfilter(aRequest, aResponse, filter.getId(), filter.getType(), filter.getExpression(), filter.getComments(), filter.getCommentAction(), filter.getArticleAction(), "");
- }
+ editfilter(aRequest, aResponse,
+ groupid,
+ id, filter.getType(), filter.getExpression(),
+ filter.getComment(), filter.getTag(), filter.getCommentAction(), filter.getArticleAction(), "");
+ }
+
+ public void addfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+ HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+ String groupid=requestParser.getParameterWithDefault("groupid", "");
+
+ editfilter(aRequest, aResponse, groupid, "", "", "", "", "", "", "", "");
}
public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse,
- String anId, String aType, String anExpression, String aComments,
+ String aGroupId, String anId, String aType, String anExpression, String aComments,
+ String aTag,
String aCommentAction, String anArticleAction, String anErrorMessage) throws ServletModuleExc {
try {
Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
responseData.put("id", anId);
+ responseData.put("groupid", aGroupId);
responseData.put("type", aType);
responseData.put("expression", anExpression);
responseData.put("comments", aComments);
+ responseData.put("tag", aTag);
responseData.put("articleaction", anArticleAction);
responseData.put("commentaction", aCommentAction);
responseData.put("errormessage", anErrorMessage);
responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
- responseData.put("filtertypes", MirGlobal.abuse().getFilterTypes());
+ responseData.put("filtertypes", MirGlobal.abuse().getFilterEngine().getFilterTypes());
ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterTemplate);
}
String type=requestParser.getParameterWithDefault("type", "");
String id=requestParser.getParameterWithDefault("id", "");
+ String groupid=requestParser.getParameter("groupid");
String expression=requestParser.getParameterWithDefault("expression", "");
String commentaction=requestParser.getParameterWithDefault("commentaction", "");
String articleaction=requestParser.getParameterWithDefault("articleaction", "");
String comments=requestParser.getParameterWithDefault("comments", "");
+ String tag=requestParser.getParameterWithDefault("tag", "");
String errorMessage;
- if (id.equals("")) {
- errorMessage = MirGlobal.abuse().addFilter(type, expression,comments, commentaction, articleaction);
- logAdminUsage(aRequest, "?", "object added");
+ try {
+ if (id.equals("")) {
+ errorMessage = MirGlobal.abuse().getFilterEngine().addFilter(
+ groupid, type, expression, comments, tag,
+ articleaction, commentaction);
+ logAdminUsage(aRequest, id, "filter added");
+ }
+ else {
+ errorMessage = MirGlobal.abuse().getFilterEngine().updateFilter(
+ groupid, id, type, expression, comments, tag,
+ articleaction, commentaction);
+ logAdminUsage(aRequest, id, "filter modified");
+ }
}
- else {
- errorMessage = MirGlobal.abuse().setFilter(id, type, expression, comments, commentaction, articleaction);
- logAdminUsage(aRequest, id, "object modified");
+ catch (DatabaseExc e) {
+ throw new ServletModuleFailure(e);
}
if (errorMessage!=null) {
- editfilter(aRequest, aResponse, id, type, expression, comments, commentaction, articleaction, errorMessage);
+ editfilter(aRequest, aResponse, groupid, id, type,
+ expression, comments, tag, commentaction, articleaction, errorMessage);
}
else {
MirGlobal.abuse().save();
- showfilters(aRequest, aResponse);
+ listfilters(aRequest, aResponse);
}
}
- public void delete(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ public void movefilterup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
- String id=requestParser.getParameterWithDefault("id", "");
- MirGlobal.abuse().deleteFilter(id);
- logAdminUsage(aRequest, id, "object deleted");
+ String id=requestParser.getParameter("id");
+ String groupid=requestParser.getParameter("groupid");
+
+ MirGlobal.abuse().getFilterEngine().moveFilterUp(groupid, id);
+ listfilters(aRequest, aResponse);
+ }
+
- MirGlobal.abuse().save();
+ public void movefilterdown(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+ HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
- showfilters(aRequest, aResponse);
+ String id=requestParser.getParameter("id");
+ String groupid=requestParser.getParameter("groupid");
+
+ MirGlobal.abuse().getFilterEngine().moveFilterDown(groupid, id);
+ listfilters(aRequest, aResponse);
}
- public void moveup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ public void movefiltertop(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
- String id=requestParser.getParameterWithDefault("id", "");
- MirGlobal.abuse().moveFilterUp(id);
+ String id=requestParser.getParameter("id");
+ String groupid=requestParser.getParameter("groupid");
- MirGlobal.abuse().save();
- logAdminUsage(aRequest, id, "object moved upwards");
+ MirGlobal.abuse().getFilterEngine().moveFilterToTop(groupid, id);
+ listfilters(aRequest, aResponse);
+ }
+
+ public void movefilterbottom(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+ HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
- showfilters(aRequest, aResponse);
+ String id=requestParser.getParameter("id");
+ String groupid=requestParser.getParameter("groupid");
+
+ MirGlobal.abuse().getFilterEngine().moveFilterToBottom(groupid, id);
+ listfilters(aRequest, aResponse);
}
- public void movedown(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
- String id=requestParser.getParameterWithDefault("id", "");
- MirGlobal.abuse().moveFilterDown(id);
- logAdminUsage(aRequest, id, "object moved downwards");
+ String id=requestParser.getParameter("id");
+ String groupid=requestParser.getParameter("groupid");
+ MirGlobal.abuse().getFilterEngine().deleteFilter(groupid, id);
+ MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getName() + ":" + "filter:"+groupid+":"+id, "filter deleted");
+
+ listfilters(aRequest, aResponse);
+ }
+
+ public void deletefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+ String groupid=requestParser.getParameter("groupid");
+ MirGlobal.abuse().getFilterEngine().deleteFilterGroup(groupid);
- MirGlobal.abuse().save();
+ MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getName() + ":" + "filtergroup:"+groupid, "filter group deleted");
- showfilters(aRequest, aResponse);
+ showfiltergroups(aRequest, aResponse);
}
- public void movetop(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ public void movefiltergroupup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
- String id=requestParser.getParameterWithDefault("id", "");
- MirGlobal.abuse().moveFilterToTop(id);
+ String groupid=requestParser.getParameter("groupid");
+ MirGlobal.abuse().getFilterEngine().moveFilterGroupUp(groupid);
- MirGlobal.abuse().save();
- logAdminUsage(aRequest, id, "object moved to the top");
+ MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getName() + ":" + "filtergroup:"+groupid, "filter group moved upwards");
- showfilters(aRequest, aResponse);
+ showfiltergroups(aRequest, aResponse);
}
- public void movebottom(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ public void movefiltergroupdown(HttpServletRequest aRequest, HttpServletResponse aResponse) {
HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+ String groupid=requestParser.getParameter("groupid");
+ MirGlobal.abuse().getFilterEngine().moveFilterGroupDown(groupid);
+
+ MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getName() + ":" + "filtergroup:"+groupid, "filter group moved downwards");
+
+ showfiltergroups(aRequest, aResponse);
+ }
+
+ public void showfilterconfiguration(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ showfiltergroups(aRequest, aResponse);
+ }
+
+ public void addfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+ editfiltergroup(aRequest, aResponse, "", "");
+ }
+
+ public void editgroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+ HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
String id=requestParser.getParameterWithDefault("id", "");
- MirGlobal.abuse().moveFilterToBottom(id);
- MirGlobal.abuse().save();
- logAdminUsage(aRequest, id, "object moved to the bottom");
+ FilterEngine.FilterGroup group = MirGlobal.abuse().getFilterEngine().getFilterGroupForId(id);
- showfilters(aRequest, aResponse);
+ editfiltergroup(aRequest, aResponse, id, group.getName());
}
- public void add(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
- editfilter(aRequest, aResponse, "", "", "", "", "", "", "");
+ public void editfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse,
+ String anId, String aName) throws ServletModuleExc {
+ try {
+ Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
+
+ responseData.put("id", anId);
+ responseData.put("name", aName);
+
+ ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterGroupTemplate);
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
}
- public void showfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ public void listfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {
URLBuilder urlBuilder = new URLBuilder();
+ HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+ String groupid=requestParser.getParameterWithDefault("groupid", "");
try {
Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
urlBuilder.setValue("module", "Abuse");
- urlBuilder.setValue("do", "showfilters");
+ urlBuilder.setValue("do", "listfilters");
+ urlBuilder.setValue("groupid", groupid);
responseData.put("thisurl", urlBuilder.getQuery());
+ responseData.put("groupid", groupid);
- responseData.put("filters", MirGlobal.abuse().getFilters());
+ responseData.put("filters", MirGlobal.abuse().getFilterEngine().getFilters(groupid));
ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate);
}
}
}
+ public void updatefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+ HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+ String name = requestParser.getParameterWithDefault("name", "");
+ String id = requestParser.getParameterWithDefault("id", "");
+
+ try {
+ if (id.equals("")) {
+ MirGlobal.abuse().getFilterEngine().addFilterGroup(name);
+ }
+ else {
+ MirGlobal.abuse().getFilterEngine().updateFilterGroup(id, name);
+ }
+ }
+ catch (DatabaseExc e) {
+ throw new ServletModuleFailure(e);
+ }
+
+ showfiltergroups(aRequest, aResponse);
+ }
+
+ public void showfiltergroups(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ URLBuilder urlBuilder = new URLBuilder();
+
+ try {
+ Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
+
+ urlBuilder.setValue("module", "Abuse");
+ urlBuilder.setValue("do", "showfiltergroups");
+ responseData.put("thisurl", urlBuilder.getQuery());
+
+ responseData.put("filtergroups", MirGlobal.abuse().getFilterEngine().getFilterGroups());
+
+ ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFilterGroupsTemplate);
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
URLBuilder urlBuilder = new URLBuilder();