From 4737e7ea88c83bd3afdcc6174cccf0ac928180c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Kervella?= Date: Sun, 24 Jun 2018 15:10:26 +0000 Subject: [PATCH] Generate all mailing files --- .gitignore | 3 +++ config.ini.example | 10 ++++++++++ main.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 .gitignore create mode 100644 config.ini.example create mode 100644 main.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..641c4cc --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +config.ini +**/__pycache__/** +**.list diff --git a/config.ini.example b/config.ini.example new file mode 100644 index 0000000..bd69271 --- /dev/null +++ b/config.ini.example @@ -0,0 +1,10 @@ +[Re2o] +hostname = re2o.example.net +username = my_api_username +password = my_api_password + +[mailing-name1] +activate = yes + +[mailing-name2] +activate = no diff --git a/main.py b/main.py new file mode 100644 index 0000000..4302e88 --- /dev/null +++ b/main.py @@ -0,0 +1,48 @@ +from configparser import ConfigParser +import socket +import datetime + +from re2oapi import Re2oAPIClient + +config = ConfigParser() +config.read('config.ini') + +api_hostname = config.get('Re2o', 'hostname') +api_password = config.get('Re2o', 'password') +api_username = config.get('Re2o', 'username') + + +fallback = config.getboolean('DEFAULT', 'activate', fallback=False) + + +def write_generic_members_file(ml_name, members): + if config.getboolean(ml_name, 'activate', fallback=fallback): + members = "\n".join(m['email'] for m in members) + filename = 'ml.{name}.list'.format(name=ml_name) + with open(filename, 'w+') as f: + f.write(members) + + +def write_standard_members_files(api_client): + for ml in api_client.list_mailingstandard(): + write_generic_members_file(ml['name'], ml['members']) + + +def write_club_members_files(api_client): + fallback = config.get('DEFAULT', 'activate', fallback=False) + for ml in api_client.list_mailingclub(): + write_generic_members_file(ml['name'], ml['members']) + write_generic_members_file(ml['name']+'-admin', ml['members']) + + +api_client = Re2oAPIClient(api_hostname, api_username, api_password) +client_hostname = socket.gethostname().split('.', 1)[0] + + +for service in api_client.list_servicesregen(): +# if service['hostname'] == client_hostname and \ +# service['service_name'] == 'dns' and \ +# service['need_regen']: + write_standard_members_files(api_client) + write_club_members_files(api_client) +# api_client.patch(service['api_url'], data={'need_regen': False})