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 java.util.Locale;
36 import javax.servlet.http.HttpServletRequest;
37 import javax.servlet.http.HttpServletResponse;
39 import mir.log.LoggerWrapper;
40 import mir.servlet.ServletModule;
41 import mir.servlet.ServletModuleExc;
42 import mir.servlet.ServletModuleFailure;
43 import mir.util.HTTPRequestParser;
44 import mir.util.URLBuilder;
45 import mircoders.global.Abuse;
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 mainTemplate;
53 private String viewLogTemplate;
55 public static ServletModule getInstance() { return instance; }
57 private ServletModuleAbuse() {
58 logger = new LoggerWrapper("ServletModule.Abuse");
59 defaultAction = "showsettings";
61 editFilterTemplate = configuration.getString("ServletModule.Abuse.EditFilter.Template");
62 listFiltersTemplate = configuration.getString("ServletModule.Abuse.ListFilters.Template");
63 viewLogTemplate = configuration.getString("ServletModule.Abuse.ViewLog.Template");
64 mainTemplate = configuration.getString("ServletModule.Abuse.Main.Template");
67 public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
68 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
69 String id=requestParser.getParameterWithDefault("id", "");
72 editfilter(aRequest, aResponse, "", "", "", "", "", "", "");
75 Abuse.FilterRule filter = MirGlobal.abuse().getFilter(id);
77 throw new ServletModuleExc("Filter not found");
79 editfilter(aRequest, aResponse, filter.getId(), filter.getType(), filter.getExpression(), filter.getComments(), filter.getCommentAction(), filter.getArticleAction(), "");
83 public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse,
84 String anId, String aType, String anExpression, String aComments,
85 String aCommentAction, String anArticleAction, String anErrorMessage) throws ServletModuleExc {
87 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
89 responseData.put("id", anId);
90 responseData.put("type", aType);
91 responseData.put("expression", anExpression);
92 responseData.put("comments", aComments);
93 responseData.put("articleaction", anArticleAction);
94 responseData.put("commentaction", aCommentAction);
95 responseData.put("errormessage", anErrorMessage);
97 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
98 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
99 responseData.put("filtertypes", MirGlobal.abuse().getFilterTypes());
101 ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterTemplate);
103 catch (Throwable e) {
104 throw new ServletModuleFailure(e);
108 public void updatefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
109 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
111 String type=requestParser.getParameterWithDefault("type", "");
112 String id=requestParser.getParameterWithDefault("id", "");
113 String expression=requestParser.getParameterWithDefault("expression", "");
114 String commentaction=requestParser.getParameterWithDefault("commentaction", "");
115 String articleaction=requestParser.getParameterWithDefault("articleaction", "");
116 String comments=requestParser.getParameterWithDefault("comments", "");
121 errorMessage = MirGlobal.abuse().addFilter(type, expression,comments, commentaction, articleaction);
122 logAdminUsage(aRequest, "?", "object added");
125 errorMessage = MirGlobal.abuse().setFilter(id, type, expression, comments, commentaction, articleaction);
126 logAdminUsage(aRequest, id, "object modified");
129 if (errorMessage!=null) {
130 editfilter(aRequest, aResponse, id, type, expression, comments, commentaction, articleaction, errorMessage);
133 MirGlobal.abuse().save();
134 showfilters(aRequest, aResponse);
138 public void delete(HttpServletRequest aRequest, HttpServletResponse aResponse) {
139 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
141 String id=requestParser.getParameterWithDefault("id", "");
142 MirGlobal.abuse().deleteFilter(id);
143 logAdminUsage(aRequest, id, "object deleted");
145 MirGlobal.abuse().save();
147 showfilters(aRequest, aResponse);
150 public void moveup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
151 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
153 String id=requestParser.getParameterWithDefault("id", "");
154 MirGlobal.abuse().moveFilterUp(id);
156 MirGlobal.abuse().save();
157 logAdminUsage(aRequest, id, "object moved upwards");
159 showfilters(aRequest, aResponse);
162 public void movedown(HttpServletRequest aRequest, HttpServletResponse aResponse) {
163 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
165 String id=requestParser.getParameterWithDefault("id", "");
166 MirGlobal.abuse().moveFilterDown(id);
167 logAdminUsage(aRequest, id, "object moved downwards");
169 MirGlobal.abuse().save();
171 showfilters(aRequest, aResponse);
174 public void movetop(HttpServletRequest aRequest, HttpServletResponse aResponse) {
175 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
177 String id=requestParser.getParameterWithDefault("id", "");
178 MirGlobal.abuse().moveFilterToTop(id);
180 MirGlobal.abuse().save();
181 logAdminUsage(aRequest, id, "object moved to the top");
183 showfilters(aRequest, aResponse);
186 public void movebottom(HttpServletRequest aRequest, HttpServletResponse aResponse) {
187 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
189 String id=requestParser.getParameterWithDefault("id", "");
190 MirGlobal.abuse().moveFilterToBottom(id);
192 MirGlobal.abuse().save();
193 logAdminUsage(aRequest, id, "object moved to the bottom");
195 showfilters(aRequest, aResponse);
198 public void add(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
199 editfilter(aRequest, aResponse, "", "", "", "", "", "", "");
202 public void showfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {
203 URLBuilder urlBuilder = new URLBuilder();
206 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
208 urlBuilder.setValue("module", "Abuse");
209 urlBuilder.setValue("do", "showfilters");
210 responseData.put("thisurl", urlBuilder.getQuery());
212 responseData.put("filters", MirGlobal.abuse().getFilters());
214 ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate);
216 catch (Throwable e) {
217 throw new ServletModuleFailure(e);
221 public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
222 URLBuilder urlBuilder = new URLBuilder();
225 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
227 urlBuilder.setValue("module", "Abuse");
228 urlBuilder.setValue("do", "showsettings");
230 responseData.put("thisurl", urlBuilder.getQuery());
232 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
233 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
235 responseData.put("disableop", new Boolean(MirGlobal.abuse().getOpenPostingDisabled()));
236 responseData.put("passwordop", new Boolean(MirGlobal.abuse().getOpenPostingPassword()));
237 responseData.put("logenabled", new Boolean(MirGlobal.abuse().getLogEnabled()));
238 responseData.put("logsize", Integer.toString(MirGlobal.abuse().getLogSize()));
239 responseData.put("usecookies", new Boolean(MirGlobal.abuse().getCookieOnBlock()));
240 responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction());
241 responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction());
243 ServletHelper.generateResponse(aResponse.getWriter(), responseData, mainTemplate);
245 catch (Throwable e) {
246 throw new ServletModuleFailure(e);
250 public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
252 HTTPRequestParser parser = new HTTPRequestParser(aRequest);
254 MirGlobal.abuse().setOpenPostingDisabled(parser.getParameterWithDefault("disableop", "").equals("1"));
255 MirGlobal.abuse().setOpenPostingPassword(parser.getParameterWithDefault("passwordop", "").equals("1"));
256 MirGlobal.abuse().setLogEnabled(parser.getParameterWithDefault("logenabled", "").equals("1"));
259 MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize()));
261 catch (Throwable t) {
264 MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1"));
266 MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction"));
267 MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));
269 MirGlobal.abuse().save();
270 logAdminUsage(aRequest, "settings", "object modified");
272 showsettings(aRequest, aResponse);
274 catch (Throwable e) {
275 throw new ServletModuleFailure(e);
279 public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {
280 URLBuilder urlBuilder = new URLBuilder();
283 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
284 urlBuilder.setValue("module", "Abuse");
285 urlBuilder.setValue("do", "showlog");
286 responseData.put("thisurl", urlBuilder.getQuery());
288 responseData.put("log", MirGlobal.abuse().getLog());
290 ServletHelper.generateResponse(aResponse.getWriter(), responseData, viewLogTemplate);
292 catch (Throwable e) {
293 throw new ServletModuleFailure(e);