Newer
Older
#!/bin/env python
from mailmanclient import Client
import os
import sys
import argparse
try:
import json
except ImportError:
import simplejson as json
def print_email_lists(email_lists):
for eamil_list in email_lists:
print email_list
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Dump Mailing List based on alias.")
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')
LIST_NAME= 'apachesvn@lists.med.stanford.edu' # just a tesing default
parser.add_argument('--members', help='Dumps a full members list from an email list <setting_name>=<setting_value>')
parser.add_argument('--list', action='store_true', default=False, help='Shows the email lists. (i.e.,apachesvn@lists.med.stanford.edu )')
parser.add_argument('--file', help='Places input into a file.')
parser.add_argument('--core-uri', dest='core_uri',default=CORE_URI)
parser.add_argument('--rest-user', dest='core_user',default=CORE_USER)
parser.add_argument('--rest-password', dest='core_password',default=CORE_PASS)
# Parse out the command line arguments
client = Client(args.core_uri, args.core_user, args.core_password)
# append the mail lists to an array from client
email_lists = []
for mlist in client.lists:
email_lists.append(mlist.fqdn_listname)
# lists members of a list
if args.members:
members_hash={}
email_list = args.members
# get lists
if email_list in email_lists:
ml = client.get_list(LIST_NAME)
members_hash={}
for member in ml.members:
#members_hash['user']=member.user
#members_hash['address']= member.address
#members_hash['list_id']= member.list_id
#members_hash['email']= member.email
members_hash['dump'] = member.rest_data
#held_data[held.request_id] = held.rest_data
#members_hash['preferences']= member.preferences
print json.dumps(members_hash, indent=2)
elif email_list.upper() == 'ALL':
print "Watch out thsi prints all lists."
else:
sys.exit('Error: Email list"'+email_list+'" does not exist in domain '+args.core_uri+
"\nSee List\n"+print_email_lists(email_lists))
# option just to show lists
print_email_lists(email_lists)