+ throw new MirLocalizerFailure(t);
+ }
+
+ filterTypes = new ArrayList();
+ filterTypesMap = new HashMap();
+
+ addSimpleAntiAbuseFilterType(new RegularExpressionFilterType("regexp"));
+ addSimpleAntiAbuseFilterType(new RegularExpressionFilterType("useragent", false, false,
+ RegularExpressionFilterType.REQUEST_HEADERS, new String[] {"User-Agent"}));
+ addSimpleAntiAbuseFilterType(new IPFilterType("ip"));
+ addSimpleAntiAbuseFilterType(new RegularExpressionFilterType("hostname", false, false,
+ RegularExpressionFilterType.REQUEST_HEADERS, new String[] {"hostname"}));
+ addSimpleAntiAbuseFilterType(new ThrottleFilter("throttle"));
+ addSimpleAntiAbuseFilterType(new PostingSizeFilterType("size"));
+ addSimpleAntiAbuseFilterType(new URLBlacklistFilterType("urlblacklist",
+ Arrays.asList(MirGlobal.config().getStringArray("Mir.URLBlacklistFilter.WhiteList"))));
+ }
+
+ public SessionHandler getOpenSessionHandler(String aSessionType) throws MirLocalizerExc, MirLocalizerFailure {
+ if ("email".equals(aSessionType))
+ return new MirBasicEmailArticleHandler();
+
+ if ("comment".equals(aSessionType))
+ return new MirBasicCommentPostingHandler(configuration.getBoolean("Localizer.OpenSession.PersistentUploadedFiles"));
+
+ if ("translation".equals(aSessionType))
+ return new MirBasicTranslationPostingHandler();
+
+ return new MirBasicArticlePostingHandler(configuration.getBoolean("Localizer.OpenSession.PersistentUploadedFiles"));
+ }
+
+ public SessionHandler getOpenSessionHandler(Request aRequest, Session aSession) throws MirLocalizerExc, MirLocalizerFailure {
+ if (aSession.getAttribute("handler")==null)
+ {
+ aSession.setAttribute("handler", getOpenSessionHandler(aRequest.getParameter("sessiontype")));
+ }
+
+ return (SessionHandler) aSession.getAttribute("handler");