summaryrefslogtreecommitdiff
path: root/mailman/mklist.inc
blob: a392dd16404a997868cbb09f407fd040ddc1f55a (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. moderators="${5:-${MODERATORS}}"
  28. if ! echo "$existinglists" | grep -q "^$list\$"; then
  29. newlist -l "$lang"${urlhost:+ -u "$urlhost"}${emailhost:+ -e "$emailhost"} -q "$list" "$owner" "$(mkpw)"
  30. fi
  31. LISTNAME="$list_anycase" LISTDESC="$desc" SENDERS="$senders" LISTOWNER="$owner" LISTHOST="$emailhost" MODERATORS="$moderators" "$sharedir/mklist.pl" "$skeldir/$type.$lang.py" > "$list.py"
  32. config_list -i "$cfgdir/$list.py" "$list"
  33. config_list -o "$cfgdir/$list.py" "$list"
  34. }
  35. populatelist() {
  36. list=$(printf %s "$1" | tr '[:upper:]' '[:lower:]'); shift
  37. [ ! -s "$cfgdir/$list.members" ] || add_members -r "$cfgdir/$list.members" -w n -a n "$list"
  38. [ ! -s "$cfgdir/$list.members-digest" ] || add_members -d "$cfgdir/$list.members-digest" -w n -a n "$list"
  39. [ -z "$*" ] || localuserinfo --custom='%fullname% <%mailaddress%>' "$@" | add_members -r - -w n -a n "$list"
  40. list_members --fullnames --preserve --regular -o "$cfgdir/$list.members" "$list"
  41. list_members --fullnames --preserve --digest -o "$cfgdir/$list.members-digest" "$list"
  42. }