diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java index 369bb0dcf..6ec0d002a 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java @@ -66,7 +66,8 @@ public class Contributors { new Contributor("yukieji", LANG), new Contributor("qsefthuopq", LANG), new Contributor("Karlatemp", CODE, LANG), - new Contributor("Mastory_Md5", LANG) + new Contributor("Mastory_Md5", LANG), + new Contributor("FluxCapacitor2", CODE) }; int estimatedLength = contributors.length * 40 + 50; StringBuilder html = new StringBuilder(estimatedLength); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/RequestHandler.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/RequestHandler.java index 83408647e..f10615839 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/RequestHandler.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/RequestHandler.java @@ -98,6 +98,7 @@ public class RequestHandler implements HttpHandler { response.getHeaders().putIfAbsent("Access-Control-Allow-Origin", config.get(WebserverSettings.CORS_ALLOW_ORIGIN)); response.getHeaders().putIfAbsent("Access-Control-Allow-Methods", "GET, OPTIONS"); response.getHeaders().putIfAbsent("Access-Control-Allow-Credentials", "true"); + response.getHeaders().putIfAbsent("X-Robots-Tag", "noindex, nofollow"); ResponseSender sender = new ResponseSender(addresses, exchange, response); sender.send(); } catch (Exception e) { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/ResponseFactory.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/ResponseFactory.java index ae181b719..3562e5c5a 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/ResponseFactory.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/ResponseFactory.java @@ -254,6 +254,17 @@ public class ResponseFactory { } } + public Response robotsResponse() { + try { + return Response.builder() + .setMimeType("text/plain") + .setContent(getResource("robots.txt")) + .build(); + } catch (UncheckedIOException e) { + return forInternalError(e, "Could not read robots.txt"); + } + } + public Response pageNotFound404() { return notFound404(locale.getString(ErrorPageLang.UNKNOWN_PAGE_404)); } @@ -412,4 +423,4 @@ public class ResponseFactory { return forInternalError(e, "Failed to generate player page"); } } -} \ No newline at end of file +} diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/ResponseResolver.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/ResponseResolver.java index 4b502c38e..5dbc4769f 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/ResponseResolver.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/ResponseResolver.java @@ -113,6 +113,7 @@ public class ResponseResolver { public void registerPages() { String plugin = "Plan"; + resolverService.registerResolver(plugin, "/robots.txt", (NoAuthResolver) request -> Optional.of(responseFactory.robotsResponse())); resolverService.registerResolver(plugin, "/debug", debugPageResolver); resolverService.registerResolver(plugin, "/players", playersPageResolver); resolverService.registerResolver(plugin, "/player", playerPageResolver); diff --git a/Plan/common/src/main/resources/assets/plan/web/error.html b/Plan/common/src/main/resources/assets/plan/web/error.html index e50c1e23a..93283cf66 100644 --- a/Plan/common/src/main/resources/assets/plan/web/error.html +++ b/Plan/common/src/main/resources/assets/plan/web/error.html @@ -8,6 +8,7 @@ +