#!/usr/bin/sh #---------------------------------------------------------------------------- # /var/install/bin/sn-rmsrvall - delete external server and remove all related groups # # Creation : 2001 chriswue # Last update: $Id$ # # Copyright (c) 2001-2003 by Christian Wuerdig eisfair(at)chriswue(dot)de # Copyright (c) 2010-@@YEAR@@ Holger Bruenjes, holgerbruenjes(at)gmx(dot)net # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- . /var/install/include/eislib . /var/lib/sn/sn.info keep="yes" # --------------------------------------------------------------------------- # check if console minium 80x24 # --------------------------------------------------------------------------- check_screensize case ${?} in 0) : ;; *) exit 1 ;; esac # --------------------------------------------------------------------------- # check groups # --------------------------------------------------------------------------- check_groups() { cd .. old_server="${1}" SN_TITLE="Found the following groups related to server" SN_SUBTITLE="\n [ ${old_server} ]" SN_FLAGS='--indent 12 --spread --list' SN_COLS='60*' SN_ROWS=0 export SN_TITLE export SN_SUBTITLE export SN_FLAGS export SN_COLS for group in * do cd "$group" if [ -e .outgoing ] then o=$(ls -la .outgoing | sed -e 's#.*-> ../.outgoing/##' | cut -d: -f 1) if [ "${old_server}" = "$o" ] then SN_ROWS=$((${SN_ROWS} + 1)) eval relgroup_${SN_ROWS}='"$group"' eval SN_${SN_ROWS}_1=\"${group}\" export SN_${SN_ROWS}_1 export SN_ROWS fi fi cd .. done numb=${SN_ROWS} if [ "${numb:-0}" -gt 0 ] then SN_QUESTION='View' export SN_QUESTION ask_tmpfile=$(${MKTEMP} -t XXXXXXXXXXXXX) ${CHOOSE} SN 1 > ${ask_tmpfile} rc=${?} read answer < ${ask_tmpfile} rm -f ${ask_tmpfile} # if ask break, ask returned 255 if [ ${rc} = 255 ] then answer=0 fi unset SN_FLAGS unset SN_SUBTITLE case ${answer} in '') : ;; 0) exit 127 ;; esac fi cd "${OUTGOING}" } # --------------------------------------------------------------------------- # del groups # --------------------------------------------------------------------------- del_groups() { old_server="${1}" ask_tmpfile=$(/${MKTEMP} -t XXXXXXXXXXXXX) mecho -n --info "Remove all groups to" ${ASK} " '${old_server}'" > ${ask_tmpfile} rc=${?} read yesno < ${ask_tmpfile} rm -f ${ask_tmpfile} # if ask break, ask returned 255 if [ ${rc} = 255 ] then yesno=no fi if [ "${yesno}" = "yes" ] then idx=0 while [ "$idx" -lt "${numb:-0}" ] do idx=$(($idx + 1)) eval group='$relgroup_'$idx touch /var/spool/news/.noservice su news -s /usr/bin/sh -c "/usr/sbin/sndelgroup $group 2>>/var/log/sn/snconf.log" mecho -n --info "Newsgroup" mecho -n " '${group}'" mecho --info " removed" rm -f /var/spool/news/.noservice done keep="no" else mecho --warn "Keeping groups, do not change anything." keep="yes" fi } # --------------------------------------------------------------------------- # main # --------------------------------------------------------------------------- if [ ! -d "${OUTGOING}" ] then echo mecho --warn "No external newsserver found." echo anykey exit 0 fi cd "${OUTGOING}" SN_TITLE="Delete external newsserver" SN_FLAGS='--indent 12 --spread' SN_COLS='40' SN_ROWS=0 export SN_TITLE export SN_FLAGS export SN_COLS for i in * do SN_ROWS=$((${SN_ROWS} + 1)) t=$(echo $i | cut -f 1 -d ':') eval server_${SN_ROWS}='"$t"' eval SN_${SN_ROWS}_1=\"${t}\" export SN_${SN_ROWS}_1 export SN_ROWS done SN_QUESTION='Select' export SN_QUESTION ask_tmpfile=$(${MKTEMP} -t XXXXXXXXXXXXX) ${CHOOSE} SN 1 > ${ask_tmpfile} rc=${?} read answer < ${ask_tmpfile} rm -f ${ask_tmpfile} # if ask break, ask returned 255 if [ ${rc} = 255 ] then answer=0 fi case ${answer} in '') exit 0 ;; 0) exit 127 ;; *) eval server='$server_'${answer} check_groups "$server" if [ "$numb" -eq 0 ] then echo mecho -n --info "No related groups found. Removing server" mecho " '${server}'" rm -rf "$server:119" break else del_groups "${server}" if [ "$keep" = "no" ] then mecho --info "all related groups removed" mecho -n --info "removing server" mecho " '${server}'" rm -rf "$server:119" else mecho -n "'${server}'" mecho --info " not removed" fi break fi ;; esac echo anykey exit 0 # --------------------------------------------------------------------------- # end # ---------------------------------------------------------------------------