Skip to content
Snippets Groups Projects
sync_users.py 1015 B
Newer Older
#!/usr/local/bin/python
from mailmanclient import Client
import os
import sys

Mr. Dmitry Makovey's avatar
Mr. Dmitry Makovey committed
CORE_URI = os.environ.get('MAILMAN_CORE_URI', 'http://mailman-core:8001/3.1')
CORE_USER = os.environ.get('MAILMAN_REST_USER', 'restadmin')
CORE_PASS = os.environ.get('MAILMAN_REST_PASSWORD', 'restpass')
Mr. Dmitry Makovey's avatar
Mr. Dmitry Makovey committed
client = Client(CORE_URI, CORE_USER, CORE_PASS)
Mr. Dmitry Makovey's avatar
Mr. Dmitry Makovey committed
ml_fqdn = sys.argv[1]
ml = client.get_list(ml_fqdn)
current_members = [m.address for m in ml.members]
Mr. Dmitry Makovey's avatar
Mr. Dmitry Makovey committed
new_member_list = []

for member_email in sys.stdin:
Mr. Dmitry Makovey's avatar
Mr. Dmitry Makovey committed
    print("Received {}".format(member_email))
    new_member_list.append(member_email)

for member_email in current_members:
Mr. Dmitry Makovey's avatar
Mr. Dmitry Makovey committed
    if member_email not in new_member_list:
        print("Intend to unsubscribe {}".format(member_email))
        ml.unsubscribe(member_email)

for member_email in new_member_list:
Mr. Dmitry Makovey's avatar
Mr. Dmitry Makovey committed
    if member_email not in current_members:
        print("Intend to subscribe {}".format(member_email))
        ml.subscribe(member_email, pre_verified=True, pre_confirmed=True, 
                     pre_approved=True)