mirror of
https://github.com/simple-login/app.git
synced 2025-10-07 05:49:54 +08:00
Run migrate_domain_trash() and set_custom_domain_for_alias() in sanity check
This commit is contained in:
parent
cfb52a2eba
commit
15610f1efc
2 changed files with 49 additions and 21 deletions
49
cron.py
49
cron.py
|
@ -25,6 +25,7 @@ from app.email_utils import (
|
||||||
send_email_with_rate_control,
|
send_email_with_rate_control,
|
||||||
normalize_reply_email,
|
normalize_reply_email,
|
||||||
is_valid_email,
|
is_valid_email,
|
||||||
|
get_email_domain_part,
|
||||||
)
|
)
|
||||||
from app.extensions import db
|
from app.extensions import db
|
||||||
from app.log import LOG
|
from app.log import LOG
|
||||||
|
@ -46,6 +47,9 @@ from app.models import (
|
||||||
TransactionalEmail,
|
TransactionalEmail,
|
||||||
Bounce,
|
Bounce,
|
||||||
Metric2,
|
Metric2,
|
||||||
|
SLDomain,
|
||||||
|
DeletedAlias,
|
||||||
|
DomainDeletedAlias,
|
||||||
)
|
)
|
||||||
from app.utils import sanitize_email
|
from app.utils import sanitize_email
|
||||||
from server import create_app
|
from server import create_app
|
||||||
|
@ -532,6 +536,48 @@ nb_referred_user_upgrade: {stats_today.nb_referred_user_paid} - {increase_percen
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def migrate_domain_trash():
|
||||||
|
"""Move aliases from global trash to domain trash if applicable"""
|
||||||
|
for deleted_alias in DeletedAlias.query.all():
|
||||||
|
alias_domain = get_email_domain_part(deleted_alias.email)
|
||||||
|
if not SLDomain.get_by(domain=alias_domain):
|
||||||
|
custom_domain = CustomDomain.get_by(domain=alias_domain)
|
||||||
|
if custom_domain:
|
||||||
|
LOG.exception(
|
||||||
|
"move %s to domain %s trash", deleted_alias, custom_domain
|
||||||
|
)
|
||||||
|
db.session.add(
|
||||||
|
DomainDeletedAlias(
|
||||||
|
user_id=custom_domain.user_id,
|
||||||
|
email=deleted_alias.email,
|
||||||
|
domain_id=custom_domain.id,
|
||||||
|
created_at=deleted_alias.created_at,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
DeletedAlias.delete(deleted_alias.id)
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
def set_custom_domain_for_alias():
|
||||||
|
"""Go through all aliases and make sure custom_domain is correctly set"""
|
||||||
|
sl_domains = [sl_domain.domain for sl_domain in SLDomain.query.all()]
|
||||||
|
for alias in Alias.query.filter(Alias.custom_domain_id.is_(None)):
|
||||||
|
if (
|
||||||
|
not any(alias.email.endswith(f"@{sl_domain}") for sl_domain in sl_domains)
|
||||||
|
and not alias.custom_domain_id
|
||||||
|
):
|
||||||
|
alias_domain = get_email_domain_part(alias.email)
|
||||||
|
custom_domain = CustomDomain.get_by(domain=alias_domain)
|
||||||
|
if custom_domain:
|
||||||
|
LOG.exception("set %s for %s", custom_domain, alias)
|
||||||
|
alias.custom_domain_id = custom_domain.id
|
||||||
|
else: # phantom domain
|
||||||
|
LOG.d("phantom domain %s %s %s", alias.user, alias, alias.enabled)
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
def sanity_check():
|
def sanity_check():
|
||||||
"""
|
"""
|
||||||
#TODO: investigate why DNS sometimes not working
|
#TODO: investigate why DNS sometimes not working
|
||||||
|
@ -643,6 +689,9 @@ def sanity_check():
|
||||||
if domain.name and "\n" in domain.name:
|
if domain.name and "\n" in domain.name:
|
||||||
LOG.exception("Domain %s name contain linebreak %s", domain, domain.name)
|
LOG.exception("Domain %s name contain linebreak %s", domain, domain.name)
|
||||||
|
|
||||||
|
migrate_domain_trash()
|
||||||
|
set_custom_domain_for_alias()
|
||||||
|
|
||||||
LOG.d("Finish sanity check")
|
LOG.d("Finish sanity check")
|
||||||
|
|
||||||
|
|
||||||
|
|
21
shell.py
21
shell.py
|
@ -101,27 +101,6 @@ def send_mobile_newsletter():
|
||||||
sleep(1)
|
sleep(1)
|
||||||
|
|
||||||
|
|
||||||
def migrate_domain_trash():
|
|
||||||
"""Move aliases from global trash to domain trash if applicable"""
|
|
||||||
for deleted_alias in DeletedAlias.query.all():
|
|
||||||
alias_domain = get_email_domain_part(deleted_alias.email)
|
|
||||||
if not SLDomain.get_by(domain=alias_domain):
|
|
||||||
custom_domain = CustomDomain.get_by(domain=alias_domain)
|
|
||||||
if custom_domain:
|
|
||||||
LOG.d("move %s to domain %s trash", deleted_alias, custom_domain)
|
|
||||||
db.session.add(
|
|
||||||
DomainDeletedAlias(
|
|
||||||
user_id=custom_domain.user_id,
|
|
||||||
email=deleted_alias.email,
|
|
||||||
domain_id=custom_domain.id,
|
|
||||||
created_at=deleted_alias.created_at,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
DeletedAlias.delete(deleted_alias.id)
|
|
||||||
|
|
||||||
db.session.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def disable_mailbox(mailbox_id):
|
def disable_mailbox(mailbox_id):
|
||||||
"""disable a mailbox and all of its aliases"""
|
"""disable a mailbox and all of its aliases"""
|
||||||
mailbox = Mailbox.get(mailbox_id)
|
mailbox = Mailbox.get(mailbox_id)
|
||||||
|
|
Loading…
Add table
Reference in a new issue