u.php/u.php

110 lines
2.5 KiB
PHP

<?php
/*
* xfnw's weird php upload thing
*
* to set it up make a symlink to somewhere in /tmp at i
* eg: ln -s $(mktemp) i
*
* thats it! it should set itself up with all the permissions
* and stuff
*/
$target_dir = "i";
$real_dir = readlink($target_dir);
if (!file_exists($real_dir)) {
mkdir($real_dir, 0777, true);
}
$target_dir = $target_dir . '/';
if ($handle = opendir($target_dir)) {
while (false !== ($file = readdir($handle))) {
$filelastmodified = filemtime($target_dir . $file);
// 6 hours in a day * 3600 seconds per hour
if((time() - $filelastmodified) > 6*3600)
{
unlink($target_dir . $file);
}
}
closedir($handle);
}
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$uploadOk = 0;
$fileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
if ($fileType == '' || $fileType == 'php' || $fileType == 'html' || $fileType == 'htm') {
$fileType = 'txt';
}
$target_file = $target_dir . substr(md5_file($_FILES['file']['tmp_name']), 1, 6) . "." . $fileType;
if (file_exists($_FILES["file"]['tmp_name'])) {
$uploadOk = 1;
}
// Check file size
if ($_FILES["file"]["size"] > 600000000) {
echo "Your file is too large.";
$uploadOk = 0;
exit;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
//echo "Sorry, your file was not uploaded for an unknown reason.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
echo "https://" . $_SERVER['HTTP_HOST'] . "/" . $target_file;
exit;
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>xfnw's upload thing</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://xfnw.ttm.sh/assets/xfnw.css">
</head>
<body>
<h1>xfnw's upload thing</h1>
<p>files are regularly automatically deleted, and will probably be gone in 6 hours</p>
<pre>
# upload function
upload(){ curl -F"file=@$1" https://xfnw.ttm.sh/u.php ; }
upload file.png
# paste function
paste(){ curl -F"file=@-" https://xfnw.ttm.sh/u.php ; }
cat something.txt | paste
# auto upload your screenshots
scrot -e 'curl -F"file=@$f" https://xfnw.ttm.sh/u.php | xclip -selection clipboard'
</pre>
<p>or</p>
<form action="u.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" onchange="form.submit()">
</form>
</body>
</html>