update relay activation

This commit is contained in:
Your Name 2024-01-15 13:09:12 -05:00 committed by Henri Dickson
parent c74754ca4e
commit 85e0686f61
4 changed files with 56 additions and 32 deletions

View file

@ -541,7 +541,7 @@ CORS_ALLOW_METHODS = (
DEACTIVATE_AFTER_UNREACHABLE_DAYS = 120
DEFAULT_RELAY_SERVER = "https://relay.neodb.net/actor"
DEFAULT_RELAY_SERVER = "https://relay.neodb.net/inbox"
SENTRY_DSN = env("NEODB_SENTRY_DSN")
if SENTRY_DSN:

View file

@ -9,6 +9,7 @@ from takahe.models import Config as TakaheConfig
from takahe.models import Domain as TakaheDomain
from takahe.models import Follow as TakaheFollow
from takahe.models import Identity as TakaheIdentity
from takahe.models import Relay as TakaheRelay
from takahe.models import User as TakaheUser
from takahe.utils import Takahe
from users.models import User
@ -99,45 +100,24 @@ class Setup:
logger.info(f"Updated user {user.username} as admin")
def sync_relay(self):
relay_follow = TakaheFollow.objects.filter(
source__username="__relay__",
source__local=True,
target__actor_uri=settings.DEFAULT_RELAY_SERVER,
relay = TakaheRelay.objects.filter(
state__in=["new", "subscribing", "subscribed"],
inbox_uri=settings.DEFAULT_RELAY_SERVER,
).first()
if settings.DISABLE_DEFAULT_RELAY:
if relay_follow:
if relay:
logger.info("Default relay is disabled, unsubscribing...")
Takahe.create_internal_message(
{
"type": "UnfollowRelay",
"actor_uri": settings.DEFAULT_RELAY_SERVER,
}
)
Takahe.update_state(relay, "unsubscribing")
else:
logger.info(f"Default relay is disabled.")
else:
if relay_follow:
logger.debug(
f"Default relay is enabled and subscribed, state: {relay_follow.state}"
)
if relay:
logger.debug(f"Default relay is enabled, state: {relay.state}")
else:
logger.info("Default relay is enabled, subscribing...")
relay_actor = TakaheIdentity.objects.filter(
username="__relay__",
local=True,
).first()
if not relay_actor:
logger.warning(
f"Default relay is enabled but relay actor does not exist."
)
return
Takahe.create_internal_message(
{
"type": "AddFollow",
"source": relay_actor.pk,
"target_actor": settings.DEFAULT_RELAY_SERVER,
"boosts": False,
}
TakaheRelay.objects.update_or_create(
inbox_uri=settings.DEFAULT_RELAY_SERVER,
defaults={"state": "new"},
)
def run(self):

View file

@ -886,4 +886,31 @@ class Migration(migrations.Migration):
"db_table": "activities_postattachment",
},
),
migrations.CreateModel(
name="Relay",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("inbox_uri", models.CharField(max_length=500, unique=True)),
("state", models.CharField(default="new", max_length=100)),
("state_changed", models.DateTimeField(auto_now_add=True)),
("state_next_attempt", models.DateTimeField(blank=True, null=True)),
(
"state_locked_until",
models.DateTimeField(blank=True, db_index=True, null=True),
),
("created", models.DateTimeField(auto_now_add=True)),
("updated", models.DateTimeField(auto_now=True)),
],
options={
"db_table": "users_relay",
},
),
]

View file

@ -1885,3 +1885,20 @@ class Config(models.Model):
unique_together = [
("key", "user", "identity", "domain"),
]
class Relay(models.Model):
inbox_uri = models.CharField(max_length=500, unique=True)
# state = StateField(RelayStates)
state = models.CharField(max_length=100, default="new")
state_changed = models.DateTimeField(auto_now_add=True)
state_next_attempt = models.DateTimeField(blank=True, null=True)
state_locked_until = models.DateTimeField(null=True, blank=True, db_index=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
# managed = False
db_table = "users_relay"