summaryrefslogtreecommitdiff
path: root/mailman/mklist.inc
blob: 12d319b202dd7b46ebc3ab37d0e28fc5cdc809fc (plain)
  1. #!/bin/sh
  2. set -e
  3. cfgdir="/etc/local-ORG/mailman"
  4. sharedir="/etc/local-COMMON/mailman"
  5. skeldir="$sharedir/skel"
  6. MAILDOMAIN="${maildomain:-`head -n 1 /etc/mailname`}"
  7. LISTDOMAIN="$listdomain"
  8. LISTWEBDOMAIN="$listwebdomain"
  9. OWNER="${owner:-listmaster@$MAILDOMAIN}"
  10. LISTLANG="${lang:-en}"
  11. mkpw() {
  12. xkcdpass --numwords 4 --delimiter - || gpw | head -n 1
  13. }
  14. refreshlists() {
  15. existinglists="`/usr/sbin/list_lists -b`"
  16. }
  17. mklist() {
  18. list_anycase="$1"; shift
  19. type="$1"; shift
  20. desc="$1"; shift
  21. senders="$1"; shift
  22. list=$(printf %s "$list_anycase" | tr '[:upper:]' '[:lower:]')
  23. lang="${1:-$LISTLANG}"
  24. owner="${2:-$OWNER}"
  25. emailhost="${3:-$LISTDOMAIN}"
  26. urlhost="${4:-${LISTWEBDOMAIN:-$emailhost}}"
  27. if ! echo "$existinglists" | grep -q "^$list\$"; then
  28. newlist -l "$lang"${urlhost:+ -u "$urlhost"}${emailhost:+ -e "$emailhost"} -q "$list" "$owner" "$(mkpw)"
  29. fi
  30. LISTNAME="$list_anycase" LISTDESC="$desc" SENDERS="$senders" LISTOWNER="$owner" LISTHOST="$emailhost" "$sharedir/mklist.pl" "$skeldir/$type.$lang.py" > "$list.py"
  31. config_list -i "$cfgdir/$list.py" "$list"
  32. config_list -o "$cfgdir/$list.py" "$list"
  33. }
  34. populatelist() {
  35. list=$(printf %s "$1" | tr '[:upper:]' '[:lower:]'); shift
  36. [ ! -s "$cfgdir/$list.members" ] || add_members -r "$cfgdir/$list.members" -w n -a n "$list"
  37. [ ! -s "$cfgdir/$list.members-digest" ] || add_members -d "$cfgdir/$list.members-digest" -w n -a n "$list"
  38. [ -z "$*" ] || localuserinfo --custom='%fullname% <%mailaddress%>' "$@" | add_members -r - -w n -a n "$list"
  39. list_members --fullnames --preserve --regular -o "$cfgdir/$list.members" "$list"
  40. list_members --fullnames --preserve --digest -o "$cfgdir/$list.members-digest" "$list"
  41. }