тоссинг почты

From
Fedor Lizunkov (2:5020/960.1)
To
Andrew Vetlugin (2:5054/37.63)
Date
2005-04-11T21:51:38Z
Area
RU.UNIX.FTN
Привет Andrew!

10 Apr 05 02:39, Andrew Vetlugin wrote to All:

 AV> Народ, а как вы делаете автоматический тоссинг почты? Я как-то видел
 AV> скрипт на bash, там идея была в проверке наличия файлов .pkt, .tic,
 AV> .fr? и прочих - если есть тоссить. Буду рад если кто-нибудь поделится
 AV> своими скриптами.

 AV> PS: еще возможен ли вариант, чтобы qico при приеме .pkt, .tic и
 AV> аркмэйла создавал определенные флаги, а по этим флагам уже тоссить? У
 AV> меня в T-Mail'е раньше была такая затея реализована - было удобно.

Ну на, сам напросился ;-)

>===============Begin tossing===============<
#!/bin/sh


export FIDOCONFIG=/home/fido/etc/husky/fido.cfg

DEBUG=0

if [ "$DEBUG" = "1" ]; then
    NULL="/dev/stdout"
#    NULL=/home/fido/logs/debug.toss
else
    NULL=/dev/null
fi

#Path
PATHFIDO=/home/fido
PATHPROTIN=$PATHFIDO/in.prot
PATHUNPROTIN=$PATHFIDO/in.unprot
PATHFLAGS=$PATHFIDO/flags
PATHBIN=/usr/local/bin
PATHSBIN=/usr/local/sbin
PATHFIDOBIN=$PATHFIDO/bin
PATHETC=$PATHFIDO/etc
PATHLOG=$PATHFIDO/logs

# Опеределяем флаги
REPFLAG=$PATHFLAGS/repack.flag
TOSSFLAG=$PATHFLAGS/tossing
ALLFIXFLAG=$PATHFLAGS/allfix.itx
AREAFIXFLAG=$PATHFLAGS/areafix.itx
MAKEECHOUPFLAG=$PATHFLAGS/makeechoup.flag
#REQECHOUPFLAG=$PATHFLAGS/reqechoup.flag;
ECHOUPFLAG=$PATHFLAGS/echoup.flag
NEWNETMAILFLAG=$PATHFLAGS/newnetmail.itx
ROBOTFLAG=$PATHFLAGS/robot.flag
CBCSFLAG=$PATHFLAGS/cbcsmod.flag
DIFFFLAG=$PATHFLAGS/nodediff.flag
PURGEFLAG=$PATHFLAGS/purgeecho.flag
STATFLAG=$PATHFLAGS/echostat.flag
QSTFLAG=$PATHFLAGS/qicostat.flag
#CHOUTFLAG=$PATHFLAGS/chout.53.88.flag
PACKLOG=$PATHFLAGS/packlog.flag
FILELISTFLAG=$PATHFLAGS/filelist.flag
BACKUPFLAG=$PATHFLAGS/backup.flag
APASSIVEFLAG=$PATHFLAGS/autopassive.flag
POWERFAIL=/usr/tmp/turnUPSoff

# Определяем названия программ
HPT=$PATHBIN/hpt
TXT2PKT=$PATHBIN/txt2pkt
HTICK=$PATHBIN/htick
ITRAXP=$PATHBIN/itraxp
FTRACK=$PATHBIN/ftrack
HUTIL=$PATHBIN/hptutil
PLOG=$PATHFIDOBIN/postlog
Koi2Alt=$PATHBIN/koi82alt
Alt2Koi=$PATHBIN/alt2koi8
QICO=$PATHSBIN/qico
QCTL=$PATHBIN/qctl
QICOLINK=$PATHFIDOBIN/qicostat.link
QICOTOTAL=$PATHFIDOBIN/qicostat.total
QICOTRANS=$PATHFIDOBIN/qicostat.trans
QICOBUSY=$PATHFIDOBIN/qicostat.busy
MAKEECHOUP=$PATHFIDOBIN/makeechoup


# Определяем конфигурационные файлы
FCFG=$PATHETC/ftrack/ftrack.cfg
ITRCFG=$PATHETC/itraxp/itraxp.cfg
CBCSRUL=$PATHETC/rules/rules.cbcs
CBCSOFT=$PATHETC/rules/offtopic.cbcs
CBCSNOTE=$PATHETC/rules/note.cbcs

