тоссинг почты
- 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