summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Manfre2022-12-06 23:59:05 -0500
committerGitHub2022-12-06 21:59:05 -0700
commit39a40e4dae8da8b6e7072fcbee2fc745c27c016d (patch)
treeb8f149b4d232cd4f5598535ded61cfb7dd121e78
parent126c7a14ecc89936ea5477d7baf1eb200da71f53 (diff)
downloadtakahe-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.py6
-rw-r--r--core/signatures.py4
-rw-r--r--takahe/settings.py6
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}/)"
+)