#!/bin/sh
date
# Downloader bzw. Uploader fuer die AVM Fritz!Box
# Copyright (C) 2007 Acros
# Siehe http://www.ip-phone-forum.de/showthread.php?t=147334
#
# 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 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Modded by: TomTom, HirnToT, hawk666, nachtzwerg, da_new8i
####################################################################################
################################Konfiguration ANFANG################################
# Zielverzeichnis
targetdir='/var/www/fritzload/download'
# Anzahl der Downloadversuche bei Fehlern
retries=5
# Bandbreitenlimitierung (1=on 0=off)
choke=0
# Zeiten in denen der Download auf Fullspeed laufen soll (count1=Startzeit, count2=Endzeit)
# Uhrzeit ohne Punkt und Bezeichnung angeben, z.B. 16.30 Uhr ist 1630
count1=0001
count2=2359
# Bandbreite wird begrenzt auf (Angabe in kbyte/sec):
limit=35k
# IP
box=192.168.0.1
# Wenn upnp in der Fritzbox aktiviert ist, dann 1 sonst 0
upnp=1
# Wartezeit nach Reconnect in Sekunden
wait=18
# Soll mit dem Reconnect gewartet werden wenn ein Voip-Telefonat laeuft? (1=ja,0=nein)
voipcheck=1
# Fritzbox-Passwort fuer Voip-check
pass=
# Server, selected fuer vorausgewaehlten von Rapidshare
# sonstige sind: tg.rapidshare tl.rapidshare tl2.rapidshare gc.rapidshare gc2.rapidshare
# l3.rapidshare l32.rapidshare l33.rapidshare l34.rapidshare cg.rapidshare cg2.rapidshare
server='selected'
# Temporaeres Verzeichnis
tmp=/tmp
# Decoderhomepage
decodehp='http://flox.bplaced.net/'
# Collector's-Account Benutzername
username='xxxxxxxxxxxxxxxxx'
# Collector's-Account Passwort
pass='xxxxxxxxxxxxxxxxx'
# URL
url="http://www.rapidshare.com/cgi-bin/collectorszone.cgi?username2id="$username"&password="$pass"&ru=1"
# Anzahl der Uploadversuche bei Fehlern
retriesul=3
# Premiumaccount Benutzername
premuser=test4
# Premiumaccount Passwort
prempass=test5
#################################Konfiguration ENDE#################################
####################################################################################
dllimit="1000000k"
helpmsg()
{
echo "Aufruf: $0 [Option] [Datei|URL]"
echo "Datei(en) von rapidshare.com / uploaded.to / meinupload.com / bluehost.to downloaden."
echo "Datei(en) auf rapidshare.com uploaden."
echo
echo " -l liste - Alle Dateien aus der Textdatei <liste> (eine pro Zeile) downloaden."
echo " -u liste - Alle Dateien aus der Textdatei <liste> (eine pro Zeile) auf rapidshare.com uploaden."
echo " -prem liste - Alle Dateien aud der Textdatei <liste> (eine pro Zeile) als Premiumuser (rs.com) downloaden."
echo " -rsdf file - Alle Links eines RSD-Filecontainers herunterladen."
echo " -r - Einen reconnect ausfuehren, dann beenden."
echo " -?, --help - Diese Hilfe anzeigen, dann beenden."
echo
}
listload() {
for line in `cat $1`;do oneclickhoster $line; done
}
premlistload() {
for line in `cat $1`;do premdownload $line; done
}
uload() {
for line in `cat $1`; do upload $line; done
}
oneclickhoster() {
if echo $1 | grep "uploaded" > $tmp/tmp1.txt; then
uploaded $1
fi
if echo $1 | grep "bluehost" > $tmp/tmp1.txt; then
bluehost $1
fi
if echo $1 | grep "rapidshare" > $tmp/tmp1.txt; then
rapidshare $1
fi
if echo $1 | grep "meinupload" > $tmp/tmp1.txt; then
meinupload $1
fi
if echo $1 | grep "MeinUpload" > $tmp/tmp1.txt; then
meinupload $1
fi
}
voipcheck() {
call=1
msg=1
while [ $call -eq 1 ]; do
voipstat=$(wget -O - -q --post-data="getpage=../html/de/fon/qualitytable.html&var:lang=de&login:command/password=$pass" http://$box/cgi-bin/webcm |
sed -n '/"tborder mb10"/,/"mt20 pCheck25 mb5"/ s/TrQoS/&/p')
if [ -n "$voipstat" ]; then
if [ $msg -eq 1 ]; then
echo "Voip-Telefonat, warte"
msg=0
fi
sleep 20
else
call=0
fi
done
}
reconnect() {
if [ $voipcheck -eq 1 ]; then
voipcheck
fi
if [ $upnp -eq 1 ]; then
cat data.box | nc -w 1 $box 49000 >/dev/null
else
dsld -s
dsld -n
fi
sleep $wait
}
cleanup(){
rm -f $tmp/getfile.txt $tmp/getfile2.txt $tmp/form.txt $tmp/getcap.txt $tmp/form2.txt $tmp/tmp1.txt $tmp/dlliste.txt $tmp/rsdf.txt
}
rapidshare() {
param=$(echo $1 |tr -d '\015')
filename=$(echo $param | sed -e 's/^.*\/files\/[0-9]*\/\(.*\)$/\1/;s/\(.*\)\.html$/\1/')
echo "===========================Download von $filename==========================="
echo " "
try=0
while [ $try -lt $retries ]; do
cleanup
try=$(($try+1))
wget -q -O $tmp/getfile.txt $param
url=$(sed -n 's/^.*action="\(http:\/\/rs[^"]*\)".*$/\1/p' $tmp/getfile.txt)
if [ -z "$url" ]; then
echo 'Url nicht gefunden (Datei geloescht?)'
continue
fi
wget -q --post-data='dl.start=Free' -O $tmp/getcap.txt $url
starttime=$(date "+%s")
grep 'var c=' $tmp/getcap.txt>$tmp/form.txt
sed "1d" $tmp/form.txt>$tmp/form2.txt
waittime=$(sed -n 's/^.*var c=\([0-9]*\).*$/\1/p' $tmp/form2.txt)
echo "$waittime Sekunden Wartezeit..."
sleep $waittime
if [ $server = 'selected' ]; then
url=$(echo $(sed -n 's/^.*"\(http:\/\/rs[^"]*\)" m.*$/\1/p' $tmp/getcap.txt) | sed -n 's/^.*\(http:\/\/rs[^"]*\) h.*$/\1/p')
else
url=$(sed -n "s/^.*action=\\\'\\(http:\\/\\/rs[0-9].*$server[^'\"]*\\)\\\'.*$/\\1/p" $tmp/getcap.txt)
fi
if [ -z "$url" ]; then
echo 'Download-Link nicht gefunden.'
continue
fi
echo Lade $filename von rapidshare.com herunter.
if [ $choke -eq 1 ]; then
time=`date +"%H%M"`
if [ "$time" -ge "$count1" ]; then
dllimit="1000000k"
echo "Bandbreite wird NICHT begrenzt!"
elif [ "$time" -le "$count2" ]; then
if [ "$count2" -lt "$count1" ]; then
dllimit="1000000k"
echo "Bandbreite wird NICHT begrenzt!"
else
dllimit=$limit
echo "Bandbreite wird begrenzt!"
fi
else
dllimit=$limit
echo "Bandbreite wird begrenzt!"
fi
fi
if wget --limit-rate=$dllimit -O$targetdir/$filename -t 3 --progress=dot:giga $url; then
countdl=$(($countdl+1))
echo "$countdl Dateien heruntergeladen"
echo " "
break
else
echo 'Fehler beim Download'
fi
done
}
uploaded() {
param=$(echo $1 |tr -d '\015')
cleanup
try=0
while [ $try -lt $retries ]; do
try=$(($try+1))
wget -q -O $tmp/getfile.txt $param
if grep -A 1 "Filename" $tmp/getfile.txt > $tmp/tmp1.txt; then
cp $tmp/getfile.txt $tmp/getfile2.txt
else
echo "Reconnect!"
reconnect
continue
fi
filename=$(grep -A 1 "Filename" $tmp/getfile.txt | sed "1d" | sed 's/^[ \t]*//')
echo "===========================Download von $filename==========================="
echo " "
grep 'var secs =' $tmp/getfile.txt>$tmp/form.txt
waittime=$(sed -n 's/^.*= \([0-9]*\).*$/\1/p' $tmp/form.txt)
echo "$waittime Sekunden Wartezeit..."
sleep $waittime
url=$(sed -n 's/^.*action="\(http:\/\/[^"]*\)".*$/\1/p' $tmp/getfile.txt)
echo Lade $filename von uploaded.to herunter.
if [ $choke -eq 1 ]; then
time=`date +"%H%M"`
if [ "$time" -ge "$count1" ]; then
dllimit="1000000k"
echo "Bandbreite wird NICHT begrenzt!"
elif [ "$time" -le "$count2" ]; then
if [ "$count2" -lt "$count1" ]; then
dllimit="1000000k"
echo "Bandbreite wird NICHT begrenzt!"
else
dllimit=$limit
echo "Bandbreite wird begrenzt!"
fi
else
dllimit=$limit
echo "Bandbreite wird begrenzt!"
fi
fi
if wget --limit-rate=$dllimit --progress=dot:giga --post-data='Download' -O $targetdir/$filename.rar -t 3 $url; then
countdl=$(($countdl+1))
echo "$countdl Dateien heruntergeladen"
echo " "
break
else
echo 'Fehler beim Download'
fi
done
}
meinupload() {
cleanup
try=0
while [ $try -lt $retries ]; do
try=$(($try+1))
param=$(echo $1 |tr -d '\015')
filename=$(echo $param | sed -e 's/.*\///g')
echo "===========================Download von $filename==========================="
echo " "
wget -q --post-data='sent=1' -O $tmp/getfile.txt $param
echo "15 Sekunden Wartezeit..."
sleep 15
echo Lade $filename von meinupload.com herunter.
url=$(sed -n 's/^.*action="\(http:\/\/[^"]*\)".*$/\1/p' $tmp/getfile.txt)
if [ $choke -eq 1 ]; then
time=`date +"%H%M"`
if [ "$time" -ge "$count1" ]; then
dllimit="1000000k"
echo "Bandbreite wird NICHT begrenzt!"
elif [ "$time" -le "$count2" ]; then
if [ "$count2" -lt "$count1" ]; then
dllimit="1000000k"
echo "Bandbreite wird NICHT begrenzt!"
else
dllimit=$limit
echo "Bandbreite wird begrenzt!"
fi
else
dllimit=$limit
echo "Bandbreite wird begrenzt!"
fi
fi
if wget --limit-rate=$dllimit --progress=dot:giga --post-data='captcha=&download=yes' -O $targetdir/$filename -t 20 $url; then
countdl=$(($countdl+1))
echo "$countdl Dateien heruntergeladen"
echo " "
break
else
echo 'Fehler beim Download'
fi
done
}
bluehost() {
cleanup
try=0
while [ $try -lt $retries ]; do
try=$(($try+1))
param=$(echo $1 |tr -d '\015')
wget -q -O $tmp/getfile.txt --save-cookies=$tmp/cookie.txt --keep-session-cookies --user-agent='Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1' $param
tmp1=$(grep "DownloadV1Hash" $tmp/getfile.txt | sed 's/.* value="\?\([A-Za-z0-9_]*\).*"\?/\1/g')
param=http://bluehost.to/file/$tmp1
wget -q -O $tmp/getfile.txt --save-cookies=$tmp/cookie.txt --keep-session-cookies --user-agent='Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1' $param
url=$(sed -n 's/^.*action="\(http:\/\/[^"]*\)".*$/\1/p' $tmp/getfile.txt| sed "1d")
filename=$(basename $url)
echo "===========================Download von $filename==========================="
echo " "
tmp2=$(grep -A 1 "BluehostVers1dl" $tmp/getfile.txt | sed "1d" | sed 's/.* name="\?\([A-Za-z0-9_]*\).*"\?/\1/g')
tmp3=$(grep -A 1 "BluehostVers1dl" $tmp/getfile.txt | sed "1d" | sed 's/.* value="\?\([A-Za-z0-9_]*\).*"\?/\1/g')
tmp4=$(grep "DownloadV1Hash" $tmp/getfile.txt | sed 's/.* value="\?\([A-Za-z0-9_]*\).*"\?/\1/g')
tmp5=$(grep "http://bluehost.to/download.php" $tmp/getfile.txt | sed 's/.* value="\?\([A-Za-z0-9_]*\).*"\?/\1/g')
tmp6=$(grep "PHPSESSID" $tmp/getfile.txt | sed 's/.* value="\?\([A-Za-z0-9_]*\).*"\?/\1/g')
postdata=$(echo "BluehostVers1dl=erlaubt&$tmp2=$tmp3&DownloadV1Hash=$tmp4&PHPSESSID=$tmp6&access=granted")
grep 'var secs =' $tmp/getfile.txt>$tmp/form.txt
waittime=$(sed -n 's/^.*= \([0-9]*\).*$/\1/p' $tmp/form.txt)
echo "$waittime Sekunden Wartezeit..."
sleep $waittime
echo Lade $filename von bluehost.to herunter.
if [ $choke -eq 1 ]; then
time=`date +"%H%M"`
if [ "$time" -ge "$count1" ]; then
dllimit="1000000k"
echo "Bandbreite wird NICHT begrenzt!"
elif [ "$time" -le "$count2" ]; then
if [ "$count2" -lt "$count1" ]; then
dllimit="1000000k"
echo "Bandbreite wird NICHT begrenzt!"
else
dllimit=$limit
echo "Bandbreite wird begrenzt!"
fi
else
dllimit=$limit
echo "Bandbreite wird begrenzt!"
fi
fi
if wget --progress=dot:giga --limit-rate=$dllimit --post-data=$postdata -O $targetdir/$filename --load-cookies=$tmp/cookie.txt --keep-session-cookies --user-agent='Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1' -t 3 $url; then
countdl=$(($countdl+1))
echo "$countdl Dateien heruntergeladen"
echo " "
else
echo 'Fehler beim Download'
fi
done
}
rsdf() {
cleanup
file=$(echo $1 |tr -d '\015')
curl -F file=@$file -F "submit=Decode file" -k $decodehp > $tmp/rsdf.txt
grep "br" $tmp/rsdf.txt | sed -e 's/<[^>]*>//g' | grep "http" >$tmp/dlliste.txt
listload $tmp/dlliste.txt
}
upload() {
param=$(echo $1 |tr -d '\015')
try=0
while [ $try -lt $retriesul ]; do
try=$(($try+1))
echo "===========================Upload von $param, Versuch $try==========================="
echo "`date +%d.%m.%y`-`date +%H.%M.%S` - Start!"
echo " "
accid=$(./curl -s $url | tail -1 | sed 's/.*=\([0-9]\)/\1/g')
number=$(./curl -s http://www.rapidshare.com/cgi-bin/upload.cgi?intsysdata=1 | sed 's/\([0-9]\),.*$/\1/g')
host="http://rs"$number"cg.rapidshare.com/cgi-bin/upload.cgi"
curl -F toolmode2=1 -F "filecontent=@$param" -F freeaccountid=$accid -F "password=$pass" $host > $tmp/rezult.txt
if grep 'savedfiles=1' $tmp/rezult.txt > /dev/null; then
cat $tmp/rezult.txt | tail -2 >> links.txt
tail -2 links.txt
echo 'Die Datei wurde erfolgreich hochgeladen.'
echo " "
echo " "
break
else
echo 'Fehler beim Upload.'
echo " "
echo " "
sleep 5
fi
done
}
premdownload() {
cleanup
try=0
while [ $try -lt $retries ]; do
try=$(($try+1))
param=$(echo $1 |tr -d '\015')
filename=$(echo $param | sed -e 's/^.*\/files\/[0-9]*\/\(.*\)$/\1/;s/\(.*\)\.html$/\1/')
echo "===========================Download von $filename==========================="
echo " "
wget -q -O $tmp/getfile.txt $param
url=$(sed -n 's/^.*action="\(http:\/\/rs[^"]*\)".*$/\1/p' $tmp/getfile.txt)
if [ -z "$url" ]; then
echo 'Url nicht gefunden (Datei geloescht?)'
continue
fi
if wget --http-user=$premuser --http-passwd=$prempass --limit-rate=$dllimit -O $targetdir/$filename -t 3 --progress=dot:giga $url; then
countdl=$(($countdl+1))
echo "$countdl Dateien heruntergeladen"
echo " "
break
else
echo 'Fehler beim Download'
fi
done
}
case "$1" in
-l)
if [ -n "$2" ]; then
listload $2
else
helpmsg >&2
exit 1
fi
;;
-prem)
if [ -n "$2" ]; then
premlistload $2
else
helpmsg >&2
exit 1
fi
;;
-u)
if [ -n "$2" ]; then
uload $2
else
helpmsg >&2
exit 1
fi
;;
-rsdf)
if [ -n "$2" ]; then
rsdf $2
else
helpmsg >&2
exit 1
fi
;;
-r)
reconnect
;;
-?|--help)
helpmsg
exit 0
;;
*)
helpmsg >&2
exit 1
esac