port = 8000; // Require the libraries: var SocketIOFileUpload = require('socketio-file-upload'), socketio = require('socket.io'), express = require('express'); const app = express() .use(SocketIOFileUpload.router) .use(express.static(__dirname + "/public")); const http = require('http'); const server = http.createServer(app); const { Server } = require("socket.io"); const { SqliteHandler, UploadObject } = require('./handlers/sqliteHandler'); var fs = require('fs') const io = new Server(server); sqliteobj = new SqliteHandler("database.sqlite"); db = sqliteobj.getDatabaseObj(); // Make your Express server: app.get('/', (req, res) => { res.sendFile(__dirname + "/forms/select.html"); }) app.get('/api', (req, res) => { res.status(200).json({status:"ok", code:200}) }) app.get('/api/download/:hash', (req, res) => { if(handler == undefined) { var handler = new UploadObject(db); } handler.load(req.params.hash); if(handler.isLoaded()){ res.status(200).json({result: { files: handler.getFiles() }, code:200}) } }) app.get('/upload', (req, res) => { res.sendFile(__dirname + "/forms/upload.html"); }) app.get('/download/(*)', (req, res) => { res.sendFile(__dirname + "/forms/download.html"); }) // app.get('/download/:hash', (req, res) => { // if(handler == undefined) { // var handler = new UploadObject(db); // } // console.log(handler) // handler.load(req.params.hash) // if(handler.isLoaded()) { // res.send("Found"); // } else { // notFound(); // } // }) // app.get('/download/:hash/:adminhash', (req, res) => { // handler.load(req.params.hash, req.params.adminhash) // res.send("sdadsd"); // }) // Start up Socket.IO: // var io = new socketio.Server(app.listen(port)); io.sockets.on("connection", function(socket){ var handler = new UploadObject(db); console.log(handler); if(socket.handshake.url.startsWith("/socket.io")) { var uploader = new SocketIOFileUpload(); uploader.dir = "tmp"; uploader.uploadValidator = function(event, callback){ // asynchronous operations allowed here; when done, if (true) { callback(true); } else { callback(false); } }; uploader.listen(socket); uploader.on("start", function(event){ // console.log(handler); handler.new(); }); // Do something when a file is saved: uploader.on("saved", function(event){ if (event.file.success) { fs.renameSync(event.file.pathName, "uploads/"+handler.getDir()+"/"+event.file.name) handler.registerFile(event.file.name); } console.log(event.file); }); uploader.on("complete", function(event){ socket.emit("linkCreated", handler.getHash(), handler.getAdminHash()); }); // Error handler: uploader.on("error", function(event){ console.log("Error from uploader", event); }); } }); function notFound(req, res) { res.status(404); ans = { error: 'Not found', code: 404 } if (req.query.format == "xml"){ res.set('Content-Type', 'text/xml'); res.send(xml({xml: ans})); } else if (req.query.format == "csv") { res.send(ans.error); } else if (req.query.format == "json") { res.json(ans); } // respond with html page if (req.accepts('html') && !req.url.startsWith("/api")) { res.send('

404 Not found

'); return; } // respond with json if (req.accepts('json')) { res.json({ error: 'Not found', code: 404 }); return; } // default to plain-text. send() res.send('404'); } app.use(function (req, res, next) { notFound(req,res) }); server.listen(port, () => { console.log('listening on *:8000'); }); // https://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript function makeid(length) { let result = ''; const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; const charactersLength = characters.length; let counter = 0; while (counter < length) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); counter += 1; } return result; } // const express = require('express'); // const app = express() // const server = require('http').createServer(app); // var siofu = require("socketio-file-upload"); // const port = process.env.PORT || 8080; // const io = require('socket.io')(server); // const fs = require("fs") // app.use(express.static("public")); // io.on("connection", (socket) => { // console.log("req") // var uploader = new siofu(); // uploader.dir = "./uploads"; // uploader.listen(socket); // }); // app.listen(8000, () => { // console.log(`Server started...`); // }); // server.listen(port, function() { // console.log(`Listening on port ${port}`); // }); // const express = require('express'); // const app = express(); // const fs = require("fs") // const s = require("socket.io"); // const io = new s.Server(); // io.on("connection", (socket) => { // socket.on("upload", (file, callback) => { // console.log(file); // // // save the content to the disk, for example // fs.writeFile("./tmp/upload", file, (err) => { // callback({ message: err ? "failure" : "success" }); // }); // }); // }); // // const multer = require("multer"); // // const date = Date.now(); // // const storage = multer.diskStorage({ // // destination: function (req, file, cb) { // // if(req.body.name == "test"){ // // storage.error("Already Exists"); // // } // // const nameFolder = date + "-" +req.body.name; // // const dirRep = nameFolder.replace(/\s/g, ''); // // const folderPath = "lessons/"+dirRep+"/"; // // fs.mkdirSync(folderPath, {recursive: true}) // // cb(null, folderPath) // // }, // // filename: function (req, file, cb) { // // const filename = Date.now() + "-" + file.originalname; // // const rep = filename.replace(/\s/g, '') // // cb(null, rep) // // }, // // }); // // const upload = multer({ // // storage: storage, // // limits: { // // fileSize: 50000000000 // // } // // }); // app.use(express.urlencoded({ extended: true })); // app.use(express.static('public')); // app.get('/download/:hash', (req, res) => { // }) // // app.post("/upload", upload.array("files"), uploadFiles); // // function uploadFiles(req, res) { // // console.log(req.body); // // console.log(req.files); // // res.json({ message: "Successfully uploaded files" }); // // } // function checkPerm(req, res) { // if(req.body.name == "kuba"){ // throw("Invalid name") // }else { // return req, res // } // } // app.use(function (req, res, next) { // res.status(404); // console.log(req.query); // ans = { error: 'Not found', code: 404 } // if (req.query.format == "xml"){ // res.set('Content-Type', 'text/xml'); // res.send(xml({xml: ans})); // } else if (req.query.format == "csv") { // res.send(ans.error); // } else if (req.query.format == "json") { // res.json(ans); // } // // respond with html page // if (req.accepts('html') && !req.url.startsWith("/api")) { // res.send('

404 Not found

'); // return; // } // // respond with json // if (req.accepts('json')) { // res.json({ error: 'Not found', code: 404 }); // return; // } // // default to plain-text. send() // res.send('404'); // }); // app.listen(5000, () => { // console.log(`Server started...`); // });