// first check any directories in $file are in existence
$splfile = explode("/", $file);
if(count($splfile) > 1) {
- $tomake = "$repostore/$matched/";
+ $tomake = "";
for($i = 0; $i < count($splfile)-1; $i++) {
$tomake .= "/".$splfile[$i];
echo("making directory $tomake");
} else {
error_log("lock succeeded, dieing in the arse");
unlink("$file");
- unlink("$file.size");
+ if(file_exists("$file.size")) unlink("$file.size");
}
}
// get the headers from the remote request and use them to hurt people
$contentlen = 0;
$contenttype = "";
+
+// detecting a remote directory on a web session is near impossible, this is the best i can come up with
+// - check for a redirection header, then look for a trailing / on the url... best of luck to me
foreach($http_response_header as $key => $val) {
- if(preg_match("/HTTP.*30[1-9].*/", $val)) {
- fclose($localfile);
- unlink($file);
- mkdir($file);
- exit(0);
+ if(preg_match("/.*Location:.*/", $val)) {
+ echo "got location as $val\n";
+ $realloc = preg_replace("/.*[: ]/", "", $val);
+ if(preg_match("/.*\/$/", $realloc)) {
+ echo "matched\n";
+ fclose($localfile);
+ unlink($file);
+ mkdir($file);
+ exit(0);
+ }
}
// get content length form upstream and print
if(preg_match("/^Content-Length:.*/", $val)) {