2 * Copyright (C) 2001, 2002 The Mir-coders group
\r
4 * This file is part of Mir.
\r
6 * Mir is free software; you can redistribute it and/or modify
\r
7 * it under the terms of the GNU General Public License as published by
\r
8 * the Free Software Foundation; either version 2 of the License, or
\r
9 * (at your option) any later version.
\r
11 * Mir is distributed in the hope that it will be useful,
\r
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
14 * GNU General Public License for more details.
\r
16 * You should have received a copy of the GNU General Public License
\r
17 * along with Mir; if not, write to the Free Software
\r
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\r
20 * In addition, as a special exception, The Mir-coders gives permission to link
\r
21 * the code of this program with any library licensed under the Apache Software License,
\r
22 * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
\r
23 * (or with modified versions of the above that use the same license as the above),
\r
24 * and distribute linked combinations including the two. You must obey the
\r
25 * GNU General Public License in all respects for all of the code used other than
\r
26 * the above mentioned libraries. If you modify this file, you may extend this
\r
27 * exception to your version of the file, but you are not obligated to do so.
\r
28 * If you do not wish to do so, delete this exception statement from your version.
\r
31 package mircoders.servlet;
\r
33 import java.util.Locale;
\r
34 import java.util.Map;
\r
35 import javax.servlet.http.HttpServletRequest;
\r
36 import javax.servlet.http.HttpServletResponse;
\r
38 import mir.log.LoggerWrapper;
\r
39 import mir.servlet.ServletModule;
\r
40 import mir.servlet.ServletModuleExc;
\r
41 import mir.servlet.ServletModuleFailure;
\r
42 import mir.util.HTTPRequestParser;
\r
43 import mir.util.URLBuilder;
\r
44 import mircoders.global.Abuse;
\r
45 import mircoders.global.MirGlobal;
\r
47 public class ServletModuleAbuse extends ServletModule {
\r
48 private static ServletModuleAbuse instance = new ServletModuleAbuse();
\r
49 private String editFilterTemplate;
\r
50 private String listFiltersTemplate;
\r
51 private String mainTemplate;
\r
52 private String viewLogTemplate;
\r
54 public static ServletModule getInstance() { return instance; }
\r
56 private ServletModuleAbuse() {
\r
57 logger = new LoggerWrapper("ServletModule.Abuse");
\r
58 defaultAction = "showsettings";
\r
60 editFilterTemplate = configuration.getString("ServletModule.Abuse.EditFilter.Template");
\r
61 listFiltersTemplate = configuration.getString("ServletModule.Abuse.ListFilters.Template");
\r
62 viewLogTemplate = configuration.getString("ServletModule.Abuse.ViewLog.Template");
\r
63 mainTemplate = configuration.getString("ServletModule.Abuse.Main.Template");
\r
66 public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
\r
67 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
\r
68 String id=requestParser.getParameterWithDefault("id", "");
\r
70 if (id.equals("")) {
\r
71 editfilter(aRequest, aResponse, "", "", "", "", "", "", "");
\r
74 Abuse.FilterRule filter = MirGlobal.abuse().getFilter(id);
\r
76 throw new ServletModuleExc("Filter not found");
\r
78 editfilter(aRequest, aResponse, filter.getId(), filter.getType(), filter.getExpression(), filter.getComments(), filter.getCommentAction(), filter.getArticleAction(), "");
\r
82 public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse,
\r
83 String anId, String aType, String anExpression, String aComments,
\r
84 String aCommentAction, String anArticleAction, String anErrorMessage) throws ServletModuleExc {
\r
86 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
\r
88 responseData.put("id", anId);
\r
89 responseData.put("type", aType);
\r
90 responseData.put("expression", anExpression);
\r
91 responseData.put("comments", aComments);
\r
92 responseData.put("articleaction", anArticleAction);
\r
93 responseData.put("commentaction", aCommentAction);
\r
94 responseData.put("errormessage", anErrorMessage);
\r
96 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
\r
97 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
\r
98 responseData.put("filtertypes", MirGlobal.abuse().getFilterTypes());
\r
100 ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterTemplate);
\r
102 catch (Throwable e) {
\r
103 throw new ServletModuleFailure(e);
\r
107 public void updatefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
\r
108 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
\r
110 String type=requestParser.getParameterWithDefault("type", "");
\r
111 String id=requestParser.getParameterWithDefault("id", "");
\r
112 String expression=requestParser.getParameterWithDefault("expression", "");
\r
113 String commentaction=requestParser.getParameterWithDefault("commentaction", "");
\r
114 String articleaction=requestParser.getParameterWithDefault("articleaction", "");
\r
115 String comments=requestParser.getParameterWithDefault("comments", "");
\r
117 String errorMessage;
\r
119 String userName = ServletHelper.getUserName(aRequest);
\r
121 if (id.equals("")) {
\r
122 errorMessage = MirGlobal.abuse().addFilter(type, expression,comments, commentaction, articleaction);
\r
125 errorMessage = MirGlobal.abuse().setFilter(id, type, expression, comments, commentaction, articleaction);
\r
128 if (errorMessage!=null) {
\r
129 editfilter(aRequest, aResponse, id, type, expression, comments, commentaction, articleaction, errorMessage);
\r
132 MirGlobal.abuse().save();
\r
133 showfilters(aRequest, aResponse);
\r
137 public void delete(HttpServletRequest aRequest, HttpServletResponse aResponse) {
\r
138 HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
\r
140 String id=requestParser.getParameterWithDefault("id", "");
\r
141 MirGlobal.abuse().deleteFilter(id);
\r
143 MirGlobal.abuse().save();
\r
145 showfilters(aRequest, aResponse);
\r
148 public void add(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
\r
149 editfilter(aRequest, aResponse, "", "", "", "", "", "", "");
\r
151 public void showfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {
\r
152 URLBuilder urlBuilder = new URLBuilder();
\r
155 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
\r
157 urlBuilder.setValue("module", "Abuse");
\r
158 urlBuilder.setValue("do", "showfilters");
\r
159 responseData.put("thisurl", urlBuilder.getQuery());
\r
161 responseData.put("filters", MirGlobal.abuse().getFilters());
\r
163 ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate);
\r
165 catch (Throwable e) {
\r
166 throw new ServletModuleFailure(e);
\r
170 public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
\r
171 URLBuilder urlBuilder = new URLBuilder();
\r
174 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
\r
176 urlBuilder.setValue("module", "Abuse");
\r
177 urlBuilder.setValue("do", "showsettings");
\r
179 responseData.put("thisurl", urlBuilder.getQuery());
\r
181 responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
\r
182 responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
\r
184 responseData.put("disableop", new Boolean(MirGlobal.abuse().getOpenPostingDisabled()));
\r
185 responseData.put("passwordop", new Boolean(MirGlobal.abuse().getOpenPostingPassword()));
\r
186 responseData.put("logenabled", new Boolean(MirGlobal.abuse().getLogEnabled()));
\r
187 responseData.put("logsize", Integer.toString(MirGlobal.abuse().getLogSize()));
\r
188 responseData.put("usecookies", new Boolean(MirGlobal.abuse().getCookieOnBlock()));
\r
189 responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction());
\r
190 responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction());
\r
192 ServletHelper.generateResponse(aResponse.getWriter(), responseData, mainTemplate);
\r
194 catch (Throwable e) {
\r
195 throw new ServletModuleFailure(e);
\r
199 public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
\r
201 HTTPRequestParser parser = new HTTPRequestParser(aRequest);
\r
203 MirGlobal.abuse().setOpenPostingDisabled(parser.getParameterWithDefault("disableop", "").equals("1"));
\r
204 MirGlobal.abuse().setOpenPostingPassword(parser.getParameterWithDefault("passwordop", "").equals("1"));
\r
205 MirGlobal.abuse().setLogEnabled(parser.getParameterWithDefault("logenabled", "").equals("1"));
\r
208 MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize()));
\r
210 catch (Throwable t) {
\r
213 MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1"));
\r
215 MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction"));
\r
216 MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));
\r
218 MirGlobal.abuse().save();
\r
220 showsettings(aRequest, aResponse);
\r
222 catch (Throwable e) {
\r
223 throw new ServletModuleFailure(e);
\r
227 public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {
\r
228 URLBuilder urlBuilder = new URLBuilder();
\r
232 Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
\r
233 urlBuilder.setValue("module", "Abuse");
\r
234 urlBuilder.setValue("do", "showlog");
\r
235 responseData.put("thisurl", urlBuilder.getQuery());
\r
237 responseData.put("log", MirGlobal.abuse().getLog());
\r
239 ServletHelper.generateResponse(aResponse.getWriter(), responseData, viewLogTemplate);
\r
241 catch (Throwable e) {
\r
242 throw new ServletModuleFailure(e);
\r