2 * Copyright (C) 2001, 2002 The Mir-coders group
4 * This file is part of Mir.
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.
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.
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
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.
31 package mircoders.servlet;
33 import mir.log.LoggerWrapper;
34 import mir.servlet.ServletModule;
35 import mir.servlet.ServletModuleExc;
36 import mir.servlet.ServletModuleFailure;
37 import mir.storage.StorageObjectExc;
38 import mir.util.HTTPRequestParser;
39 import mir.util.URLBuilder;
40 import mircoders.abuse.FilterEngine;
41 import mircoders.global.MirGlobal;
43 import javax.servlet.http.HttpServletRequest;
44 import javax.servlet.http.HttpServletResponse;
47 public class ServletModuleAbuse extends ServletModule {
48 private static ServletModuleAbuse instance = new ServletModuleAbuse();
49 private String editFilterTemplate;
50 private String listFiltersTemplate;
51 private String editFilterGroupTemplate;
52 private String listFilterGroupsTemplate;
53 private String mainTemplate;
54 private String viewLogTemplate;
56 public static ServletModule getInstance() { return instance; }
58 private ServletModuleAbuse() {
59 logger = new LoggerWrapper("ServletModule.Abuse");
60 defaultAction = "showsettings";
62 editFilterTemplate = configuration.getString("ServletModule.Abuse.EditFilter.Template");
63 listFiltersTemplate = configuration.getString("ServletModule.Abuse.ListFilters.Template");
64 editFilterGroupTemplate = configuration.getString("ServletModule.Abuse.EditFilterGroup.Template");
65 listFilterGroupsTemplate = configuration.getString("ServletModule.Abuse.ListFilterGroups.Template");
66 viewLogTemplate = configuration.getString("ServletModule.Abuse.ViewLog.Template");
67 mainTemplate = configuration.getString("ServletModule.Abuse.Main.Template");
70 public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
71 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
72 String id=requestParser.getParameterWithDefault("id", "");
73 String groupid=requestParser.getParameterWithDefault("groupid", "");
75 FilterEngine.Filter filter = MirGlobal.abuse().getFilterEngine().getFilterForId(groupid, id);
77 editfilter(aRequest, aResponse,
79 id, filter.getType(), filter.getExpression(),
80 filter.getComment(), filter.getTag(), filter.getCommentAction(), filter.getArticleAction(), "");
83 public void addfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
84 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
85 String groupid=requestParser.getParameterWithDefault("groupid", "");
87 editfilter(aRequest, aResponse, groupid, "", "", "", "", "", "", "", "");
90 public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse,
91 String aGroupId, String anId, String aType, String anExpression, String aComments,
93 String aCommentAction, String anArticleAction, String anErrorMessage) throws ServletModuleExc {
95 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
97 responseData.put("id", anId);
98 responseData.put("groupid", aGroupId);
99 responseData.put("type", aType);
100 responseData.put("expression", anExpression);
101 responseData.put("comments", aComments);
102 responseData.put("tag", aTag);
103 responseData.put("articleaction", anArticleAction);
104 responseData.put("commentaction", aCommentAction);
105 responseData.put("errormessage", anErrorMessage);
107 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
108 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
109 responseData.put("filtertypes", MirGlobal.abuse().getFilterEngine().getFilterTypes());
111 ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterTemplate);
113 catch (Throwable e) {
114 throw new ServletModuleFailure(e);
118 public void updatefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
119 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
121 String type=requestParser.getParameterWithDefault("type", "");
122 String id=requestParser.getParameterWithDefault("id", "");
123 String groupid=requestParser.getParameter("groupid");
124 String expression=requestParser.getParameterWithDefault("expression", "");
125 String commentaction=requestParser.getParameterWithDefault("commentaction", "");
126 String articleaction=requestParser.getParameterWithDefault("articleaction", "");
127 String comments=requestParser.getParameterWithDefault("comments", "");
128 String tag=requestParser.getParameterWithDefault("tag", "");
134 errorMessage = MirGlobal.abuse().getFilterEngine().addFilter(
135 groupid, type, expression, comments, tag,
136 articleaction, commentaction);
137 logAdminUsage(aRequest, id, "filter added");
140 errorMessage = MirGlobal.abuse().getFilterEngine().updateFilter(
141 groupid, id, type, expression, comments, tag,
142 articleaction, commentaction);
143 logAdminUsage(aRequest, id, "filter modified");
146 catch (StorageObjectExc e) {
147 throw new ServletModuleFailure(e);
150 if (errorMessage!=null) {
151 editfilter(aRequest, aResponse, groupid, id, type,
152 expression, comments, tag, commentaction, articleaction, errorMessage);
155 MirGlobal.abuse().save();
156 listfilters(aRequest, aResponse);
160 public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
161 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
163 String id=requestParser.getParameter("id");
164 String groupid=requestParser.getParameter("groupid");
165 MirGlobal.abuse().getFilterEngine().deleteFilter(groupid, id);
166 MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getOperationModuleName() + ":" + "filter:"+groupid+":"+id, "filter deleted");
168 listfilters(aRequest, aResponse);
171 public void deletefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
172 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
174 String groupid=requestParser.getParameter("groupid");
175 MirGlobal.abuse().getFilterEngine().deleteFilterGroup(groupid);
177 MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getOperationModuleName() + ":" + "filtergroup:"+groupid, "filter group deleted");
179 showfiltergroups(aRequest, aResponse);
182 public void showfilterconfiguration(HttpServletRequest aRequest, HttpServletResponse aResponse) {
183 showfiltergroups(aRequest, aResponse);
186 public void addfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
187 editfiltergroup(aRequest, aResponse, "", "");
190 public void editgroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
191 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
192 String id=requestParser.getParameterWithDefault("id", "");
194 FilterEngine.FilterGroup group = MirGlobal.abuse().getFilterEngine().getFilterGroupForId(id);
196 editfiltergroup(aRequest, aResponse, id, group.getName());
199 public void editfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse,
200 String anId, String aName) throws ServletModuleExc {
202 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
204 responseData.put("id", anId);
205 responseData.put("name", aName);
207 ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterGroupTemplate);
209 catch (Throwable e) {
210 throw new ServletModuleFailure(e);
214 public void listfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {
215 URLBuilder urlBuilder = new URLBuilder();
216 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
217 String groupid=requestParser.getParameterWithDefault("groupid", "");
220 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
222 urlBuilder.setValue("module", "Abuse");
223 urlBuilder.setValue("do", "listfilters");
224 urlBuilder.setValue("groupid", groupid);
225 responseData.put("thisurl", urlBuilder.getQuery());
226 responseData.put("groupid", groupid);
228 responseData.put("filters", MirGlobal.abuse().getFilterEngine().getFilters(groupid));
230 ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate);
232 catch (Throwable e) {
233 throw new ServletModuleFailure(e);
237 public void updatefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
238 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
240 String name = requestParser.getParameterWithDefault("name", "");
241 String id = requestParser.getParameterWithDefault("id", "");
245 MirGlobal.abuse().getFilterEngine().addFilterGroup(name);
248 MirGlobal.abuse().getFilterEngine().updateFilterGroup(id, name);
251 catch (StorageObjectExc e) {
252 throw new ServletModuleFailure(e);
255 showfiltergroups(aRequest, aResponse);
258 public void showfiltergroups(HttpServletRequest aRequest, HttpServletResponse aResponse) {
259 URLBuilder urlBuilder = new URLBuilder();
262 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
264 urlBuilder.setValue("module", "Abuse");
265 urlBuilder.setValue("do", "showfiltergroups");
266 responseData.put("thisurl", urlBuilder.getQuery());
268 responseData.put("filtergroups", MirGlobal.abuse().getFilterEngine().getFilterGroups());
270 ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFilterGroupsTemplate);
272 catch (Throwable e) {
273 throw new ServletModuleFailure(e);
277 public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
278 URLBuilder urlBuilder = new URLBuilder();
281 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
283 urlBuilder.setValue("module", "Abuse");
284 urlBuilder.setValue("do", "showsettings");
286 responseData.put("thisurl", urlBuilder.getQuery());
288 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
289 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
291 responseData.put("disableop", new Boolean(MirGlobal.abuse().getOpenPostingDisabled()));
292 responseData.put("passwordop", new Boolean(MirGlobal.abuse().getOpenPostingPassword()));
293 responseData.put("logenabled", new Boolean(MirGlobal.abuse().getLogEnabled()));
294 responseData.put("logsize", Integer.toString(MirGlobal.abuse().getLogSize()));
295 responseData.put("usecookies", new Boolean(MirGlobal.abuse().getCookieOnBlock()));
296 responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction());
297 responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction());
299 ServletHelper.generateResponse(aResponse.getWriter(), responseData, mainTemplate);
301 catch (Throwable e) {
302 throw new ServletModuleFailure(e);
306 public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
308 HTTPRequestParser parser = new HTTPRequestParser(aRequest);
310 MirGlobal.abuse().setOpenPostingDisabled(parser.getParameterWithDefault("disableop", "").equals("1"));
311 MirGlobal.abuse().setOpenPostingPassword(parser.getParameterWithDefault("passwordop", "").equals("1"));
312 MirGlobal.abuse().setLogEnabled(parser.getParameterWithDefault("logenabled", "").equals("1"));
315 MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize()));
317 catch (Throwable t) {
320 MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1"));
322 MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction"));
323 MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));
325 MirGlobal.abuse().save();
326 logAdminUsage(aRequest, "settings", "object modified");
328 showsettings(aRequest, aResponse);
330 catch (Throwable e) {
331 throw new ServletModuleFailure(e);
335 public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {
336 URLBuilder urlBuilder = new URLBuilder();
339 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
340 urlBuilder.setValue("module", "Abuse");
341 urlBuilder.setValue("do", "showlog");
342 responseData.put("thisurl", urlBuilder.getQuery());
344 responseData.put("log", MirGlobal.abuse().getLog());
346 ServletHelper.generateResponse(aResponse.getWriter(), responseData, viewLogTemplate);
348 catch (Throwable e) {
349 throw new ServletModuleFailure(e);