UNPKG

@trap_stevo/vault-link

Version:

Unlock the ultimate gateway to secure file and directory access. VaultLink transforms your files into guarded, time-sensitive links—sealed, tamper-proof, and effortlessly shareable. Elevate your storage game with unparalleled precision and flexibility, tu

82 lines (81 loc) • 2.06 kB
"use strict"; const express = require("express"); const { parseExpiration } = require("./HUDManagers/VaultLinkUtilitiesManager"); const createLinkGateway = require("./linkGateway"); const VaultLink = require("./vaultLink"); let vaultLinkInstancePort = null; let vaultLinkInstance = null; const linkGenerator = { "directory": (vaultLink, path, options) => { return vaultLink.createLinkForDirectory(path, options); }, "file": (vaultLink, path, options) => { return vaultLink.createLinkForFile(path, options); } }; function addVaultLinkEndpoint(app, vaultLink) { app.get("/generate-vault-link", (req, ress) => { const { path, type, expiration, userID, sessionID } = req.query; if (!path || !type) { return ress.status(400).json({ error: "Path and type required." }); } const options = { expiration: expiration ? expiration : "1h", extraMetadata: { userID, sessionID }, recursive: type === "directory" }; let link; if (linkGenerator[type]) { link = linkGenerator[type](vaultLink, path, options); } else { return ress.status(400).json({ error: `Invalid type. Use "file" or "directory".` }); } ress.json(link); return; }); } ; function closeVaultLink() { if (vaultLinkInstance) { vaultLinkInstance.close(() => { console.log(`VaultLink instance ~ ${vaultLinkInstancePort} closed.`); vaultLinkInstancePort = null; vaultLinkInstance = null; }); return; } console.log("No operational VaultLink instance."); } ; function launchVaultLink(config, port = 8269) { const app = express(); const vaultLink = new VaultLink(config); addVaultLinkEndpoint(app, vaultLink); app.use(createLinkGateway(config)); vaultLinkInstance = app.listen(port, "0.0.0.0", () => { console.log(`VaultLink operational ~ ${port}`); vaultLinkInstancePort = port; }); return vaultLink; } ; module.exports = { VaultLink, launchVaultLink, closeVaultLink };