summaryrefslogtreecommitdiff
path: root/upload.php
diff options
context:
space:
mode:
Diffstat (limited to 'upload.php')
-rw-r--r--upload.php85
1 files changed, 85 insertions, 0 deletions
diff --git a/upload.php b/upload.php
new file mode 100644
index 0000000..0d2ce74
--- /dev/null
+++ b/upload.php
@@ -0,0 +1,85 @@
+<?php
+function generate_name ($name, $grill) {
+ if (!isset($tries)) $tries = 5;
+ $ext = '.' . pathinfo($name, PATHINFO_EXTENSION);
+ $fuck = substr($grill, 0, 3);
+ do {
+ $newname = '';
+ $newname .= chr(mt_rand(ord("a"), ord("z")));
+ $newname .= $fuck;
+ $newname .= chr(mt_rand(ord("a"), ord("z")));
+ $newname .= $ext;
+
+ if (--$tries == 0) return false;
+ } while (file_exists('/mnt/disk1/pomf/files/'.$newname));
+
+ return $newname;
+}
+
+
+ //Upload and whatnot
+ function upload (){
+ $static_root = "/mnt/disk1/pomf/files/";
+ $out = array( "files" => array(), "success" => true);
+ $files = $_FILES["files"];
+ $num_files = count($files["name"]);
+
+ for ($i = 0; $i < $num_files; $i++) {
+ //Check if file exists already
+ $filehash = sha1_file($files["tmp_name"][$i]);
+ $con = new PDO('mysql:unix_socket=/var/run/mysqld/mysqld.sock;dbname=XXX', 'XXX', 'XXX');
+ $do = $con->prepare("SELECT hash, filename FROM files WHERE hash = (:hash)");
+ $do->bindParam(':hash', $filehash);
+ $do->execute();
+ $result = $do->fetch();
+ $con = null;
+ if($result[0]==$filehash){
+ $out["files"][] = array(
+ "name" => $files["name"][$i],
+ "url" => $result[1]
+ );
+ }else{
+ $catshit = hash_file('crc32b', $files["tmp_name"][$i]);
+ $newname = generate_name($files["name"][$i], $catshit);
+ //Generate delid
+ $delid = sha1_file($files["tmp_name"][$i]);
+ //Try to upload and other shit
+ if ($newname && $files["error"][$i] == 0 && move_uploaded_file($files["tmp_name"][$i], $static_root.$newname)) {
+ //Get hash from file
+ $hash = sha1_file($static_root.$newname);
+ //Insert info into DB
+ $con = new PDO('mysql:unix_socket=/var/run/mysqld/mysqld.sock;dbname=XXX', 'XXX', 'XXX');
+ $do = $con->prepare("INSERT INTO files (hash, orginalname, filename, size, date, expire, delid) VALUES (:hash, :orginname, :filename, :size, :date, :expire, :delid)");
+ $do->bindParam(':hash', $hash);
+ $do->bindParam(':orginname', $files["name"][$i]);
+ $do->bindParam(':filename', $newname);
+ $do->bindParam(':size', $files["size"][$i]);
+ $do->bindParam(':date', date('Y-m-d'));
+ $do->bindParam(':expire', $expire);
+ $do->bindParam(':delid', $delid);
+ $do->execute();
+ $con = null;
+ $out["files"][] = array(
+ "name" => $files["name"][$i],
+ "url" => $newname
+ );
+ //Otherwise return error
+ } else {
+ http_response_code(500);
+ echo json_encode(array(
+ "success" => false
+ ));
+ }
+ }
+ }
+ exit(json_encode($out, JSON_PRETTY_PRINT));
+}
+
+if(isset($_FILES["files"])){
+upload();
+}else{
+exit("What ya doing here nigga?");
+}
+
+
+?> \ No newline at end of file