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;
35 import javax.servlet.http.HttpServletRequest;
36 import javax.servlet.http.HttpServletResponse;
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;
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;
57 public static ServletModule getInstance() { return instance; }
59 private ServletModuleAbuse() {
60 logger = new LoggerWrapper("ServletModule.Abuse");
61 defaultAction = "showsettings";
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");
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", "");
76 FilterEngine.Filter filter = MirGlobal.abuse().getFilterEngine().getFilterForId(groupid, id);
78 editfilter(aRequest, aResponse,
80 id, filter.getType(), filter.getExpression(),
81 filter.getComment(), filter.getTag(), filter.getCommentAction(), filter.getArticleAction(), "");
84 public void addfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
85 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
86 String groupid=requestParser.getParameterWithDefault("groupid", "");
88 editfilter(aRequest, aResponse, groupid, "", "", "", "", "", "", "", "");
91 public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse,
92 String aGroupId, String anId, String aType, String anExpression, String aComments,
94 String aCommentAction, String anArticleAction, String anErrorMessage) throws ServletModuleExc {
96 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
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);
108 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
109 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
110 responseData.put("filtertypes", MirGlobal.abuse().getFilterEngine().getFilterTypes());
112 ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterTemplate);
114 catch (Throwable e) {
115 throw new ServletModuleFailure(e);
119 public void updatefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
120 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
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", "");
135 errorMessage = MirGlobal.abuse().getFilterEngine().addFilter(
136 groupid, type, expression, comments, tag,
137 articleaction, commentaction);
138 logAdminUsage(aRequest, id, "filter added");
141 errorMessage = MirGlobal.abuse().getFilterEngine().updateFilter(
142 groupid, id, type, expression, comments, tag,
143 articleaction, commentaction);
144 logAdminUsage(aRequest, id, "filter modified");
147 catch (StorageObjectExc e) {
148 throw new ServletModuleFailure(e);
151 if (errorMessage!=null) {
152 editfilter(aRequest, aResponse, groupid, id, type,
153 expression, comments, tag, commentaction, articleaction, errorMessage);
156 MirGlobal.abuse().save();
157 listfilters(aRequest, aResponse);
161 public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
162 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
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");
169 listfilters(aRequest, aResponse);
172 public void deletefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
173 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
175 String groupid=requestParser.getParameter("groupid");
176 MirGlobal.abuse().getFilterEngine().deleteFilterGroup(groupid);
178 MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getOperationModuleName() + ":" + "filtergroup:"+groupid, "filter group deleted");
180 showfiltergroups(aRequest, aResponse);
183 public void showfilterconfiguration(HttpServletRequest aRequest, HttpServletResponse aResponse) {
184 showfiltergroups(aRequest, aResponse);
187 public void addfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
188 editfiltergroup(aRequest, aResponse, "", "");
191 public void editgroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
192 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
193 String id=requestParser.getParameterWithDefault("id", "");
195 FilterEngine.FilterGroup group = MirGlobal.abuse().getFilterEngine().getFilterGroupForId(id);
197 editfiltergroup(aRequest, aResponse, id, group.getName());
200 public void editfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse,
201 String anId, String aName) throws ServletModuleExc {
203 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
205 responseData.put("id", anId);
206 responseData.put("name", aName);
208 ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterGroupTemplate);
210 catch (Throwable e) {
211 throw new ServletModuleFailure(e);
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", "");
221 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
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);
229 responseData.put("filters", MirGlobal.abuse().getFilterEngine().getFilters(groupid));
231 ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate);
233 catch (Throwable e) {
234 throw new ServletModuleFailure(e);
238 public void updatefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
239 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
241 String name = requestParser.getParameterWithDefault("name", "");
242 String id = requestParser.getParameterWithDefault("id", "");
246 MirGlobal.abuse().getFilterEngine().addFilterGroup(name);
249 MirGlobal.abuse().getFilterEngine().updateFilterGroup(id, name);
252 catch (StorageObjectExc e) {
253 throw new ServletModuleFailure(e);
256 showfiltergroups(aRequest, aResponse);
259 public void showfiltergroups(HttpServletRequest aRequest, HttpServletResponse aResponse) {
260 URLBuilder urlBuilder = new URLBuilder();
263 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
265 urlBuilder.setValue("module", "Abuse");
266 urlBuilder.setValue("do", "showfiltergroups");
267 responseData.put("thisurl", urlBuilder.getQuery());
269 responseData.put("filtergroups", MirGlobal.abuse().getFilterEngine().getFilterGroups());
271 ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFilterGroupsTemplate);
273 catch (Throwable e) {
274 throw new ServletModuleFailure(e);
278 public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
279 URLBuilder urlBuilder = new URLBuilder();
282 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
284 urlBuilder.setValue("module", "Abuse");
285 urlBuilder.setValue("do", "showsettings");
287 responseData.put("thisurl", urlBuilder.getQuery());
289 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
290 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
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());
300 ServletHelper.generateResponse(aResponse.getWriter(), responseData, mainTemplate);
302 catch (Throwable e) {
303 throw new ServletModuleFailure(e);
307 public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
309 HTTPRequestParser parser = new HTTPRequestParser(aRequest);
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"));
316 MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize()));
318 catch (Throwable t) {
321 MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1"));
323 MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction"));
324 MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));
326 MirGlobal.abuse().save();
327 logAdminUsage(aRequest, "settings", "object modified");
329 showsettings(aRequest, aResponse);
331 catch (Throwable e) {
332 throw new ServletModuleFailure(e);
336 public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {
337 URLBuilder urlBuilder = new URLBuilder();
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());
345 responseData.put("log", MirGlobal.abuse().getLog());
347 ServletHelper.generateResponse(aResponse.getWriter(), responseData, viewLogTemplate);
349 catch (Throwable e) {
350 throw new ServletModuleFailure(e);