128 lines
3.9 KiB
Bash
Executable file
128 lines
3.9 KiB
Bash
Executable file
#!/bin/sh
|
|
##
|
|
## news-cancel
|
|
##
|
|
## Made by stransky
|
|
## Login stransky <stransky@crans.org>
|
|
##
|
|
## Started on dim 13 jan 2002 02:30:56 CET Nicolas STRANSKY
|
|
## Last update ven 19 sep 2003 14:21:27 CEST Nicolas STRANSKY
|
|
##
|
|
## Script pour annuler ou modérer un message de news.
|
|
##
|
|
## V 1.0 : utilisation de la commande ctlinnd cancel.
|
|
## V 2.0 : utilisation des commandes control cancel et supersede pour assurer
|
|
## la propagation des modifications effectuées.
|
|
|
|
|
|
if [[ "${ORIG_LOGNAME-$SUDO_USER}" = "" ]]
|
|
then moderateur=`who am i | awk '{print $1}'`
|
|
else moderateur=${ORIG_LOGNAME-$SUDO_USER}
|
|
fi
|
|
|
|
ovfiles=$(grep "^[[:digit:]]" /etc/news/buffindexed.conf | cut -d ':' -f 2 | tr "\n" " ")
|
|
groupe=adm
|
|
tempF=$(tempfile -d /tmp -p "newscancel")
|
|
tempF2=$(tempfile -d /tmp -p "newscancelcommentaire")
|
|
tempF3=$(tempfile -d /tmp -p "newscancelmessage")
|
|
|
|
VERIF () {
|
|
ligne=`grep -h --binary-files=text " $1 " $ovfiles | head -n 1 | awk -F "\t" '{print $1"~"$2"~"$3"~"$9}'`
|
|
auteur=`echo $ligne | awk -F "~" '{print $3}'`
|
|
titre=`echo $ligne | awk -F "~" '{print $2}'`
|
|
newsgroup=`echo $ligne | awk -F "~" '{print $4}' | awk '{print $3}' | awk -F : '{print $1}'`
|
|
#numero=`echo $ligne | awk -F "~" '{print $1}'`
|
|
numero=`echo $ligne | awk -F "~" '{print $4}' |awk -v VAR1=$newsgroup 'BEGIN {RS = " "} ; $0 ~ VAR1 {print $1}' | awk -F ":" '{print strtonum($2)}'`
|
|
|
|
if [[ $ligne != "" ]] ; then
|
|
echo "il s'agit du message \"$titre\", numéro $numero, posté par $auteur dans $newsgroup"
|
|
echo ""
|
|
echo -n "exact ? [o/n] "
|
|
read confirmation
|
|
case $confirmation in
|
|
o*|O*)
|
|
;;
|
|
|
|
*)
|
|
echo "On ne fait rien."
|
|
exit 0
|
|
;;
|
|
esac
|
|
else
|
|
echo "Aucun message ne correspond à cette ID"
|
|
exit 1
|
|
fi
|
|
|
|
}
|
|
|
|
SAUVEGARDE () {
|
|
echo "Sauvegarde du message dans /root/moderes/..."
|
|
sleep 1
|
|
rep=`echo $newsgroup | sed 's/\./\//g'`
|
|
cp /var/spool/news/articles/$rep/$numero /root/moderes/$newsgroup'.'$numero.nws
|
|
echo "$1 de $newsgroup.$numero" > $tempF
|
|
echo " " >> $tempF
|
|
echo "modérateur : $moderateur" >> $tempF
|
|
echo "commentaires : " > $tempF2
|
|
chown $moderateur.$groupe $tempF2
|
|
/bin/su $moderateur -c "$EDITOR $tempF2"
|
|
cat $tempF2 >> $tempF
|
|
echo "Envoi du mail aux modérateurs..."
|
|
cat $tempF | mutt -nx -a /root/moderes/$newsgroup'.'$numero.nws -s "moderation de $newsgroup.$numero par $moderateur" moderateurs@crans.org
|
|
rm -f $tempF $tempF2
|
|
echo " "
|
|
}
|
|
|
|
|
|
EDITION () {
|
|
cp /var/spool/news/articles/$rep/$numero $tempF3
|
|
chown $moderateur.$groupe $tempF3
|
|
/bin/su $moderateur -c "$EDITOR $tempF3"
|
|
(sleep 1 ; echo "mode reader" ; sleep 1 ; echo "group $newsgroup" ; sleep 1 ; echo post ; sleep 1 ; echo "Supersedes: $1" ; cat $tempF3 | egrep -v "^Message-ID:|^NNTP-Posting|^Path:|^X-Trace:|^X-Complaints-To:|^Xref:" ; echo '.' ; sleep 1 ; echo quit) | nc 138.231.136.3 119
|
|
rm -f $tempF3
|
|
}
|
|
|
|
CANCEL () {
|
|
# echo -n 'throttling inn... '
|
|
# /bin/su news -c "/usr/lib/news/bin/ctlinnd throttle 'article canceling'"
|
|
# echo "canceling article $1"
|
|
# /bin/su news -c "/usr/lib/news/bin/ctlinnd cancel $1"
|
|
#
|
|
# echo -n 'starting inn... '
|
|
# /bin/su news -c "/usr/lib/news/bin/ctlinnd go ''"
|
|
|
|
(sleep 1 ; echo "mode reader" ; sleep 1 ; echo "group $newsgroup" ; sleep 1 ; echo post ; sleep 1 ; echo "Control: cancel $1" ; echo "From: $moderateur@crans.org" ; echo "Subject: Moderation" ; echo "Newsgroups: $newsgroup" ; echo -e "\n" ; echo "This post has been moderated with news-cancel." ; echo '.' ; sleep 1 ; echo quit) | nc news.crans.org 119
|
|
}
|
|
|
|
|
|
|
|
if [ $UID -eq 0 ]
|
|
then
|
|
case $1 in
|
|
\<*@*\>)
|
|
VERIF $1
|
|
echo "Edition ou Annulation du message ? [E/A] "
|
|
read action
|
|
case $action in
|
|
e*|E*)
|
|
SAUVEGARDE Edition
|
|
EDITION $1
|
|
;;
|
|
a*|A*)
|
|
SAUVEGARDE Annulation
|
|
CANCEL $1
|
|
;;
|
|
*)
|
|
echo "attention, il n'y a eu ni édition ni annulation. relancer le script"
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "usage : news-cancel '<Message-ID>'"
|
|
;;
|
|
esac
|
|
|
|
else
|
|
echo "You must be root to launch this command."
|
|
exit 1
|
|
fi
|