update relay activation
This commit is contained in:
parent
c74754ca4e
commit
85e0686f61
4 changed files with 56 additions and 32 deletions
|
@ -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:
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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",
|
||||
},
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Reference in a new issue