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.ServletModuleExc;
import mir.servlet.ServletModuleFailure;
+import mir.storage.StorageObjectExc;
import mir.util.HTTPRequestParser;
import mir.util.URLBuilder;
+import mircoders.abuse.FilterEngine;
import mircoders.global.MirGlobal;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
public class ServletModuleAbuse extends ServletModule {
private static ServletModuleAbuse instance = new ServletModuleAbuse();
+ 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";
+
+ editFilterTemplate = configuration.getString("ServletModule.Abuse.EditFilter.Template");
+ listFiltersTemplate = configuration.getString("ServletModule.Abuse.ListFilters.Template");
+ editFilterGroupTemplate = configuration.getString("ServletModule.Abuse.EditFilterGroup.Template");
+ listFilterGroupsTemplate = configuration.getString("ServletModule.Abuse.ListFilterGroups.Template");
+ viewLogTemplate = configuration.getString("ServletModule.Abuse.ViewLog.Template");
+ mainTemplate = configuration.getString("ServletModule.Abuse.Main.Template");
}
- public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+ HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+ String id=requestParser.getParameterWithDefault("id", "");
+ String groupid=requestParser.getParameterWithDefault("groupid", "");
+
+ FilterEngine.Filter filter = MirGlobal.abuse().getFilterEngine().getFilterForId(groupid, id);
+
+ 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 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().getFilterEngine().getFilterTypes());
+
+ ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterTemplate);
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
+ public void updatefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
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("")) {
- MirGlobal.abuse().addFilter(type, expression);
+ 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");
+ }
+ }
+ catch (StorageObjectExc e) {
+ throw new ServletModuleFailure(e);
+ }
+
+ if (errorMessage!=null) {
+ editfilter(aRequest, aResponse, groupid, id, type,
+ expression, comments, tag, commentaction, articleaction, errorMessage);
}
else {
- MirGlobal.abuse().setFilter(id, type, expression);
+ MirGlobal.abuse().save();
+ listfilters(aRequest, aResponse);
}
+ }
+
+ public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
- MirGlobal.abuse().save();
+ String id=requestParser.getParameter("id");
+ String groupid=requestParser.getParameter("groupid");
+ MirGlobal.abuse().getFilterEngine().deleteFilter(groupid, id);
+ MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getOperationModuleName() + ":" + "filter:"+groupid+":"+id, "filter deleted");
- showfilters(aRequest, aResponse);
+ listfilters(aRequest, aResponse);
}
- public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ public void deletefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+ String groupid=requestParser.getParameter("groupid");
+ MirGlobal.abuse().getFilterEngine().deleteFilterGroup(groupid);
+
+ MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getOperationModuleName() + ":" + "filtergroup:"+groupid, "filter group deleted");
+
+ 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().deleteFilter(id);
- MirGlobal.abuse().save();
+ FilterEngine.FilterGroup group = MirGlobal.abuse().getFilterEngine().getFilterGroupForId(id);
+
+ editfiltergroup(aRequest, aResponse, id, group.getName());
+ }
+
+ public void editfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse,
+ String anId, String aName) throws ServletModuleExc {
+ try {
+ Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
- showfilters(aRequest, aResponse);
+ 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, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
+ 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("filtertypes", MirGlobal.abuse().getFilterTypes());
+ responseData.put("filters", MirGlobal.abuse().getFilterEngine().getFilters(groupid));
- ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.filters.template");
+ ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate);
}
catch (Throwable e) {
throw new ServletModuleFailure(e);
}
}
+ 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 (StorageObjectExc 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();
try {
- Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
+ Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
urlBuilder.setValue("module", "Abuse");
urlBuilder.setValue("do", "showsettings");
responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction());
responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction());
- ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.template");
+ ServletHelper.generateResponse(aResponse.getWriter(), responseData, mainTemplate);
}
catch (Throwable e) {
throw new ServletModuleFailure(e);
MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));
MirGlobal.abuse().save();
+ logAdminUsage(aRequest, "settings", "object modified");
showsettings(aRequest, aResponse);
}
public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {
URLBuilder urlBuilder = new URLBuilder();
- int count;
try {
- Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
+ Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
urlBuilder.setValue("module", "Abuse");
urlBuilder.setValue("do", "showlog");
responseData.put("thisurl", urlBuilder.getQuery());
responseData.put("log", MirGlobal.abuse().getLog());
- ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.log.template");
+ ServletHelper.generateResponse(aResponse.getWriter(), responseData, viewLogTemplate);
}
catch (Throwable e) {
throw new ServletModuleFailure(e);