# Другое
PROCIN=$PATHETC/itraxp/procin.pl
PROCMAIN=$PATHETC/itraxp/procmain.pl
PROCOUT=$PATHETC/itraxp/procout.pl
PROCUP=$PATHETC/itraxp/procup.pl
PROCBACUPBBS=$PATHETC/itraxp/procbackupbbs.pl
FileArea=$PATHFIDO/files
FileList=$FileArea/filesbbs/lfa_all


# Временный файл для постинга правил и прочего
TMPF=$PATHFLAGS/tmp.txt

# Для страховки кое-что помещаем в лог
LOG=$PATHLOG/tossing.log

# Определяем текущее время
TIME=`date`

echo >>$LOG

# Этот скрипт уже работает, выходим
if [ -f $TOSSFLAG ]; then
    echo -n $TIME >>$LOG
    echo " Process is exists. Exit" >>$LOG
    echo -n $TIME >>$LOG
    echo " Process stoped" >>$LOG
    exit
fi

# Не тоссим ничего, если питание не в норме
while [ -f $POWERFAIL ]; do
    sleep 10s
done

# Удаляем этот флаг, чтобы не зациклилось
rm -f $REPFLAG

echo -n $TIME >>$LOG
echo " Process started" >>$LOG

# Ставим флаг занятости
echo -n >$TOSSFLAG

# Отправляем архив конфигов bbs.lfabbs.ru на fedor.lfabbs.ru
if [ -f $BACKUPFLAG ]; then
    echo -n $TIME >>$LOG
    bbsArc=`cat $BACKUPFLAG`
    echo " $bbaArc sent to 2:5020/960.1" >>$LOG
    $ITRAXP -c $ITRCFG $PROCBACUPBBS $PROCOUT >$NULL 2>$NULL
    rm -f $BACKUPFLAG >$NULL 2>$NULL
fi

# Создаем письма к роботу AreaFix на 2:5020/976
#if [ -f $REQECHOUPFLAG ]; then
#    echo -n $TIME >>$LOG
#    echo " Mail sent to Areafix by 2:5020/976" >>$LOG
#    rm -f $REQECHOUPFLAG >$NULL 2>$NULL
#    $ITRAXP -c $ITRCFG $PROCUP $PROCOUT >$NULL 2>$NULL
#fi


# Вытаскиваем все эхи, которые доступны с 2:5020/9600
if [ -f $ECHOUPFLAG ]; then
    echo -n $TIME >>$LOG
    echo " Copy echoarea.9600 from local.9600 filearea" >>$LOG
    unzip -o /home/fido/files/local.9600/echo9600.zip -d /home/fido/etc/husky
    rm -f $ECHOUPFLAG >$NULL 2>$NULL
fi

# Формируем список эх из присланных писем от Areafix 2:5020/976
if [ -f $MAKEECHOUPFLAG ]; then
    echo -n $TIME >>$LOG
    echo " Make echolist from 2:5020/976" >>$LOG
    rm -f $MAKEECHOUPFLAG >$NULL 2>$NULL
    $MAKEECHOUP >$NULL 2>$NULL
fi

# Проверяем поинтлист от
if [ -f $PATHPROTIN/zip06913.pnt ]; then
    echo -n $TIME >>$LOG
    echo " PointList is found" >>$LOG
    mv $PATHPROTIN/zip06913.pnt $PATHFIDO/points/zip06913.pnt
    $QCTL -ksd 2:5020/9600 $PATHFIDO/points/zip06913.pnt
fi

# Перекидываем backup.bbs2.tar.gz от 2:5020/9600 на 2:5020/960.1
if ls $PATHPROTIN/backup.bbs2*tar.gz >$NULL 2>$NULL; then
    echo -n $TIME >>$LOG
    echo " backup from 2:5020/9600" >>$LOG
    Name=`ls -1 $PATHPROTIN/backup.bbs2*tar.gz`
    for i in $Name; do
        $QCTL -ksh 2:5020/960.1 $i
    done
fi


