From 135c7727234895c1d35f6d1a1df0a1a02706016a Mon Sep 17 00:00:00 2001 From: waveringana Date: Sat, 10 Dec 2022 19:09:27 +0000 Subject: [PATCH] fix spaces --- app/app.ts | 182 ++++++++++++++++----------------- app/routes/adduser.ts | 23 +++-- app/routes/auth.ts | 78 +++++++------- app/routes/index.ts | 105 ++++++++++--------- app/routes/middleware.ts | 216 +++++++++++++++++++-------------------- app/types/db.ts | 62 +++++------ app/types/lib.ts | 4 +- 7 files changed, 331 insertions(+), 339 deletions(-) diff --git a/app/app.ts b/app/app.ts index 4d0b6b4..2e03142 100644 --- a/app/app.ts +++ b/app/app.ts @@ -22,19 +22,19 @@ let server = http.createServer(app); let port = normalizePort(process.env.EBPORT || "3000"); function normalizePort(val: string) { - var port = parseInt(val, 10); + var port = parseInt(val, 10); - if (isNaN(port)) { - // named pipe - return val; - } + if (isNaN(port)) { + // named pipe + return val; + } - if (port >= 0) { - // port number - return port; - } + if (port >= 0) { + // port number + return port; + } - return false; + return false; } app.set("port", port); @@ -43,59 +43,59 @@ server.on("error", onError); server.on("listening", onListening); function onError(error: any) { - if (error.syscall !== "listen") { - throw error; - } + if (error.syscall !== "listen") { + throw error; + } - var bind = typeof port === "string" - ? "Pipe " + port - : "Port " + port; + var bind = typeof port === "string" + ? "Pipe " + port + : "Port " + port; - // handle specific listen errors with friendly messages - switch (error.code) { - case "EACCES": - console.error(bind + " requires elevated privileges"); - process.exit(1); - break; - case "EADDRINUSE": - console.error(bind + " is already in use"); - process.exit(1); - break; - default: - throw error; - } + // handle specific listen errors with friendly messages + switch (error.code) { + case "EACCES": + console.error(bind + " requires elevated privileges"); + process.exit(1); + break; + case "EADDRINUSE": + console.error(bind + " is already in use"); + process.exit(1); + break; + default: + throw error; + } } db.serialize(function() { - // create the database schema for the embedders app - db.run("CREATE TABLE IF NOT EXISTS users ( \ - id INTEGER PRIMARY KEY, \ - username TEXT UNIQUE, \ - hashed_password BLOB, \ - salt BLOB \ - )"); + // create the database schema for the embedders app + db.run("CREATE TABLE IF NOT EXISTS users ( \ + id INTEGER PRIMARY KEY, \ + username TEXT UNIQUE, \ + hashed_password BLOB, \ + salt BLOB \ + )"); - db.run("CREATE TABLE IF NOT EXISTS media ( \ - id INTEGER PRIMARY KEY, \ - path TEXT NOT NULL, \ - expire INTEGER \, \ - username TEXT \ - )"); + db.run("CREATE TABLE IF NOT EXISTS media ( \ + id INTEGER PRIMARY KEY, \ + path TEXT NOT NULL, \ + expire INTEGER \, \ + username TEXT \ + )"); - db.run("ALTER TABLE media ADD COLUMN username TEXT", (err) => { - if(err) - return; - }); //TODO, version new DB, run this command when detecting old DB + db.run("ALTER TABLE media ADD COLUMN username TEXT", (err) => { + if(err) + return; + }); //TODO, version new DB, run this command when detecting old DB - createUser("admin", process.env.EBPASS || "changeme"); + createUser("admin", process.env.EBPASS || "changeme"); }); function onListening() { - var addr = server.address(); - var bind = typeof addr === "string" - ? "pipe " + addr - : "port " + addr.port; - console.log("Listening on " + bind); + var addr = server.address(); + var bind = typeof addr === "string" + ? "pipe " + addr + : "port " + addr.port; + console.log("Listening on " + bind); } app.enable("trust proxy"); @@ -106,21 +106,21 @@ app.set("view engine", "ejs"); app.use(express.json()); app.use(express.urlencoded({ - extended: false + extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, "public"))); app.use(express.static(path.join(__dirname, "public"))); app.use(session({ - secret: process.env.EBSECRET || "pleasechangeme", - resave: false, - saveUninitialized: false, - // @ts-ignore - store: new SQLiteStore({ - db: "sessions.db", - dir: "./var/db" - }) + secret: process.env.EBSECRET || "pleasechangeme", + resave: false, + saveUninitialized: false, + // @ts-ignore + store: new SQLiteStore({ + db: "sessions.db", + dir: "./var/db" + }) })); app.use(passport.authenticate("session")); @@ -131,38 +131,38 @@ app.use("/", adduserRouter); app.use("/uploads", express.static("uploads")); function prune () { - db.all("SELECT * FROM media", (err: Error, rows: []) => { - console.log("Uploaded files: " + rows.length); - console.log(rows); - }); + db.all("SELECT * FROM media", (err: Error, rows: []) => { + console.log("Uploaded files: " + rows.length); + console.log(rows); + }); - console.log("Vacuuming database..."); - db.run("VACUUM"); + console.log("Vacuuming database..."); + db.run("VACUUM"); - db.all("SELECT * FROM media WHERE expire < ?", [Date.now()], (err: Error, rows: []) => { - console.log("Expired rows: " + rows); - if (err) return console.error(err); - rows.forEach((row: MediaRow) => { - console.log(`Deleting ${row.path}`); - fs.unlink(`uploads/${row.path}`, (err) => { - if (err) { - if(err.errno == -4058) { - console.log("File already deleted"); - db.all("DELETE FROM media WHERE path = ?", [row.path], (err: Error) => { - if (err) return console.error(err); - }); - } else { - console.error(err); - } - } else { - db.all("DELETE FROM media WHERE path = ?", [row.path], (err: Error) => { - if (err) return console.error(err); - }); - } - }); - console.log(`Deleted ${row.path}`); - }); - }); + db.all("SELECT * FROM media WHERE expire < ?", [Date.now()], (err: Error, rows: []) => { + console.log("Expired rows: " + rows); + if (err) return console.error(err); + rows.forEach((row: MediaRow) => { + console.log(`Deleting ${row.path}`); + fs.unlink(`uploads/${row.path}`, (err) => { + if (err) { + if(err.errno == -4058) { + console.log("File already deleted"); + db.all("DELETE FROM media WHERE path = ?", [row.path], (err: Error) => { + if (err) return console.error(err); + }); + } else { + console.error(err); + } + } else { + db.all("DELETE FROM media WHERE path = ?", [row.path], (err: Error) => { + if (err) return console.error(err); + }); + } + }); + console.log(`Deleted ${row.path}`); + }); + }); } setInterval(prune, 1000 * 60); //prune every minute \ No newline at end of file diff --git a/app/routes/adduser.ts b/app/routes/adduser.ts index 695eb6d..044c38a 100644 --- a/app/routes/adduser.ts +++ b/app/routes/adduser.ts @@ -6,23 +6,24 @@ import {db, createUser} from "../types/db"; const router: Router = express.Router(); const adminCheck: Middleware = (req: Request, res: Response, next: NextFunction) => { - if (!req.user) - return res.status(403).send("You are not authorized to perform this action"); - else { - if (req.user.username != "admin") - return res.status(403).send("You are not authorized to perform this action"); - next(); - } + if (!req.user) + return res.status(403).send("You are not authorized to perform this action"); + else { + if (req.user.username != "admin") + return res.status(403).send("You are not authorized to perform this action"); + } + + next(); } router.get("/adduser", adminCheck, (req: Request, res: Response, next: NextFunction) => { - res.locals.filter = null; - res.render("adduser", { user: req.user }); + res.locals.filter = null; + res.render("adduser", { user: req.user }); }); router.post("/adduser", adminCheck, (req: Request, res: Response, next: NextFunction) => { - createUser(req.body.username, req.body.password); - res.redirect('/'); + createUser(req.body.username, req.body.password); + res.redirect('/'); }); export default router; \ No newline at end of file diff --git a/app/routes/auth.ts b/app/routes/auth.ts index e571b5a..37c0b56 100644 --- a/app/routes/auth.ts +++ b/app/routes/auth.ts @@ -9,61 +9,61 @@ import {db, UserRow} from "../types/db"; let router = express.Router(); passport.use(new LocalStrategy(function verify(username, password, cb) { - db.get("SELECT * FROM users WHERE username = ?", [username], function(err: Error, row: UserRow) { - if (err) { - return cb(err); - } - if (!row) { - return cb(null, false, { - message: "Incorrect username or password." - }); - } + db.get("SELECT * FROM users WHERE username = ?", [username], function(err: Error, row: UserRow) { + if (err) { + return cb(err); + } + if (!row) { + return cb(null, false, { + message: "Incorrect username or password." + }); + } - crypto.pbkdf2(password, row.salt, 310000, 32, "sha256", function(err, hashedPassword) { - if (err) { - return cb(err); - } - if (!crypto.timingSafeEqual(row.hashed_password, hashedPassword)) { - return cb(null, false, { - message: "Incorrect username or password." - }); - } - return cb(null, row); - }); - }); + crypto.pbkdf2(password, row.salt, 310000, 32, "sha256", function(err, hashedPassword) { + if (err) { + return cb(err); + } + if (!crypto.timingSafeEqual(row.hashed_password, hashedPassword)) { + return cb(null, false, { + message: "Incorrect username or password." + }); + } + return cb(null, row); + }); + }); })); passport.serializeUser(function(user:User, cb) { - process.nextTick(function() { - cb(null, { - id: user.id, - username: user.username - }); - }); + process.nextTick(function() { + cb(null, { + id: user.id, + username: user.username + }); + }); }); passport.deserializeUser(function(user:User, cb) { - process.nextTick(function() { - return cb(null, user); - }); + process.nextTick(function() { + return cb(null, user); + }); }); router.get("/login", function(req, res) { - res.render("login"); + res.render("login"); }); router.post("/login/password", passport.authenticate("local", { - successRedirect: "/", - failureRedirect: "/login" + successRedirect: "/", + failureRedirect: "/login" })); router.post("/logout", function(req, res, next) { - req.logout(function(err) { - if (err) { - return next(err); - } - res.redirect("/"); - }); + req.logout(function(err) { + if (err) { + return next(err); + } + res.redirect("/"); + }); }); export default router; diff --git a/app/routes/index.ts b/app/routes/index.ts index 0bedb9f..3cd1273 100644 --- a/app/routes/index.ts +++ b/app/routes/index.ts @@ -20,79 +20,78 @@ import {checkAuth, checkSharexAuth, createEmbedData, handleUpload} from "./middl let upload = multer({ storage: fileStorage /**, fileFilter: fileFilter**/ }); //maybe make this a env variable? const fetchMedia: Middleware = (req, res, next) => { - let admin: boolean = req.user.username == "admin" ? true : false - let query: string = admin == true ? "SELECT * FROM media" : `SELECT * FROM media WHERE username = '${req.user.username}'`; + let admin: boolean = req.user.username == "admin" ? true : false + let query: string = admin == true ? "SELECT * FROM media" : `SELECT * FROM media WHERE username = '${req.user.username}'`; - db.all(query, (err:Error, rows: []) => { - if (err) return next(err); - let files = rows.map((row: MediaRow)=> { - return { - id: row.id, - path: row.path, - expire: row.expire, - username: row.username, - url: "/" + row.id - }; - }); - res.locals.files = files.reverse(); //reverse so newest files appear first - res.locals.Count = files.length; - next(); - }); + db.all(query, (err:Error, rows: []) => { + if (err) return next(err); + let files = rows.map((row: MediaRow)=> { + return { + id: row.id, + path: row.path, + expire: row.expire, + username: row.username, + url: "/" + row.id + }; + }); + res.locals.files = files.reverse(); //reverse so newest files appear first + res.locals.Count = files.length; + next(); + }); } let router = express.Router(); router.get("/", (req: Request, res: Response, next: NextFunction) => { - if (!req.user) - return res.render("home") - next(); + if (!req.user) + return res.render("home") + next(); }, fetchMedia, (req: Request, res: Response) => { - res.locals.filter = null; - res.render("index", { user: req.user }); + res.locals.filter = null; + res.render("index", { user: req.user }); }); router.get("/gifv/:file", async (req: Request, res: Response, next: NextFunction) => { - let url = `${req.protocol}://${req.get("host")}/uploads/${req.params.file}`; - let width; let height; + let url = `${req.protocol}://${req.get("host")}/uploads/${req.params.file}`; + let width; let height; - let nameAndExtension = extension(`uploads/${req.params.file}`); - if (nameAndExtension[1] == ".mp4" || nameAndExtension[1] == ".mov" || nameAndExtension[1] == ".webm" || nameAndExtension[1] == ".gif") { - ffmpeg() - .input(`uploads/${req.params.file}`) - .inputFormat(nameAndExtension[1].substring(1)) - .ffprobe((err: Error, data: ffmpeg.FfprobeData) => { - if (err) return next(err); - width = data.streams[0].width; - height = data.streams[0].height; - return res.render("gifv", { url: url, host: `${req.protocol}://${req.get("host")}`, width: width, height: height }); - }); - } else { - let imageData = await imageProbe(fs.createReadStream(`uploads/${req.params.file}`)); - return res.render("gifv", { url: url, host: `${req.protocol}://${req.get("host")}`, width: imageData.width, height: imageData.height }); - } + let nameAndExtension = extension(`uploads/${req.params.file}`); + if (nameAndExtension[1] == ".mp4" || nameAndExtension[1] == ".mov" || nameAndExtension[1] == ".webm" || nameAndExtension[1] == ".gif") { + ffmpeg() + .input(`uploads/${req.params.file}`) + .inputFormat(nameAndExtension[1].substring(1)) + .ffprobe((err: Error, data: ffmpeg.FfprobeData) => { + if (err) return next(err); + width = data.streams[0].width; + height = data.streams[0].height; + return res.render("gifv", { url: url, host: `${req.protocol}://${req.get("host")}`, width: width, height: height }); + }); + } else { + let imageData = await imageProbe(fs.createReadStream(`uploads/${req.params.file}`)); + return res.render("gifv", { url: url, host: `${req.protocol}://${req.get("host")}`, width: imageData.width, height: imageData.height }); + } }); router.post("/", [checkAuth, upload.array("fileupload"), createEmbedData, handleUpload], (req: Request, res: Response) => { - res.redirect("/") + res.redirect("/") }); router.post("/sharex", [checkSharexAuth, upload.single("fileupload"), createEmbedData, handleUpload], (req: Request, res: Response) => { - return res.send(`${req.protocol}://${req.get("host")}/uploads/${req.file.filename}`); + return res.send(`${req.protocol}://${req.get("host")}/uploads/${req.file.filename}`); }); router.post("/:id(\\d+)/delete", [checkAuth], async (req: Request, res: Response, next: NextFunction) => { - const path: any = await getPath(req.params.id) - fs.unlink(`uploads/${path.path}`, async (err) => { - if (err && err.errno == -4058) { - await deleteId("media", req.params.id).then(()=> { - return res.redirect("/"); - }) - } else { - await deleteId("media", req.params.id).then(()=> { - return res.redirect("/"); - }) - } - }) + const path: any = await getPath(req.params.id) + fs.unlink(`uploads/${path.path}`, async (err) => { + if (err && err.errno == -4058) { + await deleteId("media", req.params.id).then(()=> { + return res.redirect("/"); + }) + } + await deleteId("media", req.params.id).then(()=> { + return res.redirect("/"); + }) + }) }); export default router; \ No newline at end of file diff --git a/app/routes/middleware.ts b/app/routes/middleware.ts index f190c29..55ffbc0 100644 --- a/app/routes/middleware.ts +++ b/app/routes/middleware.ts @@ -14,137 +14,129 @@ import {extension} from "../types/lib"; import {db, MediaParams} from "../types/db"; export const checkAuth: Middleware = (req, res, next) => { - if (!req.user) { - return res.status(401); - } - next(); + if (!req.user) { + return res.status(401); + } + next(); } export const checkSharexAuth: Middleware = (req, res, next) => { - let auth = process.env.EBAPI_KEY || process.env.EBPASS || "pleaseSetAPI_KEY"; - let key = null; + let auth = process.env.EBAPI_KEY || process.env.EBPASS || "pleaseSetAPI_KEY"; + let key = null; - if (req.headers["key"]) { - key = req.headers["key"]; - } else { - return res.status(400).send("{success: false, message: \"No key provided\", fix: \"Provide a key\"}"); - } + if (req.headers["key"]) { + key = req.headers["key"]; + } else { + return res.status(400).send("{success: false, message: \"No key provided\", fix: \"Provide a key\"}"); + } - if (auth != key) { - return res.status(401).send("{success: false, message: '\"'Invalid key\", fix: \"Provide a valid key\"}"); - } + if (auth != key) { + return res.status(401).send("{success: false, message: '\"'Invalid key\", fix: \"Provide a valid key\"}"); + } - let shortKey = key.substr(0, 3) + "..."; - console.log(`Authenicated user with key: ${shortKey}`); + let shortKey = key.substr(0, 3) + "..."; + console.log(`Authenicated user with key: ${shortKey}`); - next(); + next(); } - -//createEmbedDatas mp4 to gif and vice versa with ffmpeg + export const createEmbedData: Middleware = (req, res, next) => { - const files = req.files as Express.Multer.File[] - for (let file in files) { - let nameAndExtension = extension(files[file].originalname); - let oembed = { - type: "video", - version: "1.0", - provider_name: "embedder", - provider_url: "https://github.com/WaveringAna/embedder", - cache_age: 86400, - html: ``, - width: 640, - height: 360 - }; + const files = req.files as Express.Multer.File[] + for (let file in files) { + let nameAndExtension = extension(files[file].originalname); + let oembed = { + type: "video", + version: "1.0", + provider_name: "embedder", + provider_url: "https://github.com/WaveringAna/embedder", + cache_age: 86400, + html: ``, + width: 640, + height: 360 + }; - fs.writeFile(`uploads/oembed-${nameAndExtension[0]}${nameAndExtension[1]}.json`, JSON.stringify(oembed), function (err) { - if (err) return next(err); - console.log(`oembed file created ${nameAndExtension[0]}${nameAndExtension[1]}.json`); - }); - } - next(); + fs.writeFile(`uploads/oembed-${nameAndExtension[0]}${nameAndExtension[1]}.json`, JSON.stringify(oembed), function (err) { + if (err) return next(err); + console.log(`oembed file created ${nameAndExtension[0]}${nameAndExtension[1]}.json`); + }); + } + next(); } export const convert: Middleware = (req, res, next) => { - const files = req.files as Express.Multer.File[] - for (let file in files) { - let nameAndExtension = extension(files[file].originalname); - if (nameAndExtension[1] == ".mp4" || nameAndExtension[1] == ".webm" || nameAndExtension[1] == ".mkv" || nameAndExtension[1] == ".avi" || nameAndExtension[1] == ".mov") { - console.log("Converting " + nameAndExtension[0] + nameAndExtension[1] + " to gif"); - ffmpeg() - .input(`uploads/${nameAndExtension[0]}${nameAndExtension[1]}`) - .inputFormat(nameAndExtension[1].substring(1)) - .outputFormat("gif") - .output(`uploads/${nameAndExtension[0]}.gif`) - .on("end", function() { - console.log("Conversion complete"); - console.log(`Uploaded to uploads/${nameAndExtension[0]}.gif`); - }) - .on("error", (e) => console.log(e)) - .run(); - } else if (nameAndExtension[1] == ".gif") { - console.log(`Converting ${nameAndExtension[0]}${nameAndExtension[1]} to mp4`); - ffmpeg(`uploads/${nameAndExtension[0]}${nameAndExtension[1]}`) - .inputFormat("gif") - .outputFormat("mp4") - .outputOptions([ - "-pix_fmt yuv420p", - "-c:v libx264", - "-movflags +faststart" - ]) - .noAudio() - .output(`uploads/${nameAndExtension[0]}.mp4`) - .on("end", function() { - console.log("Conversion complete"); - console.log(`Uploaded to uploads/${nameAndExtension[0]}.mp4`); - }) - .run(); - } - } + const files = req.files as Express.Multer.File[] + for (let file in files) { + let nameAndExtension = extension(files[file].originalname); + if (nameAndExtension[1] == ".mp4" || nameAndExtension[1] == ".webm" || nameAndExtension[1] == ".mkv" || nameAndExtension[1] == ".avi" || nameAndExtension[1] == ".mov") { + console.log("Converting " + nameAndExtension[0] + nameAndExtension[1] + " to gif"); + ffmpeg() + .input(`uploads/${nameAndExtension[0]}${nameAndExtension[1]}`) + .inputFormat(nameAndExtension[1].substring(1)) + .outputFormat("gif") + .output(`uploads/${nameAndExtension[0]}.gif`) + .on("end", function() { + console.log("Conversion complete"); + console.log(`Uploaded to uploads/${nameAndExtension[0]}.gif`); + }) + .on("error", (e) => console.log(e)) + .run(); + } else if (nameAndExtension[1] == ".gif") { + console.log(`Converting ${nameAndExtension[0]}${nameAndExtension[1]} to mp4`); + ffmpeg(`uploads/${nameAndExtension[0]}${nameAndExtension[1]}`) + .inputFormat("gif") + .outputFormat("mp4") + .outputOptions([ + "-pix_fmt yuv420p", + "-c:v libx264", + "-movflags +faststart" + ]) + .noAudio() + .output(`uploads/${nameAndExtension[0]}.mp4`) + .on("end", function() { + console.log("Conversion complete"); + console.log(`Uploaded to uploads/${nameAndExtension[0]}.mp4`); + }) + .run(); + } + } } export const handleUpload: Middleware = (req, res, next) => { - if (!req.file && !req.files) { - console.log("No files were uploaded"); - return res.status(400).send("No files were uploaded."); - } + if (!req.file && !req.files) { + console.log("No files were uploaded"); + return res.status(400).send("No files were uploaded."); + } + + const files = (req.files) ? req.files as Express.Multer.File[] : req.file; //Check if a single file was uploaded or multiple + const username = (req.user) ? req.user.username : "sharex" //if no username was provided, we can presume that it is sharex + const expireDate: Date = (req.body.expire) ? new Date(Date.now() + (req.body.expire * 24 * 60 * 60 * 1000)) : null; - //Check if a single file was uploaded or multiple - const files = (req.files) ? req.files as Express.Multer.File[] : req.file; - //if no username was provided, we can presume that it is sharex - const username = (req.user) ? req.user.username : "sharex" - - let expireDate: Date; - if (req.body.expire) { - expireDate = new Date(Date.now() + (req.body.expire * 24 * 60 * 60 * 1000)); - } else - expireDate = null; + if (files instanceof Array) { + for (let file in files) { + insertToDB(files[file].filename, expireDate, username, next); + } + } else + insertToDB(files.filename, expireDate, username, next); - if (files instanceof Array) { - for (let file in files) { - insertToDB(files[file].filename, expireDate, username, next); - } - } else - insertToDB(files.filename, expireDate, username, next); - - next(); + next(); } function insertToDB (filename: String, expireDate: Date, username: String, next: NextFunction) { - let params: MediaParams = [ - filename, - expireDate, - username - ] - - db.run("INSERT INTO media (path, expire, username) VALUES (?, ?, ?)", params, function (err) { - if (err) { - console.log(err); - return next(err); - } - console.log(`Uploaded ${filename} to database`); - if (expireDate == null) - console.log("It will not expire"); - else if (expireDate != null || expireDate != undefined) - console.log(`It will expire on ${expireDate}`); - }); + let params: MediaParams = [ + filename, + expireDate, + username + ] + + db.run("INSERT INTO media (path, expire, username) VALUES (?, ?, ?)", params, function (err) { + if (err) { + console.log(err); + return next(err); + } + console.log(`Uploaded ${filename} to database`); + if (expireDate == null) + console.log("It will not expire"); + else if (expireDate != null || expireDate != undefined) + console.log(`It will expire on ${expireDate}`); + }); } \ No newline at end of file diff --git a/app/types/db.ts b/app/types/db.ts index c216bde..a6f981a 100644 --- a/app/types/db.ts +++ b/app/types/db.ts @@ -9,50 +9,50 @@ mkdirp.sync("./var/db"); export const db = new sqlite3.Database("./var/db/media.db"); export function createUser(username: string, password: string) { - var salt = crypto.randomBytes(16); - db.run("INSERT OR IGNORE INTO users (username, hashed_password, salt) VALUES (?, ?, ?)", [ - username, - crypto.pbkdf2Sync(password, salt, 310000, 32, "sha256"), - salt - ]); + var salt = crypto.randomBytes(16); + db.run("INSERT OR IGNORE INTO users (username, hashed_password, salt) VALUES (?, ?, ?)", [ + username, + crypto.pbkdf2Sync(password, salt, 310000, 32, "sha256"), + salt + ]); } export function getPath(id: number | string) { - return new Promise((resolve, reject) => { - let query: string = `SELECT path FROM media WHERE id = ?`; - db.get(query, [id], (err: Error, path: object) => { - if (err) {reject(err)} - resolve(path) - }); - }) + return new Promise((resolve, reject) => { + let query: string = `SELECT path FROM media WHERE id = ?`; + db.get(query, [id], (err: Error, path: object) => { + if (err) {reject(err)} + resolve(path) + }); + }) } export function deleteId(database: string, id: number | string) { - return new Promise((resolve, reject) => { - let query: string = `DELETE FROM ${database} WHERE id = ?` - db.run(query, [id], (err: Error) => { - if (err) {reject(err); return;} - resolve(null) - }) - }) + return new Promise((resolve, reject) => { + let query: string = `DELETE FROM ${database} WHERE id = ?` + db.run(query, [id], (err: Error) => { + if (err) {reject(err); return;} + resolve(null) + }) + }) } export interface MediaRow { - id? : Number, - path: String, - expire: Date, - username?: String + id? : Number, + path: String, + expire: Date, + username?: String } export type MediaParams = [ - path: String, - expire: Date, - username?: String + path: String, + expire: Date, + username?: String ] export interface UserRow { - id? : Number, - username: String, - hashed_password: any, - salt: any + id? : Number, + username: String, + hashed_password: any, + salt: any } \ No newline at end of file diff --git a/app/types/lib.ts b/app/types/lib.ts index 14852b4..70b0ebd 100644 --- a/app/types/lib.ts +++ b/app/types/lib.ts @@ -8,8 +8,8 @@ declare global { } export function extension(str: String){ - let file = str.split("/").pop(); - return [file.substr(0,file.lastIndexOf(".")),file.substr(file.lastIndexOf("."),file.length).toLowerCase()]; + let file = str.split("/").pop(); + return [file.substr(0,file.lastIndexOf(".")),file.substr(file.lastIndexOf("."),file.length).toLowerCase()]; } export interface User {