From 89663c696fd5b38f964d65e73a2fc732ff9c6548 Mon Sep 17 00:00:00 2001 From: waveringana Date: Fri, 22 Sep 2023 03:53:04 -0400 Subject: [PATCH] start work migrating to bun --- app/app.ts | 76 +++++++++----- app/routes/auth.ts | 35 ++++--- app/routes/index.ts | 29 +++++- app/types/db.ts | 219 ++++++++++++++++++++++++---------------- app/types/middleware.ts | 5 +- app/types/multer.ts | 37 ++++--- bun.lockb | Bin 0 -> 159383 bytes index.ts | 1 + package.json | 7 +- tsconfig.json | 1 + 10 files changed, 251 insertions(+), 159 deletions(-) create mode 100755 bun.lockb create mode 100644 index.ts diff --git a/app/app.ts b/app/app.ts index 4672266..0649b7a 100644 --- a/app/app.ts +++ b/app/app.ts @@ -12,12 +12,13 @@ const SQLiteStore = sqlite3(session); import fs from "fs"; import http from "http"; import path from "path"; +import { unlink } from 'fs/promises'; import authRouter from "./routes/auth"; import indexRouter from "./routes/index"; import adduserRouter from "./routes/adduser"; -import {db, expire, createDatabase, updateDatabase, MediaRow} from "./types/db"; +import {db, expire, createDatabase, updateDatabase, MediaRow, UserRow} from "./types/db"; const app = express(); const server = http.createServer(app); @@ -68,25 +69,31 @@ function onError(error: any) { // Check if there is an existing DB or not, then check if it needs to be updated to new schema -db.get("SELECT * FROM sqlite_master WHERE name ='users' and type='table'", async (err, row) => { - if (!row) createDatabase(2); - else checkVersion(); -}); +const row = db.prepare("SELECT * FROM sqlite_master WHERE name ='users' and type='table'").get(); -function checkVersion () { - db.get("PRAGMA user_version", (err: Error, row: any) => { - if (row && row.user_version) { +if (!row) { + createDatabase(2); +} else { + checkVersion(); +} + + +function checkVersion() { + // Using the synchronous API of better-sqlite3 + const row = db.prepare("PRAGMA user_version").get() as UserRow; + + if (row && row.user_version) { const version = row.user_version; if (version != 2) console.log("DATABASE IS OUTDATED"); //no future releases yet, and else statement handles version 1 //updateDatabase(version, 2); - } else { + } else { // Because ver 1 does not have user_version set, we can safely assume that it is ver 1 updateDatabase(1, 2); - } - }); + } } + function onListening() { const addr = server.address(); const bind = typeof addr === "string" @@ -127,25 +134,38 @@ app.use("/", adduserRouter); app.use("/uploads", express.static("uploads")); -async function prune () { - db.all("SELECT * FROM media", (err: Error, rows: []) => { - console.log("Uploaded files: " + rows.length); - console.log(rows); - }); +async function prune() { + try { + // Fetching all media entries + const rows = db.prepare("SELECT * FROM media").all() as MediaRow[]; + console.log("Uploaded files: " + rows.length); + console.log(rows); - console.log("Vacuuming database..."); - db.run("VACUUM"); + // Vacuuming the database + console.log("Vacuuming database..."); + db.prepare("VACUUM").run(); - db.each("SELECT path FROM media WHERE expire < ?", [Date.now()], (err: Error, row: MediaRow) => { - console.log(`Expired row: ${row}`); - fs.unlink(`uploads/${row.path}`, (err) => { - if (err && err.errno == -4058) { - console.log("File already deleted"); - } - }); - }); + // Deleting expired media files + const expiredRows= db.prepare("SELECT path FROM media WHERE expire < ?").all(Date.now()) as MediaRow[]; - await expire("media", "expire", Date.now()); + for (const row of expiredRows) { + console.log(`Expired row: ${row}`); + try { + await unlink(`uploads/${row.path}`); + } catch (err: any) { + if (err && err.code === 'ENOENT') { + console.log("File already deleted"); + } else { + console.error(`Failed to delete file: ${row.path}`, err); + } + } + } + + await expire("media", "expire", Date.now()); + + } catch (err) { + console.error("Error in prune function:", err); + } } -setInterval(prune, 1000 * 60); //prune every minute \ No newline at end of file +setInterval(prune, 1000 * 60); //prune every minute diff --git a/app/routes/auth.ts b/app/routes/auth.ts index 9bee3cf..b8c18e9 100644 --- a/app/routes/auth.ts +++ b/app/routes/auth.ts @@ -9,30 +9,33 @@ import {db, UserRow} from "../types/db"; const 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); - } + try { + // Fetch user from database using better-sqlite3's synchronous API + const row = db.prepare("SELECT * FROM users WHERE username = ?").get(username) as UserRow; + 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); - }); - }); + // Synchronously hash the provided password with the stored salt + const hashedPassword = crypto.pbkdf2Sync(password, row.salt, 310000, 32, "sha256"); + + if (!crypto.timingSafeEqual(row.hashed_password, hashedPassword)) { + return cb(null, false, { + message: "Incorrect username or password." + }); + } + + return cb(null, row); + + } catch (err) { + return cb(err); + } })); + passport.serializeUser(function(user:User, cb) { process.nextTick(function() { cb(null, { diff --git a/app/routes/index.ts b/app/routes/index.ts index f42eac7..664fc8f 100644 --- a/app/routes/index.ts +++ b/app/routes/index.ts @@ -17,13 +17,32 @@ import {fileStorage} from "../types/multer"; import {checkAuth, checkSharexAuth, convertTo720p, createEmbedData, handleUpload} from "../types/middleware"; const upload = multer({ storage: fileStorage /**, fileFilter: fileFilter**/ }); //maybe make this a env variable? + /**Middleware to grab media from media database */ const fetchMedia: Middleware = (req, res, next) => { - const admin: boolean = req.user.username == "admin" ? true : false; - /**Check if the user is an admin, if so, show all posts from all users */ - const query: string = admin == true ? "SELECT * FROM media" : `SELECT * FROM media WHERE username = '${req.user.username}'`; + try { + const admin: boolean = req.user.username == "admin" ? true : false; + /**Check if the user is an admin, if so, show all posts from all users */ + const query: string = admin ? "SELECT * FROM media" : `SELECT * FROM media WHERE username = ?`; + const rows = (admin ? db.prepare(query).all() : db.prepare(query).all(req.user.username)) as MediaRow[]; + const files = rows.map((row: MediaRow) => { + return { + id: row.id, + path: row.path, + expire: row.expire, + sername: row.username, + url: "/" + row.id + }; + }); - db.all(query, (err:Error, rows: []) => { + res.locals.files = files.reverse(); //reverse so newest files appear first + res.locals.Count = files.length; + next(); + } catch (err) { + next(err); + } + + /**db.all(query, (err:Error, rows: []) => { if (err) return next(err); const files = rows.map((row: MediaRow)=> { return { @@ -37,7 +56,7 @@ const fetchMedia: Middleware = (req, res, next) => { res.locals.files = files.reverse(); //reverse so newest files appear first res.locals.Count = files.length; next(); - }); + });**/ }; const router = express.Router(); diff --git a/app/types/db.ts b/app/types/db.ts index adc4ff9..37eac7e 100644 --- a/app/types/db.ts +++ b/app/types/db.ts @@ -1,13 +1,57 @@ -import sqlite3 from "sqlite3"; +//import sqlite3 from "sqlite3"; import mkdirp from "mkdirp"; import crypto from "crypto"; +import { Database } from "bun:sqlite"; + mkdirp.sync("./uploads"); mkdirp.sync("./var/db"); -export const db = new sqlite3.Database("./var/db/media.db"); +export const db = new Database("./var/db/media.db"); -/**Create the database schema for the embedders app*/ +/** + * Represents a generic row structure in a database table. + */ +export interface GenericRow { + id? : number | string, + username?: string + expire? :Date +} + +/** + * Represents a row structure in the media table. + */ +export interface MediaRow { + id? : number | string, + path: string, + expire: Date, + username?: string +} + +/** + * A tuple representing parameters for media-related operations. + */ +export type MediaParams = [ + path: string, + expire: string | number | null, + username?: string +] + +/** + * Represents a row structure in the user table. + */ +export interface UserRow { + id? : number | string, + username: string, + hashed_password: any, + salt: any, + user_version? : number +} + +/** + * Initializes the database tables and sets the user version pragma. + * @param {number} version - The desired user version for the database. + */ export function createDatabase(version: number){ console.log("Creating database"); @@ -17,7 +61,9 @@ export function createDatabase(version: number){ hashed_password BLOB, \ expire INTEGER, \ salt BLOB \ - )", () => createUser("admin", process.env.EBPASS || "changeme")); + )") + + createUser("admin", process.env.EBPASS || "changeme"); db.run("CREATE TABLE IF NOT EXISTS media ( \ id INTEGER PRIMARY KEY, \ @@ -29,58 +75,75 @@ export function createDatabase(version: number){ db.run(`PRAGMA user_version = ${version}`); } -/**Updates old Database schema to new */ +/** + * Updates the database schema from an old version to a new one. + * @param {number} oldVersion - The current version of the database. + * @param {number} newVersion - The desired version to upgrade to. + */ export function updateDatabase(oldVersion: number, newVersion: number){ if (oldVersion == 1) { console.log(`Updating database from ${oldVersion} to ${newVersion}`); - db.run("PRAGMA user_version = 2", (err) => { - if(err) return; - }); - db.run("ALTER TABLE media ADD COLUMN username TEXT", (err) => { - if(err) return; - }); + db.run("PRAGMA user_version = 2"); + db.run("ALTER TABLE media ADD COLUMN username TEXT"); - db.run("ALTER TABLE users ADD COLUMN expire TEXT", (err) => { - if(err) return; - }); + db.run("ALTER TABLE users ADD COLUMN expire TEXT"); } } -/**Inserts into the media table */ -export function insertToDB (filename: string, expireDate: Date, username: string) { - const params: MediaParams = [ - filename, - expireDate, - username - ]; - - db.run("INSERT INTO media (path, expire, username) VALUES (?, ?, ?)", params, function (err) { - if (err) { - console.log(err); - return err; - } - console.log(`Uploaded ${filename} to database`); +/** + * Inserts a new media record into the media table. + * @param {string} filename - The name of the file. + * @param {string | number | null} expireDate - The expiration date for the media. + * @param {string} username - The name of the user. + */ +export function insertToDB (filename: string, expireDate: string | number | null, username: string) { + try { + const params: MediaParams = [ + filename, + expireDate, + username + ]; + + const query = db.prepare("INSERT INTO media (path, expire, username) VALUES (?, ?, ?)"); + query.run(...params); + + console.log(`Inserted ${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}`); - }); + } catch (err) { + console.log(err); + throw err; + } } -/**Searches the database and returns images with partial or exact keysearches */ +/** + * Searches for images in the database based on a name or keyword. + * @param {string} imagename - The name or keyword to search for. + * @param {boolean} partial - Whether to perform a partial search. + */ export function searchImages(imagename: string, partial: boolean) { return new Promise((resolve, reject) => { console.log(`searching for ${imagename}`); }); } +/** + * Updates the name of an image in the database. + * @param {string} oldimagename - The current name of the image. + * @param {string} newname - The new name for the image. + */ export function updateImageName(oldimagename: string, newname:string) { return new Promise((resolve, reject) => { console.log(`updating ${oldimagename} to ${newname}`); }); } - -/**Inserts a new user to the database */ +/** + * Adds a new user to the users table in the database. + * @param {string} username - The name of the user. + * @param {string} password - The user's password. + */ export function createUser(username: string, password: string) { return new Promise((resolve, reject) => { console.log(`Creating user ${username}`); @@ -96,70 +159,50 @@ export function createUser(username: string, password: string) { }); } -/**Selects the path for a file given ID */ -export function getPath(id: number | string) { +/** + * Retrieves the path for a file from the media table based on the given ID. + * + * @param {number|string} id - The ID of the record whose path needs to be fetched. + * @returns {Promise} A promise that resolves with the selected paths. + * The resolved value is an array of records (usually containing a single item). + * @throws Will reject the promise with an error if the query fails. + */ +export function getPath(id: number | string): Promise { return new Promise((resolve, reject) => { - const query = "SELECT path FROM media WHERE id = ?"; - - db.get(query, [id], (err: Error, path: object) => { - if (err) {reject(err);} - resolve(path); - }); + try { + const query = db.prepare("SELECT path FROM media WHERE id = ?"); + resolve(query.all(id)); + } catch (err) { + reject(err); + } }); } -/**Deletes from database given an ID */ -export function deleteId(database: string, id: number | string) { - return new Promise((resolve, reject) => { - const query = `DELETE FROM ${database} WHERE id = ?`; - - db.run(query, [id], (err: Error) => { - if (err) {reject(err); return;} - resolve(null); - }); - }); +/** + * Deletes a row from a specified table based on its ID. + * + * @param {string} database - The name of the database table. + * @param {number | string} id - The ID of the row to delete. + */ +export function deleteId(database: string, id: number | string): void { + const deleteQuery = `DELETE FROM ${database} WHERE id = ?`; + db.prepare(deleteQuery).run(id); } -/**Expires a database row given a Date in unix time */ +/** + * Removes rows from a table that are older than a given expiration date. + * + * @param {string} database - The name of the database table. + * @param {string} column - The column name used for date comparison. + * @param {number} expiration - The expiration date in UNIX time. + * @returns {Promise} + */ export function expire(database: string, column: string, expiration:number) { return new Promise((resolve, reject) => { - const query = `SELECT * FROM ${database} WHERE ${column} < ?`; + const rows: GenericRow[] = db.query(`SELECT * FROM ${database} WHERE ${column} < ?`).all(expiration); - db.each(query, [expiration], async (err: Error, row: GenericRow) => { - if (err) reject(err); - await deleteId(database, row.id); - - resolve(null); - }); + for (const row of rows) { + deleteId(database, row.id); + } }); -} - -/**A generic database row */ -export interface GenericRow { - id? : number | string, - username?: string - expire? :Date -} - -/**A row for the media database */ -export interface MediaRow { - id? : number | string, - path: string, - expire: Date, - username?: string -} - -/**Params type for doing work with media database */ -export type MediaParams = [ - path: string, - expire: Date, - username?: string -] - -/**A row for the user database */ -export interface UserRow { - id? : number | string, - username: string, - hashed_password: any, - salt: any } \ No newline at end of file diff --git a/app/types/middleware.ts b/app/types/middleware.ts index 7c596e1..00fa278 100644 --- a/app/types/middleware.ts +++ b/app/types/middleware.ts @@ -151,10 +151,13 @@ export const handleUpload: Middleware = (req, res, next) => { console.log("No files were uploaded"); return res.status(400).send("No files were uploaded."); } + + console.log("running handleUpload") const files = (req.files) ? req.files as Express.Multer.File[] : req.file; //Check if a single file was uploaded or multiple + console.log(files); 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; + const expireDate: number | null = (req.body.expire) ? Date.now() + (req.body.expire * 24 * 60 * 60 * 1000) : null; if (files instanceof Array) { for (const file in files) { diff --git a/app/types/multer.ts b/app/types/multer.ts index 64f4568..8debe45 100644 --- a/app/types/multer.ts +++ b/app/types/multer.ts @@ -1,5 +1,5 @@ import {Request} from "express"; -import multer, {FileFilterCallback} from "multer"; +import multer, {FileFilterCallback, MulterError} from "multer"; import {db, MediaRow} from "./db"; import {extension} from "./lib"; @@ -22,27 +22,26 @@ export const fileStorage = multer.diskStorage({ ): void => { const nameAndExtension = extension(file.originalname); console.log(`Uploading ${file}`); - db.all("SELECT * FROM media WHERE path = ?", [nameAndExtension[0] + nameAndExtension[1]], (err: Error, exists: []) => { - if (err) { - console.log(err); - callback(err, null); - } - if (exists.length != 0) { - const suffix = new Date().getTime() / 1000; + try { + console.log("querying") + const query = db.query(`SELECT * FROM media WHERE path = ?`); + const exists = query.all(nameAndExtension[0] + nameAndExtension[1]); + console.log(exists) - if (request.body.title == "" || request.body.title == null || request.body.title == undefined) { - callback(null, nameAndExtension[0] + "-" + suffix + nameAndExtension[1]); - } else { - callback(null, request.body.title + "-" + suffix + nameAndExtension[1]); - } + if (exists.length !== 0) { + const suffix = (new Date().getTime() / 1000).toString(); + const newName = (request.body.title || nameAndExtension[0]) + "-" + suffix + nameAndExtension[1]; + callback(null, newName); + console.log("ran callback with suffix") } else { - if (request.body.title == "" || request.body.title == null || request.body.title == undefined) { - callback(null, nameAndExtension[0] + nameAndExtension[1]); - } else { - callback(null, request.body.title + nameAndExtension[1]); - } + const newName = (request.body.title || nameAndExtension[0]) + nameAndExtension[1]; + callback(null, newName); + console.log("ran callback") } - }); + } catch (err: any) { + console.log(err); + callback(err, null); + } } }); diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..d6a9248b4352e1725386b73f79b78195729d8a62 GIT binary patch literal 159383 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