<?php
include_once "dbconnect.php";
// Konfiguration
$maxspeed = 500;
$maxslots = 4;
// prüfen ob file-Wert existiert
if( !isset($_GET['file']) || trim($_GET['file']) == '' ) {
header($_SERVER['SERVER_PROTOCOL'].' 406 Not Acceptable');
echo 'Es wurde keine Datei angegeben.';
exit;
}
$file = basename($_GET['file']);
$path = "hf83jdw8ej3dsd/".$file;
// Existenz der Datei prüfen
if( !file_exists($path) ) {
// Datei existiert nicht
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
echo 'Die angefragte Datei wurde nicht gefunden.';
exit;
}
// Anzahl der verfügbaren Slots prüfen
$query = '
SELECT
1
FROM
`slots`
WHERE
`used` < ' . $maxslots . '
';
if( !mysql_num_rows(mysql_query($query, $DatabasePointer)) ) {
// keine freien Slots verfügbar
header($_SERVER['SERVER_PROTOCOL'].' 503 Service Unavailable');
echo 'Es sind bereits alle Slots belegt. Bitte versuchen Sie es in einigen Minuten wieder.';
exit;
}
// Datei öffnen
if( !is_readable($path) || ($fd = @fopen($file, "r")) === false ) {
// Datei ist nicht lesbar oder konnte nicht geöffnet werden
header($_SERVER['SERVER_PROTOCOL'].' 500 Internal Server Error');
exit;
}
// Inkrementieren der benutzten Slots
$query = '
UPDATE
`slots`
SET
`used` = `used` + 1
';
mysql_query($query, $DatabasePointer);
// Schicken des Dateiinhalts
header("Cache-control: private");
header("Content-Type: application/x-otrkey");
header("Content-Length: ".filesize($path));
header("Content-Disposition: filename=".$file);
flush();
while( !feof($fd) ) {
echo fread($fd, round($speed*1024));
flush();
sleep(1);
}
// Inkrementieren des Download-Zählers
$query = '
UPDATE
`downloads`
FROM
`stats` = `stats` + 1
';
mysql_query($query, $DatabasePointer);
// Dekrementieren der benutzten Slots
$query = '
UPDATE
`slots`
SET
`used` = `used` - 1
';
mysql_query($query, $DatabasePointer);
fclose($fd);
mysql_close();
?>