#! /bin/sh #------------------------------------------------------------------------------ # part of the sn-package for eisfair # delete external server and remove all related groups # last update: 2003/09/11 # (c) 2001-2003 by Christian Würdig (eisfair@chriswue.de) #------------------------------------------------------------------------------ outgoing="/var/spool/news/.outgoing" numb=0 keep="yes" check_groups() { cd .. idx=0 clrhome colecho "following groups related to server $1 found:" gn echo for group in *; do cd "$group" if [ -e .outgoing ]; then o=`ls -la .outgoing | sed -e 's#.*-> ../.outgoing/##' | cut -d: -f 1` if [ "$1" = "$o" ]; then idx=`expr $idx + 1` eval relgroup_$idx='"$group"' echo "$group" m=`expr $idx % 20` if [ "$m" = 0 ]; then echo echo -e "Press ENTER to continue \c" read -s b clrhome colecho "following groups related to server $1 found:" gn echo fi fi fi cd .. done numb=$idx cd "$outgoing" echo /var/install/bin/anykey } get_newserver() { clrhome colecho "New Server" gn echo cd "$outgoing" n=0 for i in *; do t=`echo $i | cut -d: -f 1` if [ "$t" != "$1" ]; then n=`expr $n + 1` eval newserver_$n='"$t"' echo "$n) $t" fi done echo "0) Exit" echo while [ 1 ]; do echo -e "New server (1-$n, ENTER=Return, 0=Exit) \c" read a if [ "$a" = 0 ]; then exit 127 fi if [ "$a" = "" ]; then newserver="" break fi if [ "$a" -ge 1 -a "$a" -le "$n" ]; then eval newserver='$newserver_'$a break fi done } change_groups() { cd .. if /var/install/bin/ask "Change all groups to $1"; then idx=0 while [ "$idx" -lt "$numb" ]; do idx=`expr $idx + 1` eval group='$relgroup_'$idx touch /var/spool/news/.noservice cd "$group" rm -f .outgoing ln -s ../.outgoing/$newserver:119 .outgoing chown news .outgoing chgrp news .outgoing cd .. echo "Newsgroup '$group' moved to $newserver" rm -f /var/spool/news/.noservice done keep="no" else echo "Keeping groups, do not change anything." keep="yes" fi cd "$outgoing" } if [ ! -d "$outgoing" ]; then echo colecho "No external newsserver found." br x br echo /var/install/bin/anykey exit 0 fi cd "$outgoing" clrhome colecho "Delete external newsserver" gn echo n=0 for i in *; do n=`expr $n + 1` t=`echo $i | cut -f 1 -d ':'` eval server_$n='"$t"' echo "$n) $t" done echo "0) Exit" echo while [ 1 ]; do echo -e "Server (1-$n, ENTER=Return, 0=Exit) \c" read a if [ "$a" = 0 ]; then exit 127 fi if [ "$a" = "" ]; then break fi if [ "$a" -ge 1 -a "$a" -le "$n" ]; then eval server='$server_'$a check_groups "$server" if [ "$numb" = 0 ]; then echo echo "No related groups found. Removing server $server" rm -rf "$server:119" break else get_newserver "$server" if [ "$newserver" = "" ]; then break fi change_groups "$newserver" if [ "$keep" = "no" ]; then echo "all related groups changed to $newserver" echo "removing server $server" rm -rf "$server:119" else echo "$server not removed" fi break fi fi done echo /var/install/bin/anykey exit 0