#!/usr/local/bin/bash # mirrorpg-childs Version 2.7 2017-01-27 17:00 Author: Sergej Qkowlew # This file is Public Doimain Я передаю это в общественное достояние for i in config functions generate allsites 1site abandoned childs do [ ! -s ./mirrorpg-$i ] && wget http://mirrorpg.arda.ru/mirrorpg/mirrorpg-$i [ ! -s ./mirrorpg-$i ] && echo "No file mirrorpg-$i here. Download it from http://mirrorpg.arda.ru/mirrorpg/$i" [ ! -s ./mirrorpg-$i ] && exit [ ! -x ./mirrorpg-$i ] && chmod a+x ./mirrorpg-$i done . ./mirrorpg-config . ./mirrorpg-functions # =================================== ====================================== # COLLECT INFO FROM CHILD HALLS СБОР ИНФОРМАЦИИ С ДОЧЕРНИХ ЗАЛОВ if [ -z $1 ] ; then echo "Usage: ./mirrorpg-childs Init - init mirrorpg-childs.txt by OldHall only name ./mirrorpg-childs Log - get info from webserver logfiles ./mirrorpg-childs Collect - collect childs lists from known childs ./mirrorpg-childs Archives - get archives from known childs ./mirrorpg-childs Hosts - generate new hosts from downloaded archives " fi # ----------------------------------- -------------------------------------- if [ ".$1" == ".Init" ] ; then [ ! -z $SqOldHallSite ] && wget http://$SqOldHallSite/mirrorpg-childs.txt [ ! -z $SqOldHall ] && echo "$SqOldHall" >>mirrorpg-childs.txt [ ! -z $SqMyHall ] && echo "$SqMyHall" >>mirrorpg-childs.txt touch mirrorpg-childs.txt fi if [ ".$1" == ".Log" ] ; then # =================================== ====================================== # Webserver log analyzer Анализ лога вебсервера if [ -z $SqLogPath ]; then echo "===================================== ====================================== No logfile in config в конфиге не указан лог файл" else for i in $SqLogPath/$SqLogFiles do [ ! -s $SqLogPath/$i ] && continue cat $SqLogPath/$i | awk '($11 ~/^\"http\:\/\/.*?\/[0-9]+?\.[0-9]+?\/mirrorpg-[a-z]+?\"$/) { split($11,A,"/"); print A[3]; }' | sort -u >mirrorpg-childs.tmp touch mirrorpg-childs.txt cat mirrorpg-childs.txt mirrorpg-childs.tmp | sort -u >mirrorpg-childs.bak mv mirrorpg-childs.bak mirrorpg-childs.txt rm mirrorpg-childs.tmp done fi fi # Log if [ ".$1" == ".Collect" ] ; then echo " ===================================== ====================================== Try to collect childs from childs пробуем собрать списки детей у детей" for i in `cat mirrorpg-childs.txt` do mv mirrorpg-childs.txt mirrorpg-childs.bak wget http://mirrorpg.$i/mirrorpg-childs.txt if [ -s mirrorpg-childs.txt ] ; then cat mirrorpg-childs.txt mirrorpg-childs.bak | sort -u >mirrorpg-childs.tmp mv mirrorpg-childs.tmp mirrorpg-childs.txt rm mirrorpg-childs.bak else mv mirrorpg-childs.bak mirrorpg-childs.txt fi done fi # Collect if [ ".$1" == ".Archives" ] ; then # =================================== ====================================== # Copy .Zero to .Childs (hardlinked) cp -l .Zero/*.tar.gz .Childs/ echo "===================================== ======================================" echo "old .tar.gz archives downloading... Скачивание .tar.gz архивов" for k in `cat mirrorpg-childs.txt` do [ ".$k" == ".$SqMyHall" ] && continue echo "From Hall $k " SqDlTarGzMd5 Childs mirrorpg.$k Childs SqDlTarGzMd5 Childs mirrorpg.$k First SqDlTarGzMd5 Childs mirrorpg.$k Previous SqDlTarGzMd5 Childs mirrorpg.$k Latest done SqUpdateIndex Childs fi # Archives if [ ".$1" == ".Hosts" ] ; then echo "===================================== ====================================== Webserver virtualhosts path exists Есть пути к вирт хостам вебсервера. Update content of these virt hosts Содержимое вирт хостов восстанавливаем from .tar.gz archives kept in .Zero из архивов сохранённых в .Zero или or downloaded from Childs Halls скачанных с дочерних залов" if [ -x $SqAddHost ] ; then echo "===================================== ====================================== Hosts for .tar.gz archives creating Создание вирутал хостов под архивы" for i in Childs do cd .$i for j in *.tar.gz do [ -s $j ] || continue cd $SqRetPath echo -n '.' SqBuildLines `echo $j | perl -pe "~s/(.*?).tar.gz/\1/gi"` SqAddConf [ ! ".$1" == ".NoExtract" ] && SqExtract $i SqLatestDate=`stat -q -t %Y-%m-%d .$i/$j | awk '{print $10;}'` SqAddCsv "Восстановлен из архива от $SqLatestDate" cd .$i done cd $SqRetPath done echo " ===================================== ====================================== Update .htm from .csv file апдейт .htm из .csv файла" SqUpdateCsv fi # [ -x $SqAddHost ] ; then fi # Hosts echo "===================================== ======================================" cat mirrorpg-childs.txt | sort -u >mirrorpg-childs.bak mv mirrorpg-childs.bak mirrorpg-childs.txt SqUpdateChilds # FINISH COLLECTING INFO FROM CHILDS ОКОНЧАНИЕ СБОРА ИНФОРМАЦИИ С ДЕТЕЙ # =================================== ======================================