const express = require("express"), fs = require("fs"), path = require("path") var app = express() var PORT = process.env.PORT || 8080 var directory = process.env.FILES_DIR var baseHTML = fs.readFileSync(path.join(__dirname, 'resources/base.html')).toString() var baseStart = baseHTML.substring(0, baseHTML.indexOf('{CONTENT}')) var baseEnd = baseHTML.substring(baseHTML.indexOf('{CONTENT}') + 9, baseHTML.length) if (!directory) { console.error("No directory specified! Please specify one using the environment variable FILES_DIR.") return } app.use(express.static(directory)) app.listen(PORT, () => { console.log("Now listening on PORT: " + PORT) }) app.get("/api/v1/randomIMG*", (req, res) => { var folder = req.params[0] var dirContent = fs.readdirSync(path.join(directory, folder)) var files = [] var imageFormats = [".png", ".jpg", ".jpeg", ".webp", ".gif"] for (let index = 0; index < dirContent.length; index++) { const file = dirContent[index]; for (let index = 0; index < imageFormats.length; index++) { const extension = imageFormats[index]; if (file.includes(extension)) { files.push(file) break } } } if (files.length > 0) { res.redirect(path.join('/', folder, files[Math.floor(Math.random() * files.length)])) } else { res.send("No Images in this directory") } }) app.get("/*", (req, res) => { var file = req.params[0] var absPath = path.join(directory, file) res.setHeader('Content-Type', 'text/html') try { var dirContents = fs.readdirSync(absPath) } catch (error) { res.send(baseStart.replace("{TITLE}", "404: not found!") + "

404: not found!

" + baseEnd) return } res.write(baseStart.replace("{TITLE}", '/' + file)) if (file != '') { res.write('Parent Directory
') } for (let index = 0; index < dirContents.length; index++) { const file = dirContents[index]; res.write(`${file}
`) } res.write(baseEnd) res.end() })