mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-12-01 05:51:16 +00:00
Use classmethod for disable federation check
This commit is contained in:
parent
595cc24c04
commit
c6d34b5f3a
6 changed files with 14 additions and 17 deletions
|
@ -315,7 +315,7 @@ def get_data(
|
||||||
"""wrapper for request.get"""
|
"""wrapper for request.get"""
|
||||||
# make sure this isn't a forbidden federated request
|
# make sure this isn't a forbidden federated request
|
||||||
if is_activitypub:
|
if is_activitypub:
|
||||||
models.SiteSettings.objects.get().raise_federation_disabled()
|
models.SiteSettings.raise_federation_disabled()
|
||||||
|
|
||||||
# check if the url is blocked
|
# check if the url is blocked
|
||||||
raise_not_valid_url(url)
|
raise_not_valid_url(url)
|
||||||
|
|
|
@ -5,17 +5,13 @@ from typing import Any, Iterator
|
||||||
from bookwyrm import activitypub, models
|
from bookwyrm import activitypub, models
|
||||||
from bookwyrm.book_search import SearchResult
|
from bookwyrm.book_search import SearchResult
|
||||||
from .abstract_connector import AbstractMinimalConnector
|
from .abstract_connector import AbstractMinimalConnector
|
||||||
from .connector_manager import ConnectorException
|
|
||||||
|
|
||||||
|
|
||||||
class Connector(AbstractMinimalConnector):
|
class Connector(AbstractMinimalConnector):
|
||||||
"""this is basically just for search"""
|
"""this is basically just for search"""
|
||||||
|
|
||||||
def __init__(self, identifier: str):
|
def __init__(self, identifier: str):
|
||||||
if models.SiteSettings.objects.get().disable_federation:
|
models.SiteSettings.raise_federation_disabled()
|
||||||
raise ConnectorException(
|
|
||||||
"Federation is disabled, cannot load BookWyrm connector", identifier
|
|
||||||
)
|
|
||||||
super().__init__(identifier)
|
super().__init__(identifier)
|
||||||
|
|
||||||
def get_or_create_book(self, remote_id: str) -> models.Edition:
|
def get_or_create_book(self, remote_id: str) -> models.Edition:
|
||||||
|
|
|
@ -8,6 +8,6 @@ def require_federation(function):
|
||||||
|
|
||||||
@wraps(function)
|
@wraps(function)
|
||||||
def wrap(request, *args, **kwargs): # pylint: disable=unused-argument
|
def wrap(request, *args, **kwargs): # pylint: disable=unused-argument
|
||||||
SiteSettings.objects.get().raise_federation_disabled()
|
SiteSettings.raise_federation_disabled()
|
||||||
|
|
||||||
return wrap
|
return wrap
|
||||||
|
|
|
@ -132,7 +132,7 @@ class ActivitypubMixin:
|
||||||
"""send out an activity"""
|
"""send out an activity"""
|
||||||
site_model = apps.get_model("bookwyrm.SiteSettings", require_ready=True)
|
site_model = apps.get_model("bookwyrm.SiteSettings", require_ready=True)
|
||||||
try:
|
try:
|
||||||
site_model.objects.get().raise_federation_disabled()
|
site_model.raise_federation_disabled()
|
||||||
except PermissionDenied:
|
except PermissionDenied:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -524,7 +524,7 @@ def broadcast_task(sender_id: int, activity: str, recipients: list[str]):
|
||||||
# checking this here ought to be redundant unless there are already-spawned tasks
|
# checking this here ought to be redundant unless there are already-spawned tasks
|
||||||
# when federation is turned off. In that case this should prevent them from running.
|
# when federation is turned off. In that case this should prevent them from running.
|
||||||
site_model = apps.get_model("bookwyrm.SiteSettings", require_ready=True)
|
site_model = apps.get_model("bookwyrm.SiteSettings", require_ready=True)
|
||||||
site_model.objects.get().raise_federation_disabled()
|
site_model.raise_federation_disabled()
|
||||||
|
|
||||||
user_model = apps.get_model("bookwyrm.User", require_ready=True)
|
user_model = apps.get_model("bookwyrm.User", require_ready=True)
|
||||||
sender = user_model.objects.select_related("key_pair").get(id=sender_id)
|
sender = user_model.objects.select_related("key_pair").get(id=sender_id)
|
||||||
|
|
|
@ -119,6 +119,12 @@ class SiteSettings(SiteModel):
|
||||||
default_settings.save()
|
default_settings.save()
|
||||||
return default_settings
|
return default_settings
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def raise_federation_disabled(cls) -> None:
|
||||||
|
"""Don't connect to the outside world"""
|
||||||
|
if cls.objects.get().disable_federation:
|
||||||
|
raise PermissionDenied("Federation is disabled")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def logo_url(self) -> Any:
|
def logo_url(self) -> Any:
|
||||||
"""helper to build the logo url"""
|
"""helper to build the logo url"""
|
||||||
|
@ -134,11 +140,6 @@ class SiteSettings(SiteModel):
|
||||||
"""helper to build the logo url"""
|
"""helper to build the logo url"""
|
||||||
return self.get_url("favicon", "images/favicon.png")
|
return self.get_url("favicon", "images/favicon.png")
|
||||||
|
|
||||||
def raise_federation_disabled(self) -> None:
|
|
||||||
"""Don't connect to the outside world"""
|
|
||||||
if self.disable_federation:
|
|
||||||
raise PermissionDenied("Federation is disabled")
|
|
||||||
|
|
||||||
def get_url(self, field: str, default_path: str) -> Any:
|
def get_url(self, field: str, default_path: str) -> Any:
|
||||||
"""get a media url or a default static path"""
|
"""get a media url or a default static path"""
|
||||||
uploaded = getattr(self, field, None)
|
uploaded = getattr(self, field, None)
|
||||||
|
|
|
@ -54,7 +54,7 @@ def is_api_request(request):
|
||||||
|
|
||||||
if is_api:
|
if is_api:
|
||||||
# don't allow API requests if federation is disabled
|
# don't allow API requests if federation is disabled
|
||||||
models.SiteSettings.objects.get().raise_federation_disabled()
|
models.SiteSettings.raise_federation_disabled()
|
||||||
return is_api
|
return is_api
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ def is_bookwyrm_request(request):
|
||||||
def handle_remote_webfinger(query, unknown_only=False, refresh=False):
|
def handle_remote_webfinger(query, unknown_only=False, refresh=False):
|
||||||
"""webfingerin' other servers"""
|
"""webfingerin' other servers"""
|
||||||
# SHOULD we do a remote webfinger? Is it allowed?
|
# SHOULD we do a remote webfinger? Is it allowed?
|
||||||
models.SiteSettings.objects.get().raise_federation_disabled()
|
models.SiteSettings.raise_federation_disabled()
|
||||||
|
|
||||||
user = None
|
user = None
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ def handle_remote_webfinger(query, unknown_only=False, refresh=False):
|
||||||
def subscribe_remote_webfinger(query):
|
def subscribe_remote_webfinger(query):
|
||||||
"""get subscribe template from other servers"""
|
"""get subscribe template from other servers"""
|
||||||
# SHOULD we do a remote webfinger? Is it allowed?
|
# SHOULD we do a remote webfinger? Is it allowed?
|
||||||
models.SiteSettings.objects.get().raise_federation_disabled()
|
models.SiteSettings.raise_federation_disabled()
|
||||||
|
|
||||||
template = None
|
template = None
|
||||||
# usernames could be @user@domain or user@domain
|
# usernames could be @user@domain or user@domain
|
||||||
|
|
Loading…
Reference in a new issue