X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fservlet%2FServletModuleAbuse.java;h=4ceb5e72b8728ef34e0f20f546cdcb38905c0150;hb=6e0b75fe02c5daf91078fd1367bce1c77dbc41b9;hp=faf1e815b363dfc0fc31cda591d2b35a91125efb;hpb=d7429fe1376f25d0c4420c35c69dc9edd651ab25;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleAbuse.java b/source/mircoders/servlet/ServletModuleAbuse.java index faf1e815..4ceb5e72 100755 --- a/source/mircoders/servlet/ServletModuleAbuse.java +++ b/source/mircoders/servlet/ServletModuleAbuse.java @@ -1,181 +1,353 @@ -/* - * Copyright (C) 2001, 2002 The Mir-coders group - * - * This file is part of Mir. - * - * Mir is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * Mir is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Mir; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with the com.oreilly.servlet library, any library - * licensed under the Apache Software License, The Sun (tm) Java Advanced - * Imaging library (JAI), The Sun JIMI library (or with modified versions of - * the above that use the same license as the above), and distribute linked - * combinations including the two. You must obey the GNU General Public - * License in all respects for all of the code used other than the above - * mentioned libraries. If you modify this file, you may extend this exception - * to your version of the file, but you are not obligated to do so. If you do - * not wish to do so, delete this exception statement from your version. - */ - -package mircoders.servlet; - -import java.util.Locale; -import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import mir.log.LoggerWrapper; -import mir.servlet.ServletModule; -import mir.servlet.ServletModuleFailure; -import mir.util.HTTPRequestParser; -import mir.util.URLBuilder; -import mircoders.global.MirGlobal; - -public class ServletModuleAbuse extends ServletModule { - private static ServletModuleAbuse instance = new ServletModuleAbuse(); - public static ServletModule getInstance() { return instance; } - - private ServletModuleAbuse() { - logger = new LoggerWrapper("ServletModule.Abuse"); - defaultAction = "showsettings"; - } - - public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) { - HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - - String type=requestParser.getParameterWithDefault("type", ""); - String id=requestParser.getParameterWithDefault("id", ""); - String expression=requestParser.getParameterWithDefault("expression", ""); - - if (id.equals("")) { - MirGlobal.abuse().addFilter(type, expression); - } - else { - MirGlobal.abuse().setFilter(id, type, expression); - } - - MirGlobal.abuse().save(); - - showfilters(aRequest, aResponse); - } - - public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) { - HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - - String id=requestParser.getParameterWithDefault("id", ""); - MirGlobal.abuse().deleteFilter(id); - - MirGlobal.abuse().save(); - - showfilters(aRequest, aResponse); - } - - public void showfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) { - URLBuilder urlBuilder = new URLBuilder(); - - try { - Map responseData = ServletHelper.makeGenerationData(new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}); - - urlBuilder.setValue("module", "Abuse"); - urlBuilder.setValue("do", "showfilters"); - responseData.put("thisurl", urlBuilder.getQuery()); - - responseData.put("filters", MirGlobal.abuse().getFilters()); - responseData.put("filtertypes", MirGlobal.abuse().getFilterTypes()); - - ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.filters.template"); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - - public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) { - URLBuilder urlBuilder = new URLBuilder(); - - try { - Map responseData = ServletHelper.makeGenerationData(new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}); - - urlBuilder.setValue("module", "Abuse"); - urlBuilder.setValue("do", "showsettings"); - - responseData.put("thisurl", urlBuilder.getQuery()); - - responseData.put("articleactions", MirGlobal.abuse().getArticleActions()); - responseData.put("commentactions", MirGlobal.abuse().getCommentActions()); - - responseData.put("disableop", new Boolean(MirGlobal.abuse().getOpenPostingDisabled())); - responseData.put("passwordop", new Boolean(MirGlobal.abuse().getOpenPostingPassword())); - responseData.put("logenabled", new Boolean(MirGlobal.abuse().getLogEnabled())); - responseData.put("logsize", Integer.toString(MirGlobal.abuse().getLogSize())); - responseData.put("usecookies", new Boolean(MirGlobal.abuse().getCookieOnBlock())); - responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction()); - responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction()); - - ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.template"); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) { - try { - HTTPRequestParser parser = new HTTPRequestParser(aRequest); - - MirGlobal.abuse().setOpenPostingDisabled(parser.getParameterWithDefault("disableop", "").equals("1")); - MirGlobal.abuse().setOpenPostingPassword(parser.getParameterWithDefault("passwordop", "").equals("1")); - MirGlobal.abuse().setLogEnabled(parser.getParameterWithDefault("logenabled", "").equals("1")); - - try { - MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize())); - } - catch (Throwable t) { - } - - MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1")); - - MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction")); - MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction")); - - MirGlobal.abuse().save(); - - showsettings(aRequest, aResponse); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) { - URLBuilder urlBuilder = new URLBuilder(); - int count; - - try { - Map responseData = ServletHelper.makeGenerationData(new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}); - urlBuilder.setValue("module", "Abuse"); - urlBuilder.setValue("do", "showlog"); - responseData.put("thisurl", urlBuilder.getQuery()); - - responseData.put("log", MirGlobal.abuse().getLog()); - - ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.log.template"); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } +/* + * Copyright (C) 2001, 2002 The Mir-coders group + * + * This file is part of Mir. + * + * Mir is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Mir is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Mir; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * In addition, as a special exception, The Mir-coders gives permission to link + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. + * If you do not wish to do so, delete this exception statement from your version. + */ + +package mircoders.servlet; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import mir.log.LoggerWrapper; +import mir.servlet.ServletModule; +import mir.servlet.ServletModuleExc; +import mir.servlet.ServletModuleFailure; +import mir.storage.DatabaseExc; +import mir.util.HTTPRequestParser; +import mir.util.URLBuilder; +import mircoders.abuse.FilterEngine; +import mircoders.global.MirGlobal; + +public class ServletModuleAbuse extends ServletModule { + private static ServletModuleAbuse instance = new ServletModuleAbuse(); + private String editFilterTemplate; + private String listFiltersTemplate; + private String editFilterGroupTemplate; + private String listFilterGroupsTemplate; + private String mainTemplate; + private String viewLogTemplate; + + public static ServletModule getInstance() { return instance; } + + private ServletModuleAbuse() { + logger = new LoggerWrapper("ServletModule.Abuse"); + defaultAction = "showsettings"; + + editFilterTemplate = configuration.getString("ServletModule.Abuse.EditFilter.Template"); + listFiltersTemplate = configuration.getString("ServletModule.Abuse.ListFilters.Template"); + editFilterGroupTemplate = configuration.getString("ServletModule.Abuse.EditFilterGroup.Template"); + listFilterGroupsTemplate = configuration.getString("ServletModule.Abuse.ListFilterGroups.Template"); + viewLogTemplate = configuration.getString("ServletModule.Abuse.ViewLog.Template"); + mainTemplate = configuration.getString("ServletModule.Abuse.Main.Template"); + } + + public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + String id=requestParser.getParameterWithDefault("id", ""); + String groupid=requestParser.getParameterWithDefault("groupid", ""); + + FilterEngine.Filter filter = MirGlobal.abuse().getFilterEngine().getFilterForId(groupid, id); + + editfilter(aRequest, aResponse, + groupid, + id, filter.getType(), filter.getExpression(), + filter.getComment(), filter.getTag(), filter.getCommentAction(), filter.getArticleAction(), ""); + } + + public void addfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + String groupid=requestParser.getParameterWithDefault("groupid", ""); + + editfilter(aRequest, aResponse, groupid, "", "", "", "", "", "", "", ""); + } + + public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse, + String aGroupId, String anId, String aType, String anExpression, String aComments, + String aTag, + String aCommentAction, String anArticleAction, String anErrorMessage) throws ServletModuleExc { + try { + Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest)); + + responseData.put("id", anId); + responseData.put("groupid", aGroupId); + responseData.put("type", aType); + responseData.put("expression", anExpression); + responseData.put("comments", aComments); + responseData.put("tag", aTag); + responseData.put("articleaction", anArticleAction); + responseData.put("commentaction", aCommentAction); + responseData.put("errormessage", anErrorMessage); + + responseData.put("articleactions", MirGlobal.abuse().getArticleActions()); + responseData.put("commentactions", MirGlobal.abuse().getCommentActions()); + responseData.put("filtertypes", MirGlobal.abuse().getFilterEngine().getFilterTypes()); + + ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterTemplate); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + public void updatefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + + String type=requestParser.getParameterWithDefault("type", ""); + String id=requestParser.getParameterWithDefault("id", ""); + String groupid=requestParser.getParameter("groupid"); + String expression=requestParser.getParameterWithDefault("expression", ""); + String commentaction=requestParser.getParameterWithDefault("commentaction", ""); + String articleaction=requestParser.getParameterWithDefault("articleaction", ""); + String comments=requestParser.getParameterWithDefault("comments", ""); + String tag=requestParser.getParameterWithDefault("tag", ""); + + String errorMessage; + + try { + if (id.equals("")) { + errorMessage = MirGlobal.abuse().getFilterEngine().addFilter( + groupid, type, expression, comments, tag, + articleaction, commentaction); + logAdminUsage(aRequest, id, "filter added"); + } + else { + errorMessage = MirGlobal.abuse().getFilterEngine().updateFilter( + groupid, id, type, expression, comments, tag, + articleaction, commentaction); + logAdminUsage(aRequest, id, "filter modified"); + } + } + catch (DatabaseExc e) { + throw new ServletModuleFailure(e); + } + + if (errorMessage!=null) { + editfilter(aRequest, aResponse, groupid, id, type, + expression, comments, tag, commentaction, articleaction, errorMessage); + } + else { + MirGlobal.abuse().save(); + listfilters(aRequest, aResponse); + } + } + + public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + + String id=requestParser.getParameter("id"); + String groupid=requestParser.getParameter("groupid"); + MirGlobal.abuse().getFilterEngine().deleteFilter(groupid, id); + MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getOperationModuleName() + ":" + "filter:"+groupid+":"+id, "filter deleted"); + + listfilters(aRequest, aResponse); + } + + public void deletefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + + String groupid=requestParser.getParameter("groupid"); + MirGlobal.abuse().getFilterEngine().deleteFilterGroup(groupid); + + MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getOperationModuleName() + ":" + "filtergroup:"+groupid, "filter group deleted"); + + showfiltergroups(aRequest, aResponse); + } + + public void showfilterconfiguration(HttpServletRequest aRequest, HttpServletResponse aResponse) { + showfiltergroups(aRequest, aResponse); + } + + public void addfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + editfiltergroup(aRequest, aResponse, "", ""); + } + + public void editgroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + String id=requestParser.getParameterWithDefault("id", ""); + + FilterEngine.FilterGroup group = MirGlobal.abuse().getFilterEngine().getFilterGroupForId(id); + + editfiltergroup(aRequest, aResponse, id, group.getName()); + } + + public void editfiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse, + String anId, String aName) throws ServletModuleExc { + try { + Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest)); + + responseData.put("id", anId); + responseData.put("name", aName); + + ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterGroupTemplate); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + public void listfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) { + URLBuilder urlBuilder = new URLBuilder(); + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + String groupid=requestParser.getParameterWithDefault("groupid", ""); + + try { + Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest)); + + urlBuilder.setValue("module", "Abuse"); + urlBuilder.setValue("do", "listfilters"); + urlBuilder.setValue("groupid", groupid); + responseData.put("thisurl", urlBuilder.getQuery()); + responseData.put("groupid", groupid); + + responseData.put("filters", MirGlobal.abuse().getFilterEngine().getFilters(groupid)); + + ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + public void updatefiltergroup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + + String name = requestParser.getParameterWithDefault("name", ""); + String id = requestParser.getParameterWithDefault("id", ""); + + try { + if (id.equals("")) { + MirGlobal.abuse().getFilterEngine().addFilterGroup(name); + } + else { + MirGlobal.abuse().getFilterEngine().updateFilterGroup(id, name); + } + } + catch (DatabaseExc e) { + throw new ServletModuleFailure(e); + } + + showfiltergroups(aRequest, aResponse); + } + + public void showfiltergroups(HttpServletRequest aRequest, HttpServletResponse aResponse) { + URLBuilder urlBuilder = new URLBuilder(); + + try { + Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest)); + + urlBuilder.setValue("module", "Abuse"); + urlBuilder.setValue("do", "showfiltergroups"); + responseData.put("thisurl", urlBuilder.getQuery()); + + responseData.put("filtergroups", MirGlobal.abuse().getFilterEngine().getFilterGroups()); + + ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFilterGroupsTemplate); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) { + URLBuilder urlBuilder = new URLBuilder(); + + try { + Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest)); + + urlBuilder.setValue("module", "Abuse"); + urlBuilder.setValue("do", "showsettings"); + + responseData.put("thisurl", urlBuilder.getQuery()); + + responseData.put("articleactions", MirGlobal.abuse().getArticleActions()); + responseData.put("commentactions", MirGlobal.abuse().getCommentActions()); + + responseData.put("disableop", new Boolean(MirGlobal.abuse().getOpenPostingDisabled())); + responseData.put("passwordop", new Boolean(MirGlobal.abuse().getOpenPostingPassword())); + responseData.put("logenabled", new Boolean(MirGlobal.abuse().getLogEnabled())); + responseData.put("logsize", Integer.toString(MirGlobal.abuse().getLogSize())); + responseData.put("usecookies", new Boolean(MirGlobal.abuse().getCookieOnBlock())); + responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction()); + responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction()); + + ServletHelper.generateResponse(aResponse.getWriter(), responseData, mainTemplate); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + public void savesettings(HttpServletRequest aRequest, HttpServletResponse aResponse) { + try { + HTTPRequestParser parser = new HTTPRequestParser(aRequest); + + MirGlobal.abuse().setOpenPostingDisabled(parser.getParameterWithDefault("disableop", "").equals("1")); + MirGlobal.abuse().setOpenPostingPassword(parser.getParameterWithDefault("passwordop", "").equals("1")); + MirGlobal.abuse().setLogEnabled(parser.getParameterWithDefault("logenabled", "").equals("1")); + + try { + MirGlobal.abuse().setLogSize(parser.getIntegerWithDefault("logsize", MirGlobal.abuse().getLogSize())); + } + catch (Throwable t) { + } + + MirGlobal.abuse().setCookieOnBlock(parser.getParameterWithDefault("usecookies", "").equals("1")); + + MirGlobal.abuse().setArticleBlockAction(parser.getParameter("articleaction")); + MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction")); + + MirGlobal.abuse().save(); + logAdminUsage(aRequest, "settings", "object modified"); + + showsettings(aRequest, aResponse); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) { + URLBuilder urlBuilder = new URLBuilder(); + + try { + Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest)); + urlBuilder.setValue("module", "Abuse"); + urlBuilder.setValue("do", "showlog"); + responseData.put("thisurl", urlBuilder.getQuery()); + + responseData.put("log", MirGlobal.abuse().getLog()); + + ServletHelper.generateResponse(aResponse.getWriter(), responseData, viewLogTemplate); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } } \ No newline at end of file