diff options
author | Michael Manfre | 2022-12-06 23:59:05 -0500 |
---|---|---|
committer | GitHub | 2022-12-06 21:59:05 -0700 |
commit | 39a40e4dae8da8b6e7072fcbee2fc745c27c016d (patch) | |
tree | b8f149b4d232cd4f5598535ded61cfb7dd121e78 | |
parent | 126c7a14ecc89936ea5477d7baf1eb200da71f53 (diff) | |
download | takahe-39a40e4dae8da8b6e7072fcbee2fc745c27c016d.tar.gz takahe-39a40e4dae8da8b6e7072fcbee2fc745c27c016d.tar.bz2 takahe-39a40e4dae8da8b6e7072fcbee2fc745c27c016d.zip |
Set a Takahe User-Agent header for signed requests (#142)
-rw-r--r-- | activities/models/post.py | 6 | ||||
-rw-r--r-- | core/signatures.py | 4 | ||||
-rw-r--r-- | takahe/settings.py | 6 |
3 files changed, 15 insertions, 1 deletions
diff --git a/activities/models/post.py b/activities/models/post.py index 1017694..b0c89ac 100644 --- a/activities/models/post.py +++ b/activities/models/post.py @@ -5,6 +5,7 @@ from typing import Optional import httpx import urlman from asgiref.sync import async_to_sync, sync_to_async +from django.conf import settings from django.contrib.postgres.indexes import GinIndex from django.db import models, transaction from django.template.defaultfilters import linebreaks_filter @@ -696,7 +697,10 @@ class Post(StatorModel): """ response = httpx.get( self.object_uri, - headers={"Accept": "application/json"}, + headers={ + "Accept": "application/json", + "User-Agent": settings.TAKAHE_USER_AGENT, + }, follow_redirects=True, ) if 200 <= response.status_code < 300: diff --git a/core/signatures.py b/core/signatures.py index d0443c3..45e6ff4 100644 --- a/core/signatures.py +++ b/core/signatures.py @@ -220,6 +220,10 @@ class HttpSignature: "algorithm": "rsa-sha256", } ) + + # Announce ourselves with an agent similar to Mastodon + headers["User-Agent"] = settings.TAKAHE_USER_AGENT + # Send the request with all those headers except the pseudo one del headers["(request-target)"] async with httpx.AsyncClient(timeout=timeout) as client: diff --git a/takahe/settings.py b/takahe/settings.py index 981bb96..f508952 100644 --- a/takahe/settings.py +++ b/takahe/settings.py @@ -7,6 +7,7 @@ from typing import Literal import dj_database_url import django_cache_url +import httpx import sentry_sdk from pydantic import AnyUrl, BaseSettings, EmailStr, Field, validator from sentry_sdk.integrations.django import DjangoIntegration @@ -354,3 +355,8 @@ CACHES = {"default": django_cache_url.parse(SETUP.CACHES_DEFAULT or "dummy://")} if SETUP.ERROR_EMAILS: ADMINS = [("Admin", e) for e in SETUP.ERROR_EMAILS] + +TAKAHE_USER_AGENT = ( + f"python-httpx/{httpx.__version__} " + f"(Takahe/{__version__}; +https://{SETUP.MAIN_DOMAIN}/)" +) |