72 lines
1.3 KiB
Bash
Executable File
72 lines
1.3 KiB
Bash
Executable File
#!/bin/bash -p
|
|
|
|
# This is a privileged script.
|
|
IFS=$' \t\n'
|
|
PATH=/usr/bin:/bin
|
|
unset ENV BASH_ENV CDPATH
|
|
umask 077
|
|
|
|
prog=$1
|
|
auth=$2
|
|
shift 2
|
|
|
|
tmp="$(tempfile)"
|
|
trap "rm $tmp" 0
|
|
exec >"$tmp"
|
|
|
|
authrn="$(getent passwd "$auth" | awk -F: '{ print $5 }' | sed -e 's/,.*//')"
|
|
|
|
h_from="$prog <ceo+$prog@csclub.uwaterloo.ca>"
|
|
h_to="Membership and Accounts <ceo@csclub.uwaterloo.ca>"
|
|
h_cc="$authrn <$auth@csclub.uwaterloo.ca>"
|
|
|
|
if test "$prog" = addmember; then
|
|
user=$1 name=$2 dept=$3 status=$4; shift 4
|
|
subj="New Member: $user"
|
|
test -z "$dept" && dept="things unknown"
|
|
body="Name: $name
|
|
Account: $user
|
|
Program: $dept
|
|
Added by: $auth"
|
|
|
|
elif test "$prog" = addclub; then
|
|
user=$1 name=$2 status=$4; shift 4
|
|
subj="New Club Account: $user"
|
|
body="Club: $name
|
|
Account: $user
|
|
Added by: $auth"
|
|
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
output=$(cat)
|
|
|
|
if test "$status" = "failure"; then
|
|
subj="$subj (FAILURES)"
|
|
fi
|
|
|
|
echo "From: $h_from"
|
|
echo "To: $h_to"
|
|
echo "Cc: $h_cc"
|
|
echo "X-Auth-User: $auth"
|
|
echo "X-New-User: $user"
|
|
echo "X-New-Name: $name"
|
|
echo "Subject: $subj"
|
|
echo
|
|
echo "$body" | fmt -s
|
|
echo
|
|
|
|
if test "$status" = "success"; then
|
|
echo all failures went undetected
|
|
elif test -n "$output"; then
|
|
echo "$output"
|
|
fi
|
|
|
|
echo
|
|
echo Your Friend,
|
|
echo "$prog"
|
|
|
|
exec >&2
|
|
env - /usr/sbin/sendmail -t -f "ceo@csclub.uwaterloo.ca" < "$tmp"
|