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.servlet.AdminServletModule;
34 import mir.servlet.ServletModuleExc;
35 import mir.servlet.ServletModuleFailure;
36 import mir.storage.DatabaseExc;
37 import mir.util.HTTPRequestParser;
38 import mir.util.URLBuilder;
39 import mircoders.abuse.FilterEngine;
40 import mircoders.global.MirGlobal;
42 import javax.servlet.http.HttpServletRequest;
43 import javax.servlet.http.HttpServletResponse;
46 public class ServletModuleAbuse extends AdminServletModule {
47 private String editFilterTemplate;
48 private String listFiltersTemplate;
49 private String editFilterGroupTemplate;
50 private String listFilterGroupsTemplate;
51 private String mainTemplate;
52 private String viewLogTemplate;
54 public ServletModuleAbuse() {
55 editFilterTemplate = getConfiguration().getString("ServletModule.Abuse.EditFilter.Template");
56 listFiltersTemplate = getConfiguration().getString("ServletModule.Abuse.ListFilters.Template");
57 editFilterGroupTemplate = getConfiguration().getString("ServletModule.Abuse.EditFilterGroup.Template");
58 listFilterGroupsTemplate = getConfiguration().getString("ServletModule.Abuse.ListFilterGroups.Template");
59 viewLogTemplate = getConfiguration().getString("ServletModule.Abuse.ViewLog.Template");
60 mainTemplate = getConfiguration().getString("ServletModule.Abuse.Main.Template");
63 public void defaultAction(HttpServletRequest aRequest, HttpServletResponse aResponse) {
64 showsettings(aRequest, aResponse);
67 public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
68 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
69 String id=requestParser.getParameterWithDefault("id", "");
70 String groupid=requestParser.getParameterWithDefault("groupid", "");
72 FilterEngine.Filter filter = MirGlobal.abuse().getFilterEngine().getFilterForId(groupid, id);
74 editfilter(aRequest, aResponse,
76 id, filter.getType(), filter.getExpression(),
77 filter.getComment(), filter.getTag(), filter.getCommentAction(), filter.getArticleAction(), "");
80 public void addfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
81 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
82 String groupid=requestParser.getParameterWithDefault("groupid", "");
84 editfilter(aRequest, aResponse, groupid, "", "", "", "", "", "", "", "");
87 public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse,
88 String aGroupId, String anId, String aType, String anExpression, String aComments,
90 String aCommentAction, String anArticleAction, String anErrorMessage) throws ServletModuleExc {
92 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
94 responseData.put("id", anId);
95 responseData.put("groupid", aGroupId);
96 responseData.put("type", aType);
97 responseData.put("expression", anExpression);
98 responseData.put("comments", aComments);
99 responseData.put("tag", aTag);
100 responseData.put("articleaction", anArticleAction);
101 responseData.put("commentaction", aCommentAction);
102 responseData.put("errormessage", anErrorMessage);
104 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
105 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
106 responseData.put("filtertypes", MirGlobal.abuse().getFilterEngine().getFilterTypes());
108 ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterTemplate);
110 catch (Throwable e) {
111 throw new ServletModuleFailure(e);
115 public void updatefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
116 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
118 String type=requestParser.getParameterWithDefault("type", "");
119 String id=requestParser.getParameterWithDefault("id", "");
120 String groupid=requestParser.getParameter("groupid");
121 String expression=requestParser.getParameterWithDefault("expression", "");
122 String commentaction=requestParser.getParameterWithDefault("commentaction", "");
123 String articleaction=requestParser.getParameterWithDefault("articleaction", "");
124 String comments=requestParser.getParameterWithDefault("comments", "");
125 String tag=requestParser.getParameterWithDefault("tag", "");
131 errorMessage = MirGlobal.abuse().getFilterEngine().addFilter(
132 groupid, type, expression, comments, tag,
133 articleaction, commentaction);
134 logAdminUsage(aRequest, id, "filter added");
137 errorMessage = MirGlobal.abuse().getFilterEngine().updateFilter(
138 groupid, id, type, expression, comments, tag,
139 articleaction, commentaction);
140 logAdminUsage(aRequest, id, "filter modified");
143 catch (DatabaseExc e) {
144 throw new ServletModuleFailure(e);
147 if (errorMessage!=null) {
148 editfilter(aRequest, aResponse, groupid, id, type,
149 expression, comments, tag, commentaction, articleaction, errorMessage);
152 MirGlobal.abuse().save();
153 listfilters(aRequest, aResponse);
157 public void movefilterup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
158 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
160 String id=requestParser.getParameter("id");
161 String groupid=requestParser.getParameter("groupid");
163 MirGlobal.abuse().getFilterEngine().moveFilterUp(groupid, id);
164 listfilters(aRequest, aResponse);
168 public void movefilterdown(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
169 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
171 String id=requestParser.getParameter("id");
172 String groupid=requestParser.getParameter("groupid");
174 MirGlobal.abuse().getFilterEngine().moveFilterDown(groupid, id);
175 listfilters(aRequest, aResponse);
178 public void movefiltertop(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
179 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
181 String id=requestParser.getParameter("id");
182 String groupid=requestParser.getParameter("groupid");
184 MirGlobal.abuse().getFilterEngine().moveFilterToTop(groupid, id);
185 listfilters(aRequest, aResponse);
188 public void movefilterbottom(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
189 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
191 String id=requestParser.getParameter("id");
192 String groupid=requestParser.getParameter("groupid");
194 MirGlobal.abuse().getFilterEngine().moveFilterToBottom(groupid, id);
195 listfilters(aRequest, aResponse);
198 public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
199 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
201 String id=requestParser.getParameter("id");
202 String groupid=requestParser.getParameter("groupid");
203 MirGlobal.abuse().getFilterEngine().deleteFilter(groupid, id);
204 MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getName() + ":" + "filter:"+groupid+":"+id, "filter deleted");
206 listfilters(aRequest, aResponse);
209 public void deletefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
210 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
212 String groupid=requestParser.getParameter("groupid");
213 MirGlobal.abuse().getFilterEngine().deleteFilterGroup(groupid);
215 MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getName() + ":" + "filtergroup:"+groupid, "filter group deleted");
217 showfiltergroups(aRequest, aResponse);
220 public void movefiltergroupup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
221 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
223 String groupid=requestParser.getParameter("groupid");
224 MirGlobal.abuse().getFilterEngine().moveFilterGroupUp(groupid);
226 MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getName() + ":" + "filtergroup:"+groupid, "filter group moved upwards");
228 showfiltergroups(aRequest, aResponse);
231 public void movefiltergroupdown(HttpServletRequest aRequest, HttpServletResponse aResponse) {
232 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
234 String groupid=requestParser.getParameter("groupid");
235 MirGlobal.abuse().getFilterEngine().moveFilterGroupDown(groupid);
237 MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getName() + ":" + "filtergroup:"+groupid, "filter group moved downwards");
239 showfiltergroups(aRequest, aResponse);
242 public void showfilterconfiguration(HttpServletRequest aRequest, HttpServletResponse aResponse) {
243 showfiltergroups(aRequest, aResponse);
246 public void addfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
247 editfiltergroup(aRequest, aResponse, "", "");
250 public void editgroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
251 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
252 String id=requestParser.getParameterWithDefault("id", "");
254 FilterEngine.FilterGroup group = MirGlobal.abuse().getFilterEngine().getFilterGroupForId(id);
256 editfiltergroup(aRequest, aResponse, id, group.getName());
259 public void editfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse,
260 String anId, String aName) throws ServletModuleExc {
262 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
264 responseData.put("id", anId);
265 responseData.put("name", aName);
267 ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterGroupTemplate);
269 catch (Throwable e) {
270 throw new ServletModuleFailure(e);
274 public void listfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {
275 URLBuilder urlBuilder = new URLBuilder();
276 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
277 String groupid=requestParser.getParameterWithDefault("groupid", "");
280 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
282 urlBuilder.setValue("module", "Abuse");
283 urlBuilder.setValue("do", "listfilters");
284 urlBuilder.setValue("groupid", groupid);
285 responseData.put("thisurl", urlBuilder.getQuery());
286 responseData.put("groupid", groupid);
288 responseData.put("filters", MirGlobal.abuse().getFilterEngine().getFilters(groupid));
290 ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate);
292 catch (Throwable e) {
293 throw new ServletModuleFailure(e);
297 public void updatefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
298 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
300 String name = requestParser.getParameterWithDefault("name", "");
301 String id = requestParser.getParameterWithDefault("id", "");
305 MirGlobal.abuse().getFilterEngine().addFilterGroup(name);
308 MirGlobal.abuse().getFilterEngine().updateFilterGroup(id, name);
311 catch (DatabaseExc e) {
312 throw new ServletModuleFailure(e);
315 showfiltergroups(aRequest, aResponse);
318 public void showfiltergroups(HttpServletRequest aRequest, HttpServletResponse aResponse) {
319 URLBuilder urlBuilder = new URLBuilder();
322 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
324 urlBuilder.setValue("module", "Abuse");
325 urlBuilder.setValue("do", "showfiltergroups");
326 responseData.put("thisurl", urlBuilder.getQuery());
328 responseData.put("filtergroups", MirGlobal.abuse().getFilterEngine().getFilterGroups());
330 ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFilterGroupsTemplate);
332 catch (Throwable e) {
333 throw new ServletModuleFailure(e);
337 public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
338 URLBuilder urlBuilder = new URLBuilder();
341 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
343 urlBuilder.setValue("module", "Abuse");
344 urlBuilder.setValue("do", "showsettings");
346 responseData.put("thisurl", urlBuilder.getQuery());
348 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
349 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
351 responseData.put("disableop", new Boolean(MirGlobal.abuse().getOpenPostingDisabled()));
352 responseData.put("passwordop", new Boolean(MirGlobal.abuse().getOpenPostingPassword()));
353 responseData.put("logenabled", new Boolean(MirGlobal.abuse().getLogEnabled()));
354 responseData.put("logsize", Integer.toString(MirGlobal.abuse().getLogSize()));
355 responseData.put("usecookies", new Boolean(MirGlobal.abuse().getCookieOnBlock()));
356 responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction());
357 responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction());
359 ServletHelper.generateResponse(aResponse.getWriter(), responseData, mainTemplate);
361 catch (Throwable e) {
362 throw new ServletModuleFailure(e);
366 public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
368 HTTPRequestParser parser = new HTTPRequestParser(aRequest);
370 MirGlobal.abuse().setOpenPostingDisabled(parser.getParameterWithDefault("disableop", "").equals("1"));
371 MirGlobal.abuse().setOpenPostingPassword(parser.getParameterWithDefault("passwordop", "").equals("1"));
372 MirGlobal.abuse().setLogEnabled(parser.getParameterWithDefault("logenabled", "").equals("1"));
375 MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize()));
377 catch (Throwable t) {
380 MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1"));
382 MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction"));
383 MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));
385 MirGlobal.abuse().save();
386 logAdminUsage(aRequest, "settings", "object modified");
388 showsettings(aRequest, aResponse);
390 catch (Throwable e) {
391 throw new ServletModuleFailure(e);
395 public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {
396 URLBuilder urlBuilder = new URLBuilder();
399 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
400 urlBuilder.setValue("module", "Abuse");
401 urlBuilder.setValue("do", "showlog");
402 responseData.put("thisurl", urlBuilder.getQuery());
404 responseData.put("log", MirGlobal.abuse().getLog());
406 ServletHelper.generateResponse(aResponse.getWriter(), responseData, viewLogTemplate);
408 catch (Throwable e) {
409 throw new ServletModuleFailure(e);