init_app.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. """Initial loading script"""
  2. from app.config import ALIAS_DOMAINS, PREMIUM_ALIAS_DOMAINS
  3. from app.models import Mailbox, Contact, SLDomain
  4. from app.log import LOG
  5. from app.extensions import db
  6. from app.pgp_utils import load_public_key
  7. from server import create_app
  8. def load_pgp_public_keys():
  9. """Load PGP public key to keyring"""
  10. for mailbox in Mailbox.query.filter(Mailbox.pgp_public_key != None).all():
  11. LOG.d("Load PGP key for mailbox %s", mailbox)
  12. fingerprint = load_public_key(mailbox.pgp_public_key)
  13. # sanity check
  14. if fingerprint != mailbox.pgp_finger_print:
  15. LOG.exception(
  16. "fingerprint %s different for mailbox %s", fingerprint, mailbox
  17. )
  18. mailbox.pgp_finger_print = fingerprint
  19. db.session.commit()
  20. for contact in Contact.query.filter(Contact.pgp_public_key != None).all():
  21. LOG.d("Load PGP key for %s", contact)
  22. fingerprint = load_public_key(contact.pgp_public_key)
  23. # sanity check
  24. if fingerprint != contact.pgp_finger_print:
  25. LOG.exception(
  26. "fingerprint %s different for contact %s", fingerprint, contact
  27. )
  28. contact.pgp_finger_print = fingerprint
  29. db.session.commit()
  30. LOG.d("Finish load_pgp_public_keys")
  31. def add_sl_domains():
  32. for alias_domain in ALIAS_DOMAINS:
  33. if SLDomain.get_by(domain=alias_domain):
  34. LOG.d("%s is already a SL domain", alias_domain)
  35. else:
  36. LOG.info("Add %s to SL domain", alias_domain)
  37. SLDomain.create(domain=alias_domain)
  38. for premium_domain in PREMIUM_ALIAS_DOMAINS:
  39. if SLDomain.get_by(domain=premium_domain):
  40. LOG.d("%s is already a SL domain", premium_domain)
  41. else:
  42. LOG.info("Add %s to SL domain", premium_domain)
  43. SLDomain.create(domain=premium_domain, premium_only=True)
  44. db.session.commit()
  45. if __name__ == "__main__":
  46. app = create_app()
  47. with app.app_context():
  48. load_pgp_public_keys()
  49. add_sl_domains()