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 addfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
183 editfiltergroup(aRequest, aResponse, "", "");
186 public void editgroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
187 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
188 String id=requestParser.getParameterWithDefault("id", "");
190 FilterEngine.FilterGroup group = MirGlobal.abuse().getFilterEngine().getFilterGroupForId(id);
192 editfiltergroup(aRequest, aResponse, id, group.getName());
195 public void editfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse,
196 String anId, String aName) throws ServletModuleExc {
198 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
200 responseData.put("id", anId);
201 responseData.put("name", aName);
203 ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterGroupTemplate);
205 catch (Throwable e) {
206 throw new ServletModuleFailure(e);
210 public void listfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {
211 URLBuilder urlBuilder = new URLBuilder();
212 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
213 String groupid=requestParser.getParameterWithDefault("groupid", "");
216 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
218 urlBuilder.setValue("module", "Abuse");
219 urlBuilder.setValue("do", "listfilters");
220 urlBuilder.setValue("groupid", groupid);
221 responseData.put("thisurl", urlBuilder.getQuery());
222 responseData.put("groupid", groupid);
224 responseData.put("filters", MirGlobal.abuse().getFilterEngine().getFilters(groupid));
226 ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate);
228 catch (Throwable e) {
229 throw new ServletModuleFailure(e);
233 public void updatefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
234 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
236 String name = requestParser.getParameterWithDefault("name", "");
237 String id = requestParser.getParameterWithDefault("id", "");
241 MirGlobal.abuse().getFilterEngine().addFilterGroup(name);
244 MirGlobal.abuse().getFilterEngine().updateFilterGroup(id, name);
247 catch (StorageObjectExc e) {
248 throw new ServletModuleFailure(e);
251 showfiltergroups(aRequest, aResponse);
254 public void showfiltergroups(HttpServletRequest aRequest, HttpServletResponse aResponse) {
255 URLBuilder urlBuilder = new URLBuilder();
258 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
260 urlBuilder.setValue("module", "Abuse");
261 urlBuilder.setValue("do", "showfiltergroups");
262 responseData.put("thisurl", urlBuilder.getQuery());
264 responseData.put("filtergroups", MirGlobal.abuse().getFilterEngine().getFilterGroups());
266 ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFilterGroupsTemplate);
268 catch (Throwable e) {
269 throw new ServletModuleFailure(e);
273 public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
274 URLBuilder urlBuilder = new URLBuilder();
277 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
279 urlBuilder.setValue("module", "Abuse");
280 urlBuilder.setValue("do", "showsettings");
282 responseData.put("thisurl", urlBuilder.getQuery());
284 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
285 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
287 responseData.put("disableop", new Boolean(MirGlobal.abuse().getOpenPostingDisabled()));
288 responseData.put("passwordop", new Boolean(MirGlobal.abuse().getOpenPostingPassword()));
289 responseData.put("logenabled", new Boolean(MirGlobal.abuse().getLogEnabled()));
290 responseData.put("logsize", Integer.toString(MirGlobal.abuse().getLogSize()));
291 responseData.put("usecookies", new Boolean(MirGlobal.abuse().getCookieOnBlock()));
292 responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction());
293 responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction());
295 ServletHelper.generateResponse(aResponse.getWriter(), responseData, mainTemplate);
297 catch (Throwable e) {
298 throw new ServletModuleFailure(e);
302 public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
304 HTTPRequestParser parser = new HTTPRequestParser(aRequest);
306 MirGlobal.abuse().setOpenPostingDisabled(parser.getParameterWithDefault("disableop", "").equals("1"));
307 MirGlobal.abuse().setOpenPostingPassword(parser.getParameterWithDefault("passwordop", "").equals("1"));
308 MirGlobal.abuse().setLogEnabled(parser.getParameterWithDefault("logenabled", "").equals("1"));
311 MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize()));
313 catch (Throwable t) {
316 MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1"));
318 MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction"));
319 MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));
321 MirGlobal.abuse().save();
322 logAdminUsage(aRequest, "settings", "object modified");
324 showsettings(aRequest, aResponse);
326 catch (Throwable e) {
327 throw new ServletModuleFailure(e);
331 public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {
332 URLBuilder urlBuilder = new URLBuilder();
335 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
336 urlBuilder.setValue("module", "Abuse");
337 urlBuilder.setValue("do", "showlog");
338 responseData.put("thisurl", urlBuilder.getQuery());
340 responseData.put("log", MirGlobal.abuse().getLog());
342 ServletHelper.generateResponse(aResponse.getWriter(), responseData, viewLogTemplate);
344 catch (Throwable e) {
345 throw new ServletModuleFailure(e);