From 662ddf44b910fbdc92ca7dca03757bba12692f88 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 29 Mar 2021 14:05:58 -0700 Subject: [PATCH 1/4] Avoid error when request Accept header is not set --- bookwyrm/tests/views/test_helpers.py | 5 +++++ bookwyrm/views/helpers.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/bookwyrm/tests/views/test_helpers.py b/bookwyrm/tests/views/test_helpers.py index 2d100f7b..a9dadcad 100644 --- a/bookwyrm/tests/views/test_helpers.py +++ b/bookwyrm/tests/views/test_helpers.py @@ -84,6 +84,11 @@ class ViewsHelpers(TestCase): request.headers = {"Accept": "Praise"} self.assertFalse(views.helpers.is_api_request(request)) + def test_is_api_request_no_headers(self, _): + """ should it return html or json """ + request = self.factory.get("/path") + self.assertFalse(views.helpers.is_api_request(request)) + def test_is_bookwyrm_request(self, _): """ checks if a request came from a bookwyrm instance """ request = self.factory.get("", {"q": "Test Book"}) diff --git a/bookwyrm/views/helpers.py b/bookwyrm/views/helpers.py index 52b5818f..006c6494 100644 --- a/bookwyrm/views/helpers.py +++ b/bookwyrm/views/helpers.py @@ -21,7 +21,7 @@ def get_user_from_username(viewer, username): def is_api_request(request): """ check whether a request is asking for html or data """ - return "json" in request.headers.get("Accept") or request.path[-5:] == ".json" + return "json" in request.headers.get("Accept", "") or request.path[-5:] == ".json" def is_bookwyrm_request(request): From 4115edad6eac840569d76335b8b865f0bebd3b70 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 29 Mar 2021 14:12:15 -0700 Subject: [PATCH 2/4] Adds robots.txt --- bookwyrm/templates/robots.txt | 5 +++++ bookwyrm/urls.py | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 bookwyrm/templates/robots.txt diff --git a/bookwyrm/templates/robots.txt b/bookwyrm/templates/robots.txt new file mode 100644 index 00000000..dc7b6bcb --- /dev/null +++ b/bookwyrm/templates/robots.txt @@ -0,0 +1,5 @@ +# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file + +User-agent: * +Disallow: /static/js/ +Disallow: /static/css/ diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index a2250c48..f5c13a4b 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -2,7 +2,7 @@ from django.conf.urls.static import static from django.contrib import admin from django.urls import path, re_path - +from django.views.generic.base import TemplateView from bookwyrm import settings, views from bookwyrm.utils import regex @@ -27,6 +27,10 @@ handler404 = "bookwyrm.views.not_found_page" handler500 = "bookwyrm.views.server_error_page" urlpatterns = [ path("admin/", admin.site.urls), + path( + "robots.txt", + TemplateView.as_view(template_name="robots.txt", content_type="text/plain"), + ), # federation endpoints re_path(r"^inbox/?$", views.Inbox.as_view()), re_path(r"%s/inbox/?$" % local_user_path, views.Inbox.as_view()), From 6bf3d9dcd88a1a28210e943dab74a6a49f21be47 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 29 Mar 2021 14:36:24 -0700 Subject: [PATCH 3/4] Adds hosts-meta path --- bookwyrm/templates/host_meta.xml | 5 +++++ bookwyrm/urls.py | 5 +++-- bookwyrm/views/__init__.py | 2 +- bookwyrm/views/wellknown.py | 7 +++++++ 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 bookwyrm/templates/host_meta.xml diff --git a/bookwyrm/templates/host_meta.xml b/bookwyrm/templates/host_meta.xml new file mode 100644 index 00000000..4fe8bcec --- /dev/null +++ b/bookwyrm/templates/host_meta.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index f5c13a4b..5d8bc5e9 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -35,8 +35,9 @@ urlpatterns = [ re_path(r"^inbox/?$", views.Inbox.as_view()), re_path(r"%s/inbox/?$" % local_user_path, views.Inbox.as_view()), re_path(r"%s/outbox/?$" % local_user_path, views.Outbox.as_view()), - re_path(r"^.well-known/webfinger/?$", views.webfinger), - re_path(r"^.well-known/nodeinfo/?$", views.nodeinfo_pointer), + re_path(r"^\.well-known/webfinger/?$", views.webfinger), + re_path(r"^\.well-known/nodeinfo/?$", views.nodeinfo_pointer), + re_path(r"^\.well-known/host-meta/?$", views.host_meta), re_path(r"^nodeinfo/2\.0/?$", views.nodeinfo), re_path(r"^api/v1/instance/?$", views.instance_info), re_path(r"^api/v1/instance/peers/?$", views.peers), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 6ec79c1c..dc71d359 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -36,4 +36,4 @@ from .tag import Tag, AddTag, RemoveTag from .updates import get_notification_count, get_unread_status_count from .user import User, EditUser, Followers, Following from .user_admin import UserAdmin -from .wellknown import webfinger, nodeinfo_pointer, nodeinfo, instance_info, peers +from .wellknown import * diff --git a/bookwyrm/views/wellknown.py b/bookwyrm/views/wellknown.py index 127c7491..178d558e 100644 --- a/bookwyrm/views/wellknown.py +++ b/bookwyrm/views/wellknown.py @@ -3,6 +3,7 @@ from dateutil.relativedelta import relativedelta from django.http import HttpResponseNotFound from django.http import JsonResponse +from django.template.response import TemplateResponse from django.utils import timezone from django.views.decorators.http import require_GET @@ -118,3 +119,9 @@ def peers(_): """ list of federated servers this instance connects with """ names = models.FederatedServer.objects.values_list("server_name", flat=True) return JsonResponse(list(names), safe=False) + + +@require_GET +def host_meta(request): + """ meta of the host """ + return TemplateResponse(request, "host_meta.xml", {"DOMAIN": DOMAIN}) From 4b445c3242e316c4614f0cda973d8c9d3f862ba7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 29 Mar 2021 14:55:23 -0700 Subject: [PATCH 4/4] Fixes indentation on host-meta xml --- bookwyrm/templates/host_meta.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/host_meta.xml b/bookwyrm/templates/host_meta.xml index 4fe8bcec..d510ba71 100644 --- a/bookwyrm/templates/host_meta.xml +++ b/bookwyrm/templates/host_meta.xml @@ -1,5 +1,5 @@ - +