- experimental opensessions
[mir.git] / source / mircoders / servlet / ServletModuleAbuse.java
1 /*\r
2  * Copyright (C) 2001, 2002  The Mir-coders group\r
3  *\r
4  * This file is part of Mir.\r
5  *\r
6  * Mir is free software; you can redistribute it and/or modify\r
7  * it under the terms of the GNU General Public License as published by\r
8  * the Free Software Foundation; either version 2 of the License, or\r
9  * (at your option) any later version.\r
10  *\r
11  * Mir is distributed in the hope that it will be useful,\r
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14  * GNU General Public License for more details.\r
15  *\r
16  * You should have received a copy of the GNU General Public License\r
17  * along with Mir; if not, write to the Free Software\r
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
19  *\r
20  * In addition, as a special exception, The Mir-coders gives permission to link\r
21  * the code of this program with the com.oreilly.servlet library, any library\r
22  * licensed under the Apache Software License, The Sun (tm) Java Advanced\r
23  * Imaging library (JAI), The Sun JIMI library (or with modified versions of\r
24  * the above that use the same license as the above), and distribute linked\r
25  * combinations including the two.  You must obey the GNU General Public\r
26  * License in all respects for all of the code used other than the above\r
27  * mentioned libraries.  If you modify this file, you may extend this exception\r
28  * to your version of the file, but you are not obligated to do so.  If you do\r
29  * not wish to do so, delete this exception statement from your version.\r
30  */\r
31 \r
32 package mircoders.servlet;\r
33 \r
34 import java.util.Locale;\r
35 import java.util.Map;\r
36 import javax.servlet.http.HttpServletRequest;\r
37 import javax.servlet.http.HttpServletResponse;\r
38 \r
39 import mir.log.LoggerWrapper;\r
40 import mir.servlet.ServletModule;\r
41 import mir.servlet.ServletModuleFailure;\r
42 import mir.util.HTTPRequestParser;\r
43 import mir.util.URLBuilder;\r
44 import mircoders.global.MirGlobal;\r
45 \r
46 public class ServletModuleAbuse extends ServletModule {\r
47   private static ServletModuleAbuse instance = new ServletModuleAbuse();\r
48   public static ServletModule getInstance() { return instance; }\r
49 \r
50   private ServletModuleAbuse() {\r
51     logger = new LoggerWrapper("ServletModule.Abuse");\r
52     defaultAction = "showsettings";\r
53   }\r
54 \r
55   public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
56     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);\r
57 \r
58     String type=requestParser.getParameterWithDefault("type", "");\r
59     String id=requestParser.getParameterWithDefault("id", "");\r
60     String expression=requestParser.getParameterWithDefault("expression", "");\r
61 \r
62     if (id.equals("")) {\r
63       MirGlobal.abuse().addFilter(type, expression);\r
64     }\r
65     else {\r
66       MirGlobal.abuse().setFilter(id, type, expression);\r
67     }\r
68 \r
69     MirGlobal.abuse().save();\r
70 \r
71     showfilters(aRequest, aResponse);\r
72   }\r
73 \r
74   public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
75     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);\r
76 \r
77     String id=requestParser.getParameterWithDefault("id", "");\r
78     MirGlobal.abuse().deleteFilter(id);\r
79 \r
80     MirGlobal.abuse().save();\r
81 \r
82     showfilters(aRequest, aResponse);\r
83   }\r
84 \r
85   public void showfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
86     URLBuilder urlBuilder = new URLBuilder();\r
87 \r
88     try {\r
89       Map responseData = ServletHelper.makeGenerationData(new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});\r
90 \r
91       urlBuilder.setValue("module", "Abuse");\r
92       urlBuilder.setValue("do", "showfilters");\r
93       responseData.put("thisurl", urlBuilder.getQuery());\r
94 \r
95       responseData.put("filters", MirGlobal.abuse().getFilters());\r
96       responseData.put("filtertypes", MirGlobal.abuse().getFilterTypes());\r
97 \r
98       ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.filters.template");\r
99     }\r
100     catch (Throwable e) {\r
101       throw new ServletModuleFailure(e);\r
102     }\r
103   }\r
104 \r
105 \r
106   public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
107     URLBuilder urlBuilder = new URLBuilder();\r
108 \r
109     try {\r
110       Map responseData = ServletHelper.makeGenerationData(new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});\r
111 \r
112       urlBuilder.setValue("module", "Abuse");\r
113       urlBuilder.setValue("do", "showsettings");\r
114 \r
115       responseData.put("thisurl", urlBuilder.getQuery());\r
116 \r
117       responseData.put("articleactions", MirGlobal.abuse().getArticleActions());\r
118       responseData.put("commentactions", MirGlobal.abuse().getCommentActions());\r
119 \r
120       responseData.put("disableop", new Boolean(MirGlobal.abuse().getOpenPostingDisabled()));\r
121       responseData.put("passwordop", new Boolean(MirGlobal.abuse().getOpenPostingPassword()));\r
122       responseData.put("logenabled", new Boolean(MirGlobal.abuse().getLogEnabled()));\r
123       responseData.put("logsize", Integer.toString(MirGlobal.abuse().getLogSize()));\r
124       responseData.put("usecookies", new Boolean(MirGlobal.abuse().getCookieOnBlock()));\r
125       responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction());\r
126       responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction());\r
127 \r
128       ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.template");\r
129     }\r
130     catch (Throwable e) {\r
131       throw new ServletModuleFailure(e);\r
132     }\r
133   }\r
134 \r
135   public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
136     try {\r
137       HTTPRequestParser parser = new HTTPRequestParser(aRequest);\r
138 \r
139       MirGlobal.abuse().setOpenPostingDisabled(parser.getParameterWithDefault("disableop", "").equals("1"));\r
140       MirGlobal.abuse().setOpenPostingPassword(parser.getParameterWithDefault("passwordop", "").equals("1"));\r
141       MirGlobal.abuse().setLogEnabled(parser.getParameterWithDefault("logenabled", "").equals("1"));\r
142 \r
143       try {\r
144         MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize()));\r
145       }\r
146       catch (Throwable t) {\r
147       }\r
148 \r
149       MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1"));\r
150 \r
151       MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction"));\r
152       MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));\r
153 \r
154       MirGlobal.abuse().save();\r
155 \r
156       showsettings(aRequest, aResponse);\r
157     }\r
158     catch (Throwable e) {\r
159       throw new ServletModuleFailure(e);\r
160     }\r
161   }\r
162 \r
163   public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
164     URLBuilder urlBuilder = new URLBuilder();\r
165     int count;\r
166 \r
167     try {\r
168       Map responseData = ServletHelper.makeGenerationData(new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});\r
169       urlBuilder.setValue("module", "Abuse");\r
170       urlBuilder.setValue("do", "showlog");\r
171       responseData.put("thisurl", urlBuilder.getQuery());\r
172 \r
173       responseData.put("log", MirGlobal.abuse().getLog());\r
174 \r
175       ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.log.template");\r
176     }\r
177     catch (Throwable e) {\r
178       throw new ServletModuleFailure(e);\r
179     }\r
180   }\r
181 }