#!/bin/bash # Alex Dehnert --- 2009-04-23 # Attempt to update the list of UA lists # Takes the container mailing lists on the commandline prev=$1 anti=$2 nativepat=$3 prev=${prev:-ua-lists} anti=${anti:-ua-foreign-lists} nativepat=${nativepat:-ua} function prefix { #echo "$@" "$@" } function add_lists { ( lists=$(blanche $prev | grep LIST | cut -d : -f 2) for list in $lists; do # for each list we already know about # Add a list's sublists for newlist in $(blanche $list | grep LIST | cut -d : -f 2); do prefix blanche $prev -a $newlist; done; # Add a list's owner and memacl owner=$(athrun ops qy -s -f ace_name glin $list) towner=$(athrun ops qy -s -f ace_type glin $list) if [[ "$towner" == "LIST" ]]; then prefix blanche $prev -a $owner fi macl=$(athrun ops qy -s -f memace_name glin $list) tmacl=$(athrun ops qy -s -f memace_type glin $list) if [[ "$tmacl" == "LIST" ]]; then prefix blanche $prev -a $macl fi # Add stuff this owns owned=$(athrun ops qy -s get_ace_use list $list | grep -v ^$prev\$ | grep LIST | cut -d " " -f 2) for newlist in $owned; do prefix blanche $prev -a $newlist; done; done ) 2>&1 | grep -v "Record already exists" | grep -v "moira (query): No records in database match query" } echo Current members: $(blanche $prev -m | wc) echo Expanding out lists add_lists echo New members: $(blanche $prev -m | wc) echo Removing foreign lists for list in $(blanche $anti | grep LIST | cut -d : -f 2); do blanche $prev -d $list; done echo Finalized members: $(blanche $prev -m | wc) echo echo Likely foreign members blanche $prev | grep LIST: | sed -e "s/^LIST://" | egrep -v "$nativepat"