some code cleanup. removed unnecessary semikolons, unused vars, etc.
[mir.git] / source / mircoders / servlet / ServletModuleAbuse.java
1 /*
2  * Copyright (C) 2001, 2002 The Mir-coders group
3  *
4  * This file is part of Mir.
5  *
6  * Mir is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * Mir is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Mir; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * In addition, as a special exception, The Mir-coders gives permission to link
21  * the code of this program with  any library licensed under the Apache Software License,
22  * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
23  * (or with modified versions of the above that use the same license as the above),
24  * and distribute linked combinations including the two.  You must obey the
25  * GNU General Public License in all respects for all of the code used other than
26  * the above mentioned libraries.  If you modify this file, you may extend this
27  * exception to your version of the file, but you are not obligated to do so.
28  * If you do not wish to do so, delete this exception statement from your version.
29  */
30
31 package mircoders.servlet;
32
33 import java.util.Map;
34
35 import javax.servlet.http.HttpServletRequest;
36 import javax.servlet.http.HttpServletResponse;
37
38 import mir.log.LoggerWrapper;
39 import mir.servlet.ServletModule;
40 import mir.servlet.ServletModuleExc;
41 import mir.servlet.ServletModuleFailure;
42 import mir.storage.StorageObjectExc;
43 import mir.util.HTTPRequestParser;
44 import mir.util.URLBuilder;
45 import mircoders.abuse.FilterEngine;
46 import mircoders.global.MirGlobal;
47
48 public class ServletModuleAbuse extends ServletModule {
49   private static ServletModuleAbuse instance = new ServletModuleAbuse();
50   private String editFilterTemplate;
51   private String listFiltersTemplate;
52   private String editFilterGroupTemplate;
53   private String listFilterGroupsTemplate;
54   private String mainTemplate;
55   private String viewLogTemplate;
56
57   public static ServletModule getInstance() { return instance; }
58
59   private ServletModuleAbuse() {
60     logger = new LoggerWrapper("ServletModule.Abuse");
61     defaultAction = "showsettings";
62
63     editFilterTemplate = configuration.getString("ServletModule.Abuse.EditFilter.Template");
64     listFiltersTemplate = configuration.getString("ServletModule.Abuse.ListFilters.Template");
65     editFilterGroupTemplate = configuration.getString("ServletModule.Abuse.EditFilterGroup.Template");
66     listFilterGroupsTemplate = configuration.getString("ServletModule.Abuse.ListFilterGroups.Template");
67     viewLogTemplate = configuration.getString("ServletModule.Abuse.ViewLog.Template");
68     mainTemplate = configuration.getString("ServletModule.Abuse.Main.Template");
69   }
70
71   public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
72     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
73     String id=requestParser.getParameterWithDefault("id", "");
74     String groupid=requestParser.getParameterWithDefault("groupid", "");
75
76     FilterEngine.Filter filter = MirGlobal.abuse().getFilterEngine().getFilterForId(groupid, id);
77
78     editfilter(aRequest, aResponse,
79         groupid,
80         id, filter.getType(), filter.getExpression(),
81         filter.getComment(), filter.getTag(), filter.getCommentAction(), filter.getArticleAction(), "");
82   }
83
84   public void addfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
85     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
86     String groupid=requestParser.getParameterWithDefault("groupid", "");
87
88     editfilter(aRequest, aResponse, groupid, "", "", "", "", "", "", "", "");
89   }
90
91   public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse,
92         String aGroupId, String anId, String aType, String anExpression, String aComments,
93         String aTag,
94         String aCommentAction, String anArticleAction, String anErrorMessage) throws ServletModuleExc {
95     try {
96       Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
97
98       responseData.put("id", anId);
99       responseData.put("groupid", aGroupId);
100       responseData.put("type", aType);
101       responseData.put("expression", anExpression);
102       responseData.put("comments", aComments);
103       responseData.put("tag", aTag);
104       responseData.put("articleaction", anArticleAction);
105       responseData.put("commentaction", aCommentAction);
106       responseData.put("errormessage", anErrorMessage);
107
108       responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
109       responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
110       responseData.put("filtertypes", MirGlobal.abuse().getFilterEngine().getFilterTypes());
111
112       ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterTemplate);
113     }
114     catch (Throwable e) {
115       throw new ServletModuleFailure(e);
116     }
117   }
118
119   public void updatefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
120     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
121
122     String type=requestParser.getParameterWithDefault("type", "");
123     String id=requestParser.getParameterWithDefault("id", "");
124     String groupid=requestParser.getParameter("groupid");
125     String expression=requestParser.getParameterWithDefault("expression", "");
126     String commentaction=requestParser.getParameterWithDefault("commentaction", "");
127     String articleaction=requestParser.getParameterWithDefault("articleaction", "");
128     String comments=requestParser.getParameterWithDefault("comments", "");
129     String tag=requestParser.getParameterWithDefault("tag", "");
130
131     String errorMessage;
132
133     try {
134       if (id.equals("")) {
135         errorMessage = MirGlobal.abuse().getFilterEngine().addFilter(
136             groupid, type, expression, comments, tag,
137             articleaction, commentaction);
138         logAdminUsage(aRequest, id, "filter added");
139       }
140       else {
141         errorMessage = MirGlobal.abuse().getFilterEngine().updateFilter(
142             groupid, id, type, expression, comments, tag,
143             articleaction, commentaction);
144         logAdminUsage(aRequest, id, "filter modified");
145       }
146     }
147     catch (StorageObjectExc e) {
148       throw new ServletModuleFailure(e);
149     }
150
151     if (errorMessage!=null) {
152       editfilter(aRequest, aResponse, groupid, id, type,
153           expression, comments, tag, commentaction, articleaction, errorMessage);
154     }
155     else {
156       MirGlobal.abuse().save();
157       listfilters(aRequest, aResponse);
158     }
159   }
160
161   public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
162     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
163
164     String id=requestParser.getParameter("id");
165     String groupid=requestParser.getParameter("groupid");
166     MirGlobal.abuse().getFilterEngine().deleteFilter(groupid, id);
167     MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getOperationModuleName() + ":" + "filter:"+groupid+":"+id, "filter deleted");
168
169     listfilters(aRequest, aResponse);
170   }
171
172   public void deletefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
173     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
174
175     String groupid=requestParser.getParameter("groupid");
176     MirGlobal.abuse().getFilterEngine().deleteFilterGroup(groupid);
177
178     MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getOperationModuleName() + ":" + "filtergroup:"+groupid, "filter group deleted");
179
180     showfiltergroups(aRequest, aResponse);
181   }
182
183   public void showfilterconfiguration(HttpServletRequest aRequest, HttpServletResponse aResponse) {
184     showfiltergroups(aRequest, aResponse);
185   }
186
187   public void addfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
188     editfiltergroup(aRequest, aResponse, "", "");
189   }
190
191   public void editgroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
192     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
193     String id=requestParser.getParameterWithDefault("id", "");
194
195     FilterEngine.FilterGroup group = MirGlobal.abuse().getFilterEngine().getFilterGroupForId(id);
196
197     editfiltergroup(aRequest, aResponse, id, group.getName());
198   }
199
200   public void editfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse,
201         String anId, String aName) throws ServletModuleExc {
202     try {
203       Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
204
205       responseData.put("id", anId);
206       responseData.put("name", aName);
207
208       ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterGroupTemplate);
209     }
210     catch (Throwable e) {
211       throw new ServletModuleFailure(e);
212     }
213   }
214
215   public void listfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {
216     URLBuilder urlBuilder = new URLBuilder();
217     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
218     String groupid=requestParser.getParameterWithDefault("groupid", "");
219
220     try {
221       Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
222
223       urlBuilder.setValue("module", "Abuse");
224       urlBuilder.setValue("do", "listfilters");
225       urlBuilder.setValue("groupid", groupid);
226       responseData.put("thisurl", urlBuilder.getQuery());
227       responseData.put("groupid", groupid);
228
229       responseData.put("filters", MirGlobal.abuse().getFilterEngine().getFilters(groupid));
230
231       ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate);
232     }
233     catch (Throwable e) {
234       throw new ServletModuleFailure(e);
235     }
236   }
237
238   public void updatefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
239     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
240
241     String name = requestParser.getParameterWithDefault("name", "");
242     String id = requestParser.getParameterWithDefault("id", "");
243
244     try {
245         if (id.equals("")) {
246           MirGlobal.abuse().getFilterEngine().addFilterGroup(name);
247         }
248         else {
249           MirGlobal.abuse().getFilterEngine().updateFilterGroup(id, name);
250         }
251     }
252     catch (StorageObjectExc e) {
253       throw new ServletModuleFailure(e);
254     }
255
256     showfiltergroups(aRequest, aResponse);
257   }
258
259   public void showfiltergroups(HttpServletRequest aRequest, HttpServletResponse aResponse) {
260     URLBuilder urlBuilder = new URLBuilder();
261
262     try {
263       Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
264
265       urlBuilder.setValue("module", "Abuse");
266       urlBuilder.setValue("do", "showfiltergroups");
267       responseData.put("thisurl", urlBuilder.getQuery());
268
269       responseData.put("filtergroups", MirGlobal.abuse().getFilterEngine().getFilterGroups());
270
271       ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFilterGroupsTemplate);
272     }
273     catch (Throwable e) {
274       throw new ServletModuleFailure(e);
275     }
276   }
277
278   public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
279     URLBuilder urlBuilder = new URLBuilder();
280
281     try {
282       Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
283
284       urlBuilder.setValue("module", "Abuse");
285       urlBuilder.setValue("do", "showsettings");
286
287       responseData.put("thisurl", urlBuilder.getQuery());
288
289       responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
290       responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
291
292       responseData.put("disableop", new Boolean(MirGlobal.abuse().getOpenPostingDisabled()));
293       responseData.put("passwordop", new Boolean(MirGlobal.abuse().getOpenPostingPassword()));
294       responseData.put("logenabled", new Boolean(MirGlobal.abuse().getLogEnabled()));
295       responseData.put("logsize", Integer.toString(MirGlobal.abuse().getLogSize()));
296       responseData.put("usecookies", new Boolean(MirGlobal.abuse().getCookieOnBlock()));
297       responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction());
298       responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction());
299
300       ServletHelper.generateResponse(aResponse.getWriter(), responseData, mainTemplate);
301     }
302     catch (Throwable e) {
303       throw new ServletModuleFailure(e);
304     }
305   }
306
307   public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
308     try {
309       HTTPRequestParser parser = new HTTPRequestParser(aRequest);
310
311       MirGlobal.abuse().setOpenPostingDisabled(parser.getParameterWithDefault("disableop", "").equals("1"));
312       MirGlobal.abuse().setOpenPostingPassword(parser.getParameterWithDefault("passwordop", "").equals("1"));
313       MirGlobal.abuse().setLogEnabled(parser.getParameterWithDefault("logenabled", "").equals("1"));
314
315       try {
316         MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize()));
317       }
318       catch (Throwable t) {
319       }
320
321       MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1"));
322
323       MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction"));
324       MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));
325
326       MirGlobal.abuse().save();
327       logAdminUsage(aRequest, "settings", "object modified");
328
329       showsettings(aRequest, aResponse);
330     }
331     catch (Throwable e) {
332       throw new ServletModuleFailure(e);
333     }
334   }
335
336   public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {
337     URLBuilder urlBuilder = new URLBuilder();
338
339     try {
340       Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
341       urlBuilder.setValue("module", "Abuse");
342       urlBuilder.setValue("do", "showlog");
343       responseData.put("thisurl", urlBuilder.getQuery());
344
345       responseData.put("log", MirGlobal.abuse().getLog());
346
347       ServletHelper.generateResponse(aResponse.getWriter(), responseData, viewLogTemplate);
348     }
349     catch (Throwable e) {
350       throw new ServletModuleFailure(e);
351     }
352   }
353 }