From 5485e1268de707743bad0805d4bcf67ca2d055c9 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 6 Dec 2017 12:05:35 +0100 Subject: [PATCH] OO-3191: implement a special dispatch /robots.txt to prevent DDos attack from search engines --- .../dispatcher/_spring/dispatcherContext.xml | 5 ++ .../org/olat/dispatcher/RobotsDispatcher.java | 52 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 src/main/java/org/olat/dispatcher/RobotsDispatcher.java diff --git a/src/main/java/org/olat/core/dispatcher/_spring/dispatcherContext.xml b/src/main/java/org/olat/core/dispatcher/_spring/dispatcherContext.xml index 3adabf3258d..7d853b9f01f 100644 --- a/src/main/java/org/olat/core/dispatcher/_spring/dispatcherContext.xml +++ b/src/main/java/org/olat/core/dispatcher/_spring/dispatcherContext.xml @@ -14,6 +14,9 @@ <entry key="/dmz/"> <ref bean="dmzbean" /> </entry> + <entry key="/robots.txt"> + <ref bean="robotsdispatcher" /> + </entry> <entry key="/maintenance/"> <ref bean="maintenancebean" /> </entry> @@ -70,6 +73,8 @@ <bean id="oauthcallback" class="org.olat.login.oauth.OAuthDispatcher" /> + <bean id="robotsdispatcher" class="org.olat.dispatcher.RobotsDispatcher" /> + <!-- send bug report dispatcher --> <bean id="errorMailBean" class="org.olat.core.dispatcher.ErrorFeedbackMailer"> <property name="mailManager" ref="mailManager"/> diff --git a/src/main/java/org/olat/dispatcher/RobotsDispatcher.java b/src/main/java/org/olat/dispatcher/RobotsDispatcher.java new file mode 100644 index 00000000000..2f70d6a2ba2 --- /dev/null +++ b/src/main/java/org/olat/dispatcher/RobotsDispatcher.java @@ -0,0 +1,52 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.dispatcher; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.olat.core.dispatcher.Dispatcher; + +/** + * + * Initial date: 30.11.2015<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class RobotsDispatcher implements Dispatcher { + + @Override + public void execute(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + try { + response.setCharacterEncoding("UTF-8"); + } catch (Exception e) { + //we do our best + } + response.setContentType("text/plain"); + PrintWriter writer = response.getWriter(); + writer.write("User-agent: *\n"); + writer.write("Disallow: /"); + } +} -- GitLab