Skip to content

Instantly share code, notes, and snippets.

@exussum12
Created November 16, 2017 22:30
Show Gist options
  • Save exussum12/5af41e6de404c9ab293093c24ca8ce81 to your computer and use it in GitHub Desktop.
Save exussum12/5af41e6de404c9ab293093c24ca8ce81 to your computer and use it in GitHub Desktop.
Basic file server for use with saving coverage info
<?php
function finishRequest($responseCode) {
http_response_code($responseCode);
die();
}
$storageDirectory = "upload";
$fileName = $_GET['hash'];
if (!ctype_alnum($fileName) || strlen($fileName) < 5) {
finishRequest(400);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$uploadFile = isset($_FILES['report']['tmp_name']) ?
$_FILES['report']['tmp_name'] :
''
;
if (!$uploadFile) {
finishRequest(400);
}
if (!is_writable($storageDirectory)) {
finishRequest(503);
}
$fileName = "$storageDirectory/$fileName.gz";
$gz = gzopen($fileName,'w9');
gzwrite($gz, file_get_contents($uploadFile));
gzclose($gz);
finishRequest(201);
}
$fileName = "$storageDirectory/$fileName*.gz";
$foundFiles = glob($fileName);
if (count($foundFiles) !== 1) {
finishRequest(204);
}
$fileName = current($foundFiles);
header("Content-Type: text/plain; charset=UTF-8");
if (strpos($_SERVER["HTTP_ACCEPT_ENCODING"], 'gzip') === false) {
readgzfile($fileName);
finishRequest(200);
}
header("Content-Encoding: gzip");
header("Content-Length: ".filesize($fileName));
readfile($fileName);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment