- anti-abuse features created
[mir.git] / source / mircoders / servlet / ServletModuleAbuse.java
diff --git a/source/mircoders/servlet/ServletModuleAbuse.java b/source/mircoders/servlet/ServletModuleAbuse.java
new file mode 100755 (executable)
index 0000000..1cf0125
--- /dev/null
@@ -0,0 +1,150 @@
+package mircoders.servlet;\r
+\r
+import java.util.Map;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import mir.log.LoggerWrapper;\r
+import mir.servlet.ServletModule;\r
+import mir.servlet.ServletModuleFailure;\r
+import mir.util.URLBuilder;\r
+import mir.util.HTTPRequestParser;\r
+import mircoders.global.*;\r
+\r
+public class ServletModuleAbuse extends ServletModule {\r
+  private static ServletModuleAbuse instance = new ServletModuleAbuse();\r
+  public static ServletModule getInstance() { return instance; }\r
+\r
+  private ServletModuleAbuse() {\r
+    logger = new LoggerWrapper("ServletModule.Abuse");\r
+    defaultAction = "showsettings";\r
+  }\r
+\r
+  public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);\r
+\r
+    String type=requestParser.getParameterWithDefault("type", "");\r
+    String id=requestParser.getParameterWithDefault("id", "");\r
+    String expression=requestParser.getParameterWithDefault("expression", "");\r
+\r
+    if (id.equals("")) {\r
+      MirGlobal.abuse().addFilter(type, expression);\r
+    }\r
+    else {\r
+      MirGlobal.abuse().setFilter(id, type, expression);\r
+    }\r
+\r
+    MirGlobal.abuse().save();\r
+\r
+    showfilters(aRequest, aResponse);\r
+  }\r
+\r
+  public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);\r
+\r
+    String id=requestParser.getParameterWithDefault("id", "");\r
+    MirGlobal.abuse().deleteFilter(id);\r
+\r
+    MirGlobal.abuse().save();\r
+\r
+    showfilters(aRequest, aResponse);\r
+  }\r
+\r
+  public void showfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+    URLBuilder urlBuilder = new URLBuilder();\r
+\r
+    try {\r
+      Map responseData = ServletHelper.makeGenerationData(getLocale(aRequest));\r
+\r
+      urlBuilder.setValue("module", "Abuse");\r
+      urlBuilder.setValue("do", "showfilters");\r
+      responseData.put("thisurl", urlBuilder.getQuery());\r
+\r
+      responseData.put("filters", MirGlobal.abuse().getFilters());\r
+      responseData.put("filtertypes", MirGlobal.abuse().getFilterTypes());\r
+\r
+      ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.filters.template");\r
+    }\r
+    catch (Throwable e) {\r
+      throw new ServletModuleFailure(e);\r
+    }\r
+  }\r
+\r
+\r
+  public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+    URLBuilder urlBuilder = new URLBuilder();\r
+\r
+    try {\r
+      Map responseData = ServletHelper.makeGenerationData(getLocale(aRequest));\r
+\r
+      urlBuilder.setValue("module", "Abuse");\r
+      urlBuilder.setValue("do", "showsettings");\r
+\r
+      responseData.put("thisurl", urlBuilder.getQuery());\r
+\r
+      responseData.put("articleactions", MirGlobal.abuse().getArticleActions());\r
+      responseData.put("commentactions", MirGlobal.abuse().getCommentActions());\r
+\r
+      responseData.put("disableop", new Boolean(MirGlobal.abuse().getOpenPostingDisabled()));\r
+      responseData.put("passwordop", new Boolean(MirGlobal.abuse().getOpenPostingPassword()));\r
+      responseData.put("logenabled", new Boolean(MirGlobal.abuse().getLogEnabled()));\r
+      responseData.put("logsize", Integer.toString(MirGlobal.abuse().getLogSize()));\r
+      responseData.put("usecookies", new Boolean(MirGlobal.abuse().getCookieOnBlock()));\r
+      responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction());\r
+      responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction());\r
+\r
+      ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.template");\r
+    }\r
+    catch (Throwable e) {\r
+      throw new ServletModuleFailure(e);\r
+    }\r
+  }\r
+\r
+  public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+    try {\r
+      HTTPRequestParser parser = new HTTPRequestParser(aRequest);\r
+\r
+      MirGlobal.abuse().setOpenPostingDisabled(parser.getParameterWithDefault("disableop", "").equals("1"));\r
+      MirGlobal.abuse().setOpenPostingPassword(parser.getParameterWithDefault("passwordop", "").equals("1"));\r
+      MirGlobal.abuse().setLogEnabled(parser.getParameterWithDefault("logenabled", "").equals("1"));\r
+\r
+      try {\r
+        MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize()));\r
+      }\r
+      catch (Throwable t) {\r
+      }\r
+\r
+      MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1"));\r
+\r
+      MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction"));\r
+      MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));\r
+\r
+      MirGlobal.abuse().save();\r
+\r
+      showsettings(aRequest, aResponse);\r
+    }\r
+    catch (Throwable e) {\r
+      throw new ServletModuleFailure(e);\r
+    }\r
+  }\r
+\r
+  public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+    URLBuilder urlBuilder = new URLBuilder();\r
+    int count;\r
+\r
+    try {\r
+      Map responseData = ServletHelper.makeGenerationData(getLocale(aRequest));\r
+      urlBuilder.setValue("module", "Abuse");\r
+      urlBuilder.setValue("do", "showlog");\r
+      responseData.put("thisurl", urlBuilder.getQuery());\r
+\r
+      responseData.put("log", MirGlobal.abuse().getLog());\r
+\r
+      ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.log.template");\r
+    }\r
+    catch (Throwable e) {\r
+      throw new ServletModuleFailure(e);\r
+    }\r
+  }\r
+}
\ No newline at end of file