# Тоссим netmail
if ls $PATHPROTIN/*.pkt >$NULL 2>$NULL; then
    echo -n $TIME >>$LOG
    echo " Netmail (prot)" >>$LOG
    # Распаковываем нетмейл
    $ITRAXP -c $ITRCFG $PROCIN >$NULL 2>$NULL
    # Обрабатываем запросы к AreaFix'y
    if [ -f $AREAFIXFLAG ]; then
        echo -n $TIME >>$LOG
        echo " Areafix pecessed" >>$LOG
        $HPT afix >$NULL 2>$NULL
        rm -f $AREAFIXFLAG >$NULL 2>$NULL
    fi
    # Обрабатываем запросы к AllFix'y
    if [ -f $ALLFIXFLAG ]; then
        echo -n $TIME >>$LOG
        echo " Allfix pecessed" >>$LOG
        $HTICK scan >$NULL 2>$NULL
        rm -f $ALLFIXFLAG >$NULL 2>$NULL
    fi
    $ITRAXP -c $ITRCFG $PROCMAIN >$NULL 2>$NULL

#    if [ -f $NEWNETMAILFLAG ]; then
#       rm -f $NEWNETMAILFLAG >$NULL 2>$NULL
#       $ITRAXP -c $ITRCFG $PROCMAIN >$NULL 2>$NULL
#    fi

    $ITRAXP -c $ITRCFG $PROCOUT >$NULL 2>$NULL
fi

if ls $PATHUNPROTIN/*.pkt >$NULL 2>$NULL; then
    echo -n $TIME >>$LOG
    echo " Netmail (unprot)" >>$LOG
    # Распаковываем нетмейл
    $ITRAXP -c $ITRCFG $PROCIN >$NULL 2>$NULL
    # Обрабатываем нетмейл
    $ITRAXP -c $ITRCFG $PROCMAIN $PROCOUT >$NULL 2>$NULL
fi


# Тоссим filecho
if ls $PATHPROTIN/*.tic >$NULL 2>$NULL; then
    echo -n $TIME >>$LOG
    echo " File" >>$LOG
    $HTICK toss >$NULL 2>$NULL
    $HTICK announce

#    echo > $FILELISTFLAG

    # Перекодируем files.bbs в files.bbs.koi8
#    echo -n $TIME >>$LOG
#    echo " files.bbs to files.bbs.koi8" >>$LOG
#    Files=`find $FileArea -iname files.bbs`
#    for i in $Files; do
#       cat $i | $Alt2Koi >$i.koi8
#    done
fi

# Тоссим echomail
if ls $PATHPROTIN/*.[Mm][Oo][0-9a-zA-Z] >$NULL 2>$NULL ||
   ls $PATHPROTIN/*.[Tt][Uu][0-9a-zA-Z] >$NULL 2>$NULL ||
   ls $PATHPROTIN/*.[Tt][Hh][0-9a-zA-Z] >$NULL 2>$NULL ||
   ls $PATHPROTIN/*.[Ww][Ee][0-9a-zA-Z] >$NULL 2>$NULL ||
   ls $PATHPROTIN/*.[Ff][Rr][0-9a-zA-Z] >$NULL 2>$NULL ||
   ls $PATHPROTIN/*.[Ss][Aa][0-9a-zA-Z] >$NULL 2>$NULL ||
   ls $PATHPROTIN/*.[Ss][Uu][0-9a-zA-Z] >$NULL 2>$NULL; then
    echo -n $TIME >>$LOG
    echo " Echomail" >>$LOG
    $HPT toss >$NULL 2>$NULL
fi

# роутим нетмайл, который был упакован и расстосен тоссером
if [ -f $NEWNETMAILFLAG ]; then
    for i in 1 2 3 4 5 6 7 8 9 10; do
        rm -f $NEWNETMAILFLAG >$NULL 2>$NULL
        $ITRAXP -c $ITRCFG $PROCMAIN >$NULL 2>$NULL
        if ! [ -f $NEWNETMAILFLAG ]; then
            break
        fi
    done
    $ITRAXP -c $ITRCFG $PROCOUT >$NULL 2>$NULL
fi

# Запускаем процесс autopassive
if [ -f $APASSIVEFLAG ]; then
    rm -f $APASSIVEFLAG >$NULL 2>$NULL
    echo -n $TIME >>$LOG
    echo " Start AutoPassive" >>$LOG
    $HPT pause >$NULL 2>$NULL
fi

# Обновляем нодлисты
if [ -f $DIFFFLAG ]; then
    rm -f $DIFFFLAG >$NULL 2>$NULL
    echo -n $TIME >>$LOG
    echo " UpDate nodelists" >>$LOG

    INPATH='/home/fido/files/xndlcrisis/'
    OUTPATH='/home/fido/nodelist/tmp/'
    WDIFF='w-diff.*'
    DIFF='nodediff'

    LS=`ls $INPATH$WDIFF`

    for i in $LS; do
        EX=`echo $i|cut -f2 -d "."`
        cp -f $i $OUTPATH$DIFF.$EX
    done

    $PATHBIN/nlupdate >$NULL 2>$NULL
    rm -f $FileArea/nodediff/nodelist.zip >$NULL 2>$NULL
    /usr/bin/zip -jD $FileArea/nodediff/nodelist.zip $PATHFIDO/nodelist/nodelist.[0-9]* >$NULL
2>$NULL
    rm -f $FileArea/pnt5020d/pnt5020.zip >$NULL 2>$NULL
    /usr/bin/zip -jD $FileArea/pnt5020d/pnt5020.zip $PATHFIDO/nodelist/pnt5020.[0-9]* >$NULL
2>$NULL
    $QICO -n >$NULL 2>$NULL
fi

# Уведомление 2:5020/53.88
#if [ -f $CHOUTFLAG ]; then
#    rm -f $CHOUTFLAG >$NULL 2>$NULL
#    echo -n $TIME >>$LOG
#    echo " Check Out 2:5020/53.88" >>$LOG
#    $PATHBIN/check.out.53.88 >$NULL 2>$NULL
#fi

# Постим правила в SU.CBCS
if [ -f $CBCSFLAG ]; then
    rm -f $CBCSFLAG >$NULL 2>$NULL
    echo -n $TIME >>$LOG
    echo " Post rules in SU.CBCS" >>$LOG
    cat $CBCSRUL | $Koi2Alt | $HPT post -nf "Moderator of SU.CBCS" -e "su.cbcs" -s "Rules" -z "UpTime -`uptime|cut -s -f -2 -d ,`" -f "loc" -x "-" >$NULL 2>$NULL
    cat  $CBCSOFT | $Koi2Alt | $HPT post -nf "Moderator of SU.CBCS" -e "su.cbcs" -s "Offtopic" -z "UpTime -`uptime|cut -s -f -2 -d ,`" -f "loc" -x "-" >$NULL 2>$NULL
    cat $CBCSNOTE | $Koi2Alt | $HPT post -nf "Moderator of SU.CBCS" -e "su.cbcs" -s "Note" -z "UpTime -`uptime|cut -s -f -2 -d ,`" -f "loc" -x "-" >$NULL 2>$NULL
fi

# Формируем статистику эх
if [ -f $STATFLAG ];then
    rm -f $STATFLAG >$NULL 2>$NULL
    echo -n $TIME >>$LOG
    echo " Echo statictic" >>$LOG
    $PLOG | $HPT post -nf "Tupoy Robot" -e "960.pvt.robots" -s "EchoAreas statistic" -z "UpTime -`uptime|cut -s -f -2 -d ,`" -f "loc" "-" >$NULL 2>$NULL
    echo -n >$ROBOTFLAG
    rm -f $EchoStat >$NULL 2>$NULL
fi

if [ -f $QSTFLAG ]; then
    rm -f $QSTFLAG >$NULL 2>$NULL
    echo -n $TIME >> $LOG
    echo " Qico statistic" >>$LOG
#    $PATHBIN/qico.stat < $PATHLOG/history | $Koi2Alt > $QicoStat
    $QICOLINK | $Koi2Alt | $HPT post -nf "Tupoy Robot" -e "960.pvt.robots" -s "Links statistic" -z "UpTime -`uptime|cut -s -f -2 -d ,`" -f "loc" "-" >$NULL 2>$NULL
#    $TXT2PKT -xf "2:5020/960.100" -xt "2:5020/960" -at "2:5020/960" -af "2:5020/960.100" -nt "All" -nf "Hpt" -e "960.pvt.robots" -s "Qico's statistic" -p "19lfa65" -t "hpt/LNX" -o "*L*F*A* BBS" -d "/var/spool/fido/in.prot" $QicoStat >$NULL 2>$NULL
#    $PATHBIN/qst_hist.lnk < $PATHLOG/history | $Koi2Alt > $QicoStat
    $QICOTOTAL | $Koi2Alt | $HPT post -nf "Tupoy Robot" -e "960.pvt.robots" -s "Total statistic" -z "UpTime -`uptime|cut -s -f -2 -d ,`" -f "loc" "-" >$NULL 2>$NULL
#    $TXT2PKT -xf "2:5020/960.100" -xt "2:5020/960" -at "2:5020/960" -af "2:5020/960.100" -nt "All" -nf "Hpt" -e "960.pvt.robots" -s "Links statistic" -p "19lfa65" -t "hpt/LNX" -o "*L*F*A* BBS" -d "/var/spool/fido/in.prot" $QicoStat >$NULL 2>$NULL
#    $PATHBIN/qst_hist.ses < $PATHLOG/history | $Koi2Alt > $QicoStat
    $QICOTRANS | $Koi2Alt | $HPT post -nf "Tupoy Robot" -e "960.pvt.robots" -s "Files transfered list" -z "UpTime -`uptime|cut -s -f -2 -d ,`" -f "loc" "-" >$NULL 2>$NULL
#    $TXT2PKT -xf "2:5020/960.100" -xt "2:5020/960" -at "2:5020/960" -af "2:5020/960.100" -nt "All" -nf "Hpt" -e "960.pvt.robots" -s "Sessions statistic" -p "19lfa65" -t "hpt/LNX" -o "*L*F*A* BBS" -d "/var/spool/fido/in.prot" $QicoStat >$NULL 2>$NULL
#    $HPT toss >$NULL 2>$NULL
    $QICOBUSY | $Koi2Alt | $HPT post -nf "Tupoy Robot" -e "960.pvt.robots" -s "Busy statistic" -z "UpTime -`uptime|cut -s -f -2 -d ,`" -f "loc" "-" >$NULL 2>$NULL
    echo -n >$ROBOTFLAG
fi

# Сканируем арию роботов
if [ -f $ROBOTFLAG ]; then
    rm -f $ROBOTFLAG >$NULL 2>$NULL
    echo -n $TIME >>$LOG
    echo " Scanning 960.pvt.robots area" >>$LOG
    $HPT scan -a960.pvt.robots >$NULL 2>$NULL
fi

# Пуржим и пакуем базу
if [ -f $PURGEFLAG ]; then
    rm -f $PURGEFLAG >$NULL 2>$NULL
    echo -n $TIME >>$LOG
    echo " Purge and pack areas" >>$LOG
    $HUTIL purge >$NULL 2>$NULL
    $HUTIL pack >$NULL 2>$NULL
fi

# Архивируем все логи
if [ -f $PACKLOG ]; then
    rm -f $PACKLOG >$NULL 2>$NULL

    $PATHFIDOBIN/packlog >$NULL 2>$NULL

    echo -n $TIME >>$LOG
    echo " All logs files is packinkg" >>$LOG
fi

if [ -f $FILELISTFLAG ]; then
    rm -f $FileList.zip $FILELISTFLAG >$NULL 2>$NULL
    echo -n $TIME >>$LOG
    echo " Make filelist" >>$LOG
    $HTICK filelist $TMPF
    echo > $FileList.txt
    echo " 2:5020/960@FidoNet" >> $FileList.txt
    echo " Work time - 00:00-08:00" >> $FileList.txt
    echo " Data phone - 931-4426" >> $FileList.txt
    echo >> $FileList.txt
    cat $TMPF >> $FileList.txt
    zip -j $FileList.zip $FileList.txt
    rm -f $TMPF >$NULL 2>$NULL
fi


echo -n $TIME >>$LOG
echo " Process stoped" >>$LOG

# Удаляем флаг занятости
rm -f $TOSSFLAG >$NULL 2>$NULL


>===============End   tossing===============<


С глyбоким yважением, Fedor Lizunkov.

--- GoldED+/LNX 1.1.5
 * Origin: *L*F*A* BBS & FREQ 00:00-08:00 only (2:5020/960.1)
SEEN-BY: 46/50 50/203 400/814 450/118 186 247 1024 451/30 453/129 454/9
SEEN-BY: 465/285 4646/15 5000/5000 5001/5001 5002/50 79 5003/57 5010/53
SEEN-BY: 5011/13 5012/23 5015/10 5019/31 5020/40 52 59 113 154 175 400 517 545
SEEN-BY: 5020/627 639 715 758 770 830 847 871 895 937 949 950 960 969 976 996
SEEN-BY: 5020/1042 1159 1175 1201 1229 1255 1280 1297 1317 1387 1452 1493 1523
SEEN-BY: 5020/1581 1604 1697 1813 1835 2009 2020 2142 2184 2238 2309 2424 2551
SEEN-BY: 5020/3274 4441 4767 10192 5021/29 5022/128 5025/3 750 5026/45 5027/16
SEEN-BY: 5030/49 115 556 966 1063 1900 5031/70 5035/38 5036/34 5042/13 5049/50
SEEN-BY: 5049/97 5054/1 8 9 18 37 63 67 81 5059/37 5062/1 10 5063/3 5067/2
SEEN-BY: 5069/7 5070/1222 5079/23 5080/80 1003 5083/21 5085/13 5090/108 113
SEEN-BY: 5092/1 5095/20 5096/18 5099/11 6000/12 254 6001/10 6035/9 6090/1
PATH: 5020/960 3274 758 4441 545 5054/1 37