diff --git a/instance/src/assets/fs_template_files/markdown.md b/instance/src/assets/fs_template_files/markdown.md new file mode 100644 index 0000000..dd68906 --- /dev/null +++ b/instance/src/assets/fs_template_files/markdown.md @@ -0,0 +1,11 @@ +# Template Markdown File + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam mattis, orci ut porttitor efficitur, nisl quam tincidunt libero, ut pharetra justo metus id augue. In convallis lobortis facilisis. Pellentesque gravida egestas mi nec sagittis. Fusce suscipit vel justo sit amet sodales. Aenean quis ornare lorem. Nam blandit vitae elit et elementum. Suspendisse quis feugiat libero. Vestibulum quis pellentesque libero, ut tincidunt tellus. Integer posuere vel sapien volutpat maximus. Praesent commodo lacus velit, sollicitudin faucibus ipsum cursus et. Praesent sodales congue tempor. Vivamus vel nulla ac tortor commodo tincidunt. Pellentesque nec vestibulum odio, eget accumsan ligula. Sed vel urna quis leo sollicitudin fringilla sed at erat. In fermentum vitae turpis non semper. + +Ut risus orci, condimentum nec ante vel, sollicitudin fermentum lorem. Vivamus velit ex, dapibus eu fringilla vitae, blandit nec nibh. Fusce nec erat nec dui sodales maximus. Mauris et elit lorem. Pellentesque neque metus, malesuada in rhoncus tincidunt, tristique sit amet augue. Proin pharetra nisl sit amet pharetra iaculis. Nam non arcu neque. Nulla non porta ipsum. Etiam luctus lacinia pellentesque. Proin non volutpat elit, lobortis aliquet ante. Nunc dolor diam, gravida nec velit vel, fringilla condimentum libero. Aenean semper sit amet nulla at mollis. + +Quisque velit erat, rhoncus eleifend ex non, malesuada gravida enim. Morbi fermentum sem non augue imperdiet facilisis. Nulla tempus scelerisque mi, a luctus ex. Sed id risus sit amet purus dapibus blandit. Duis libero ipsum, dapibus et dictum eget, pharetra a ante. Suspendisse porta elit non risus vulputate, id blandit nisi congue. Cras arcu purus, placerat non enim vel, vestibulum vehicula lectus. + +Cras eleifend maximus enim imperdiet pharetra. Aliquam erat volutpat. Nulla nec sapien metus. Suspendisse pharetra semper tellus. Donec luctus justo vitae risus dapibus, sit amet egestas mauris consectetur. Ut tempor dui at enim porttitor lacinia. Maecenas vel imperdiet eros. Nullam porttitor elit sed mi mattis, sit amet pulvinar orci bibendum. Praesent sit amet ullamcorper quam. In hac habitasse platea dictumst. Nullam accumsan tortor quam, in porttitor ante efficitur ut. Nulla auctor velit dolor. In gravida tellus ullamcorper mollis dapibus. Proin ut ex purus. + +Nullam consectetur urna tellus, ut condimentum justo porta commodo. Aenean interdum, enim et porttitor gravida, augue velit pulvinar mauris, et vulputate nisi diam eget lectus. Nulla facilisi. Sed ac ligula fringilla, imperdiet sapien non, consequat purus. Nunc interdum tortor sed finibus tincidunt. Donec a velit eget dui commodo ultricies. Duis vel diam aliquam, vulputate augue eget, hendrerit lorem. Donec a congue lacus. Phasellus volutpat fermentum est, congue placerat nisi interdum nec. Fusce ultricies dictum tincidunt. Aliquam id pharetra eros, efficitur posuere nibh. Duis porttitor orci enim, a egestas nibh dignissim non. Curabitur suscipit facilisis mattis. \ No newline at end of file diff --git a/instance/src/assets/fs_template_files/plaintext.txt b/instance/src/assets/fs_template_files/plaintext.txt new file mode 100644 index 0000000..e69de29 diff --git a/instance/src/systems/filesystem.ts b/instance/src/systems/filesystem.ts index 7b48b28..f40eec3 100644 --- a/instance/src/systems/filesystem.ts +++ b/instance/src/systems/filesystem.ts @@ -1,6 +1,6 @@ +import fs from "node:fs"; +import path from "node:path"; import { randomUUIDv7 } from "bun"; -import fs from "fs"; -import path from "path"; import type { Instance } from "../index.js"; import System from "../system.js"; import { WorkspacesEvent } from "./events.js"; @@ -9,6 +9,7 @@ export default class FilesystemSystem extends System { readonly SRC_ROOT = path.resolve("./instance/src/"); readonly FS_ROOT = path.resolve("./fs/"); readonly CACHE_PATH = path.join(this.FS_ROOT, "cache"); + readonly SYSTEM_PATH = path.join(this.FS_ROOT, "system"); readonly AUTOINSTALL_PATH = path.join(process.cwd(), "autoinstall"); _internalAssets: Map; @@ -19,6 +20,12 @@ export default class FilesystemSystem extends System { fs.mkdirSync(this.FS_ROOT, { recursive: true }); + if (!fs.existsSync(this.SYSTEM_PATH)) { + fs.mkdirSync(this.SYSTEM_PATH, { + recursive: true, + }); + } + if (fs.existsSync(this.CACHE_PATH)) { fs.rmSync(this.CACHE_PATH, { recursive: true }); } @@ -43,6 +50,12 @@ export default class FilesystemSystem extends System { fs.cpSync(path.join(this.SRC_ROOT, "assets/wallpapers/pexels-steve-29708303.jpg"), path.join(this.FS_ROOT, "assets/login/background.png")); } + if (!fs.existsSync(path.join(this.SYSTEM_PATH, "fs_template_files"))) { + fs.mkdirSync(path.join(this.SYSTEM_PATH, "fs_template_files")) + fs.cpSync(path.join(this.SRC_ROOT, "assets/fs_template_files/"), path.join(this.SYSTEM_PATH, "fs_template_files"), { recursive: true }) + } + + this._internalAssets = new Map(); this._internalAssetPaths = new Map(); } @@ -140,6 +153,7 @@ export default class FilesystemSystem extends System { return `/api/asset/raw/${assetId}`; } + // TODO: properly implement this instead of this stop-gap solution. async getUserPermissions(userId: number, fsPath: string): Promise<{ read: boolean; write: boolean }> { const user = (await this.instance.sys.users.getUserById(userId))!;