From 56dd22d6f38ab12da262e37055b2906359de9112 Mon Sep 17 00:00:00 2001 From: jp Date: Sat, 4 Dec 2021 12:18:13 -0300 Subject: [PATCH 1/3] Add file removal, change data dir --- package-lock.json | 33 ++++++++++++++++++++++++++++ package.json | 2 +- run.js | 56 +++++++++++++++++++++-------------------------- 3 files changed, 59 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b6d428..90badf7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "g": "^2.0.1", "hyperspace": "^3.19.0", "istextorbinary": "^6.0.0", + "mime-types": "^2.1.34", "prompt-sync": "^4.2.0" } }, @@ -1006,6 +1007,25 @@ "streamx": "^2.7.1" } }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", @@ -2471,6 +2491,19 @@ "streamx": "^2.7.1" } }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", diff --git a/package.json b/package.json index 47fef68..f322a67 100644 --- a/package.json +++ b/package.json @@ -1 +1 @@ -{"dependencies":{"-":"^0.0.1","chalk":"^5.0.0","g":"^2.0.1","hyperspace":"^3.19.0","istextorbinary":"^6.0.0","prompt-sync":"^4.2.0"}} \ No newline at end of file +{"dependencies":{"-":"^0.0.1","chalk":"^5.0.0","g":"^2.0.1","hyperspace":"^3.19.0","istextorbinary":"^6.0.0","mime-types":"^2.1.34","prompt-sync":"^4.2.0"}} \ No newline at end of file diff --git a/run.js b/run.js index 9421912..8cfe645 100644 --- a/run.js +++ b/run.js @@ -6,23 +6,25 @@ With love, */ - +let mime = require('mime-types') let prompt = require("prompt-sync")() let fs = require("fs") let log = console.log; let http = require("http") let crypto = require("crypto") -const { isText } = require('istextorbinary') - +let path = require("path") -if (fs.existsSync("data")) { - console.log("\x1b[31m WARNING: Folder \"data\" will be erased and rebuilt if you proceed \x1b[37m") + console.log("\x1b[31m WARNING: Folder \"data\" will be erased and rebuilt if you proceed \x1b[37m" + + "\n~Same will happen for all files in /static/ matching \x1b[34m *.upload.* \x1b[37m") + const answer = prompt("Would you like to proceed? (S/N)") if (answer.toUpperCase() =="S"){ - log("removing") + //log("removing") + if(fs.existsSync("data")){ fs.rmdirSync("data",{recursive: true}) + } console.log("Done!") console.log("Now we can start the HTTP server lol") @@ -33,6 +35,15 @@ if (fs.existsSync("data")) { console.log("Not a valid answer. Exiting...") process.exit(1) } + +let filess = fs.readdirSync("./static") +for (file in filess){ + + //console.log(String(filess[file])) + if (String(filess[file]).match(/\.*\.upload\.*/)){ + console.log("Removing "+"\x1b[32m"+ String(filess[file]) + "\x1b[37m") + fs.unlinkSync(path.join(__dirname,"static", filess[file])) + } } fs.mkdirSync("./data"); @@ -86,34 +97,17 @@ const requestListener = function (req, res) { req.on("end",()=>{ res.writeHead(200, { "Content-Type": "text/plain" }); res.end("Success: your code is "+ intcode); - - - intcode = "./data/keys/" + intcode + //console.log(req.headers) + let type = req.headers["content-type"] + let ext = mime.extension(type) + let code = intcode + intcode = "./static/" + intcode+".upload."+ext fs.writeFileSync(intcode,body) - + - /*fs.readFile(intcode, 'utf8', function(err, data){ - - if (err){ throw err; } - var lines = data.split('\n') - var type = lines[2] - type = type.replace("Content-Type: ","") - //log(type) - - lines = lines.slice(3).join('\n'); - lines = lines.split("\n") - let i = 0 - while (i < 6){ - - lines.splice(-1) - i++ - } - lines = lines.join('\n') - //console.log(lines) - /* fs.writeFileSync(intcode, lines); */ - //fs.writeFileSync(intcode+".type",type) + -console.log("File uploaded to "+"\x1b[32m"+intcode.replace("./data/keys/","")+"\x1b[37m" +" Type: " /*+ type*/) +console.log("File uploaded to "+"\x1b[32m"+code+"\x1b[37m" +" Type: " + type) /*})*/; From 62649531b35c9bb7eb98744866361d4f282496bc Mon Sep 17 00:00:00 2001 From: jp Date: Sat, 4 Dec 2021 12:23:18 -0300 Subject: [PATCH 2/3] fix --- run.js | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/run.js b/run.js index 8cfe645..8d9bb30 100644 --- a/run.js +++ b/run.js @@ -16,14 +16,21 @@ let path = require("path") - console.log("\x1b[31m WARNING: Folder \"data\" will be erased and rebuilt if you proceed \x1b[37m" - + "\n~Same will happen for all files in /static/ matching \x1b[34m *.upload.* \x1b[37m") + console.log("\x1b[31m WARNING: All files in /static/ matching \x1b[34m *.upload.* \x1b[31m will be removed \x1b[37m") const answer = prompt("Would you like to proceed? (S/N)") if (answer.toUpperCase() =="S"){ //log("removing") - if(fs.existsSync("data")){ - fs.rmdirSync("data",{recursive: true}) + if(fs.existsSync("static")){ + let filess = fs.readdirSync("./static") + for (file in filess){ + + //console.log(String(filess[file])) + if (String(filess[file]).match(/\.*\.upload\.*/)){ + console.log("Removing "+"\x1b[32m"+ String(filess[file]) + "\x1b[37m") + fs.unlinkSync(path.join(__dirname,"static", filess[file])) + } + } } console.log("Done!") console.log("Now we can start the HTTP server lol") @@ -36,18 +43,7 @@ let path = require("path") process.exit(1) } -let filess = fs.readdirSync("./static") -for (file in filess){ - - //console.log(String(filess[file])) - if (String(filess[file]).match(/\.*\.upload\.*/)){ - console.log("Removing "+"\x1b[32m"+ String(filess[file]) + "\x1b[37m") - fs.unlinkSync(path.join(__dirname,"static", filess[file])) - } -} -fs.mkdirSync("./data"); -fs.mkdirSync("./data/keys") const requestListener = function (req, res) { let intcode = "" + crypto.randomInt(999999); From 34debec6f741744ea37e17c556d267c09c540b18 Mon Sep 17 00:00:00 2001 From: jp Date: Sun, 5 Dec 2021 17:18:52 -0300 Subject: [PATCH 3/3] . --- run.js | 41 +++++++++++++++++++---------------------- static/start.js | 11 ++++++++++- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/run.js b/run.js index 8d9bb30..d834fee 100644 --- a/run.js +++ b/run.js @@ -30,7 +30,7 @@ let path = require("path") console.log("Removing "+"\x1b[32m"+ String(filess[file]) + "\x1b[37m") fs.unlinkSync(path.join(__dirname,"static", filess[file])) } - } + } } console.log("Done!") console.log("Now we can start the HTTP server lol") @@ -122,36 +122,33 @@ console.log("File uploaded to "+"\x1b[32m"+code+"\x1b[37m" +" Type: " + type) }); } else if(String(req.url).startsWith("/download/") ){ - //log(String(req.url).replace("/download/","")) - let pathh = (String(req.url).replace("/download/","")) - pathh = "./data/keys/" + pathh + ".type" - fs.readFile("./data/keys/" + String(req.url).replace("/download/",""), function (err,data) { + let number = String(req.url).replace("/download/","") + let filepath = new RegExp(number+"\.upload\."+"*") + let defpath = "undefined" + let files = fs.readdirSync("static") + console.log(filepath) + for (file in files){ + console.log(files[file]) + + if (String(files[file]).match(filepath)){ + defpath = String(files[file]) + console.log(defpath) + } + } + fs.readFile(defpath, function(err,data) { if (err) { - - if(err.code=="ENOENT"){ - - fs.readFile("templates/404.html", function (err,data) { - if (err) { - res.writeHead(203); - res.end("internal error"+JSON.stringify(err)); - return; - } - + if(err.code=="ENOENT"){ res.writeHead(404); res.end(data); return; - }) - return; - } - + } res.writeHead(203); res.end(JSON.stringify(err)); return; } - res.setHeader("Content-Type", pathh) + res.setHeader("Content-Type", "text/plain") res.writeHead(200); - - res.end(data); + res.end(defpath); console.log("File downloaded from "+"\x1b[32m"+String(req.url).replace("/download/","")+"\x1b[37m") }); }else{ diff --git a/static/start.js b/static/start.js index 934d560..c480bed 100644 --- a/static/start.js +++ b/static/start.js @@ -34,7 +34,16 @@ upbutton.onchange = function(e){ } dbutton.onclick =function(){ - window.location = "/download/"+codeplace.value + let xhr = new XMLHttpRequest() + xhr.open('GET', "/download/"+codeplace.value) + + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhr.send() + xhr.onload = () => { + window.location = xhr.responseText; + + } + }