mirror of
https://github.com/NebulaServices/Nebula.git
synced 2025-05-13 03:50:02 -04:00
Chore: format... 2!
This commit is contained in:
parent
8cb2513610
commit
fd8aaf543e
38 changed files with 854 additions and 854 deletions
402
server.js
402
server.js
|
@ -3,10 +3,10 @@ import { createServer } from "node:http";
|
|||
import path from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
import {
|
||||
createRammerhead,
|
||||
routeRhRequest,
|
||||
routeRhUpgrade,
|
||||
shouldRouteRh
|
||||
createRammerhead,
|
||||
routeRhRequest,
|
||||
routeRhUpgrade,
|
||||
shouldRouteRh
|
||||
} from "@rubynetwork/rammerhead";
|
||||
import express from "express";
|
||||
import multer from "multer";
|
||||
|
@ -19,71 +19,71 @@ const __filename = fileURLToPath(import.meta.url);
|
|||
const __dirname = path.dirname(__filename);
|
||||
//create the rh server.
|
||||
const rh = createRammerhead({
|
||||
logLevel: "debug",
|
||||
reverseProxy: true,
|
||||
disableLocalStorageSync: false,
|
||||
disableHttp2: false
|
||||
logLevel: "debug",
|
||||
reverseProxy: true,
|
||||
disableLocalStorageSync: false,
|
||||
disableHttp2: false
|
||||
});
|
||||
const app = express();
|
||||
const publicPath = "dist/client";
|
||||
const sequelize = new Sequelize("database", "user", "password", {
|
||||
host: "localhost",
|
||||
dialect: "sqlite",
|
||||
logging: false,
|
||||
// SQLite only
|
||||
storage: "database.sqlite"
|
||||
host: "localhost",
|
||||
dialect: "sqlite",
|
||||
logging: false,
|
||||
// SQLite only
|
||||
storage: "database.sqlite"
|
||||
});
|
||||
|
||||
// Auth middleware
|
||||
function auth_psk(req, res, next) {
|
||||
if (!config.marketplace_enabled) {
|
||||
let err = "Marketplace is disabled!";
|
||||
return next(err);
|
||||
}
|
||||
if (!config.marketplace_enabled) {
|
||||
let err = "Marketplace is disabled!";
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (req.headers.psk !== config.marketplace_psk) {
|
||||
let err = "Bad PSK!";
|
||||
console.log("Bad psk");
|
||||
return next(err);
|
||||
}
|
||||
if (req.headers.psk !== config.marketplace_psk) {
|
||||
let err = "Bad PSK!";
|
||||
console.log("Bad psk");
|
||||
return next(err);
|
||||
}
|
||||
|
||||
return next();
|
||||
return next();
|
||||
}
|
||||
|
||||
var image_storage = multer.diskStorage({
|
||||
destination: function (req, file, cb) {
|
||||
cb(null, "database_assets/image");
|
||||
},
|
||||
filename: function (req, file, cb) {
|
||||
cb(null, file.originalname); //Appending extension
|
||||
}
|
||||
destination: function (req, file, cb) {
|
||||
cb(null, "database_assets/image");
|
||||
},
|
||||
filename: function (req, file, cb) {
|
||||
cb(null, file.originalname); //Appending extension
|
||||
}
|
||||
});
|
||||
|
||||
var video_storage = multer.diskStorage({
|
||||
destination: function (req, file, cb) {
|
||||
cb(null, "database_assets/video");
|
||||
},
|
||||
filename: function (req, file, cb) {
|
||||
cb(null, file.originalname); //Appending extension
|
||||
}
|
||||
destination: function (req, file, cb) {
|
||||
cb(null, "database_assets/video");
|
||||
},
|
||||
filename: function (req, file, cb) {
|
||||
cb(null, file.originalname); //Appending extension
|
||||
}
|
||||
});
|
||||
|
||||
var style_storage = multer.diskStorage({
|
||||
destination: function (req, file, cb) {
|
||||
cb(null, "database_assets/styles");
|
||||
},
|
||||
filename: function (req, file, cb) {
|
||||
cb(null, file.originalname); //Appending extension
|
||||
}
|
||||
destination: function (req, file, cb) {
|
||||
cb(null, "database_assets/styles");
|
||||
},
|
||||
filename: function (req, file, cb) {
|
||||
cb(null, file.originalname); //Appending extension
|
||||
}
|
||||
});
|
||||
|
||||
var script_storage = multer.diskStorage({
|
||||
destination: function (req, file, cb) {
|
||||
cb(null, "database_assets/scripts");
|
||||
},
|
||||
filename: function (req, file, cb) {
|
||||
cb(null, file.originalname); //Appending extension
|
||||
}
|
||||
destination: function (req, file, cb) {
|
||||
cb(null, "database_assets/scripts");
|
||||
},
|
||||
filename: function (req, file, cb) {
|
||||
cb(null, file.originalname); //Appending extension
|
||||
}
|
||||
});
|
||||
|
||||
var image_upload = multer({ storage: image_storage });
|
||||
|
@ -92,198 +92,198 @@ var style_upload = multer({ storage: style_storage });
|
|||
var script_upload = multer({ storage: script_storage });
|
||||
|
||||
const catalog_assets = sequelize.define("catalog_assets", {
|
||||
package_name: {
|
||||
type: DataTypes.TEXT,
|
||||
unique: true
|
||||
},
|
||||
title: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
description: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
author: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
image: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
tags: {
|
||||
type: DataTypes.JSON,
|
||||
allowNull: true
|
||||
},
|
||||
version: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
background_image: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true
|
||||
},
|
||||
background_video: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true
|
||||
},
|
||||
payload: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
type: {
|
||||
type: DataTypes.TEXT
|
||||
}
|
||||
package_name: {
|
||||
type: DataTypes.TEXT,
|
||||
unique: true
|
||||
},
|
||||
title: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
description: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
author: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
image: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
tags: {
|
||||
type: DataTypes.JSON,
|
||||
allowNull: true
|
||||
},
|
||||
version: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
background_image: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true
|
||||
},
|
||||
background_video: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true
|
||||
},
|
||||
payload: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
type: {
|
||||
type: DataTypes.TEXT
|
||||
}
|
||||
});
|
||||
|
||||
app.use(express.json());
|
||||
|
||||
app.get("/api", function (request, reply) {
|
||||
reply.send({ hello: "world" });
|
||||
reply.send({ hello: "world" });
|
||||
});
|
||||
|
||||
// This API returns a list of the assets in the database (SW plugins and themes).
|
||||
// It also returns the number of pages in the database.
|
||||
// It can take a `?page=x` argument to display a different page, with a limit of 20 assets per page.
|
||||
app.get("/api/catalog-assets", async (request, reply) => {
|
||||
try {
|
||||
const page = parseInt(request.query.page, 10) || 1; // default to page 1
|
||||
try {
|
||||
const page = parseInt(request.query.page, 10) || 1; // default to page 1
|
||||
|
||||
const totalItems = await catalog_assets.count();
|
||||
const totalItems = await catalog_assets.count();
|
||||
|
||||
if (page < 1) {
|
||||
reply.status(400).send({ error: "Page must be a positive number!" });
|
||||
return;
|
||||
if (page < 1) {
|
||||
reply.status(400).send({ error: "Page must be a positive number!" });
|
||||
return;
|
||||
}
|
||||
|
||||
const offset = (page - 1) * 20;
|
||||
|
||||
const db_assets = await catalog_assets.findAll({
|
||||
offset: offset,
|
||||
limit: 20
|
||||
});
|
||||
|
||||
const assets = db_assets.reduce((acc, asset) => {
|
||||
acc[asset.package_name] = {
|
||||
title: asset.title,
|
||||
description: asset.description,
|
||||
author: asset.author,
|
||||
image: asset.image,
|
||||
tags: asset.tags,
|
||||
version: asset.version,
|
||||
background_image: asset.background_image,
|
||||
background_video: asset.background_video,
|
||||
payload: asset.payload,
|
||||
type: asset.type
|
||||
};
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
reply.send({ assets, pages: Math.ceil(totalItems / 20) });
|
||||
} catch (error) {
|
||||
reply.status(500).send({ error: "There was an error" });
|
||||
}
|
||||
|
||||
const offset = (page - 1) * 20;
|
||||
|
||||
const db_assets = await catalog_assets.findAll({
|
||||
offset: offset,
|
||||
limit: 20
|
||||
});
|
||||
|
||||
const assets = db_assets.reduce((acc, asset) => {
|
||||
acc[asset.package_name] = {
|
||||
title: asset.title,
|
||||
description: asset.description,
|
||||
author: asset.author,
|
||||
image: asset.image,
|
||||
tags: asset.tags,
|
||||
version: asset.version,
|
||||
background_image: asset.background_image,
|
||||
background_video: asset.background_video,
|
||||
payload: asset.payload,
|
||||
type: asset.type
|
||||
};
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
reply.send({ assets, pages: Math.ceil(totalItems / 20) });
|
||||
} catch (error) {
|
||||
reply.status(500).send({ error: "There was an error" });
|
||||
}
|
||||
});
|
||||
|
||||
// This API returns data about a single package.
|
||||
app.get("/api/packages/:package", async (request, reply) => {
|
||||
try {
|
||||
console.log(request.params.package);
|
||||
try {
|
||||
console.log(request.params.package);
|
||||
|
||||
const package_row = await catalog_assets.findOne({
|
||||
where: { package_name: request.params.package }
|
||||
});
|
||||
const package_row = await catalog_assets.findOne({
|
||||
where: { package_name: request.params.package }
|
||||
});
|
||||
|
||||
if (!package_row) {
|
||||
return reply.status(404).send({ error: "Package not found!" });
|
||||
if (!package_row) {
|
||||
return reply.status(404).send({ error: "Package not found!" });
|
||||
}
|
||||
|
||||
const details = {
|
||||
title: package_row.get("title"),
|
||||
description: package_row.get("description"),
|
||||
image: package_row.get("image"),
|
||||
author: package_row.get("author"),
|
||||
tags: package_row.get("tags"),
|
||||
version: package_row.get("version"),
|
||||
background_image: package_row.get("background_image"),
|
||||
background_video: package_row.get("background_video"),
|
||||
payload: package_row.get("payload"),
|
||||
type: package_row.get("type")
|
||||
};
|
||||
reply.send(details);
|
||||
} catch (error) {
|
||||
reply.status(500).send({ error: "There was an error" });
|
||||
}
|
||||
|
||||
const details = {
|
||||
title: package_row.get("title"),
|
||||
description: package_row.get("description"),
|
||||
image: package_row.get("image"),
|
||||
author: package_row.get("author"),
|
||||
tags: package_row.get("tags"),
|
||||
version: package_row.get("version"),
|
||||
background_image: package_row.get("background_image"),
|
||||
background_video: package_row.get("background_video"),
|
||||
payload: package_row.get("payload"),
|
||||
type: package_row.get("type")
|
||||
};
|
||||
reply.send(details);
|
||||
} catch (error) {
|
||||
reply.status(500).send({ error: "There was an error" });
|
||||
}
|
||||
});
|
||||
|
||||
// This API is responsible for image uploads
|
||||
// PSK authentication required.
|
||||
app.post("/api/upload-image", auth_psk, image_upload.single("file"), (req, res) => {
|
||||
console.log("Request file:", req.file);
|
||||
console.log("Request file:", req.file);
|
||||
|
||||
if (!req.file) {
|
||||
return res.status(400).json({ error: "No file uploaded" });
|
||||
}
|
||||
if (!req.file) {
|
||||
return res.status(400).json({ error: "No file uploaded" });
|
||||
}
|
||||
|
||||
console.log(req.file.originalname);
|
||||
res.json({
|
||||
message: "File uploaded successfully",
|
||||
filename: req.file.originalname
|
||||
});
|
||||
console.log(req.file.originalname);
|
||||
res.json({
|
||||
message: "File uploaded successfully",
|
||||
filename: req.file.originalname
|
||||
});
|
||||
});
|
||||
|
||||
// This API is responsible for video uploads
|
||||
// PSK authentication required.
|
||||
app.post("/api/upload-video", auth_psk, video_upload.single("file"), (req, res) => {
|
||||
if (!req.file) {
|
||||
return res.status(400).json({ error: "No file uploaded" });
|
||||
}
|
||||
if (!req.file) {
|
||||
return res.status(400).json({ error: "No file uploaded" });
|
||||
}
|
||||
|
||||
res.json({
|
||||
message: "File uploaded successfully",
|
||||
filename: req.file.originalname
|
||||
});
|
||||
res.json({
|
||||
message: "File uploaded successfully",
|
||||
filename: req.file.originalname
|
||||
});
|
||||
});
|
||||
|
||||
// This API is responsible for stylesheet uploads
|
||||
// PSK authentication required.
|
||||
app.post("/api/upload-style", auth_psk, style_upload.single("file"), (req, res) => {
|
||||
if (!req.file) {
|
||||
return res.status(400).json({ error: "No file uploaded" });
|
||||
}
|
||||
if (!req.file) {
|
||||
return res.status(400).json({ error: "No file uploaded" });
|
||||
}
|
||||
|
||||
res.json({
|
||||
message: "File uploaded successfully",
|
||||
filename: req.file.originalname
|
||||
});
|
||||
res.json({
|
||||
message: "File uploaded successfully",
|
||||
filename: req.file.originalname
|
||||
});
|
||||
});
|
||||
|
||||
// This API is responsible for script/plugin uploads
|
||||
// PSK authentication required.
|
||||
app.post("/api/upload-script", auth_psk, script_upload.single("file"), (req, res) => {
|
||||
if (!req.file) {
|
||||
return res.status(400).json({ error: "No file uploaded" });
|
||||
}
|
||||
if (!req.file) {
|
||||
return res.status(400).json({ error: "No file uploaded" });
|
||||
}
|
||||
|
||||
res.json({
|
||||
message: "File uploaded successfully",
|
||||
filename: req.file.originalname
|
||||
});
|
||||
res.json({
|
||||
message: "File uploaded successfully",
|
||||
filename: req.file.originalname
|
||||
});
|
||||
});
|
||||
|
||||
// This API is responsible for creating packages in the database.
|
||||
// PSK authentication required.
|
||||
app.post("/api/create-package", auth_psk, async function (req, res) {
|
||||
console.log(req.body);
|
||||
await catalog_assets.create({
|
||||
package_name: req.body.uuid,
|
||||
title: req.body.title,
|
||||
image: req.body.image_path,
|
||||
author: req.body.author,
|
||||
version: req.body.version,
|
||||
description: req.body.description,
|
||||
tags: req.body.tags,
|
||||
payload: req.body.payload,
|
||||
background_video: req.body.background_video_path,
|
||||
background_image: req.body.background_image_path,
|
||||
type: req.body.type
|
||||
});
|
||||
res.send({ hello: "world" });
|
||||
console.log(req.body);
|
||||
await catalog_assets.create({
|
||||
package_name: req.body.uuid,
|
||||
title: req.body.title,
|
||||
image: req.body.image_path,
|
||||
author: req.body.author,
|
||||
version: req.body.version,
|
||||
description: req.body.description,
|
||||
tags: req.body.tags,
|
||||
payload: req.body.payload,
|
||||
background_video: req.body.background_video_path,
|
||||
background_image: req.body.background_image_path,
|
||||
type: req.body.type
|
||||
});
|
||||
res.send({ hello: "world" });
|
||||
});
|
||||
|
||||
app.use("/images/", express.static("./database_assets/image"));
|
||||
|
@ -323,23 +323,23 @@ catalog_assets.sync();
|
|||
const server = createServer();
|
||||
|
||||
server.on("request", (req, res) => {
|
||||
res.setHeader("Cross-Origin-Opener-Policy", "same-origin");
|
||||
res.setHeader("Cross-Origin-Embedder-Policy", "require-corp");
|
||||
if (shouldRouteRh(req)) {
|
||||
routeRhRequest(rh, req, res);
|
||||
} else {
|
||||
app(req, res);
|
||||
}
|
||||
res.setHeader("Cross-Origin-Opener-Policy", "same-origin");
|
||||
res.setHeader("Cross-Origin-Embedder-Policy", "require-corp");
|
||||
if (shouldRouteRh(req)) {
|
||||
routeRhRequest(rh, req, res);
|
||||
} else {
|
||||
app(req, res);
|
||||
}
|
||||
});
|
||||
|
||||
server.on("upgrade", (req, socket, head) => {
|
||||
if (shouldRouteRh(req)) {
|
||||
routeRhUpgrade(rh, req, socket, head);
|
||||
} else if (req.url.endsWith("/wisp/")) {
|
||||
wisp.routeRequest(req, socket, head);
|
||||
}
|
||||
if (shouldRouteRh(req)) {
|
||||
routeRhUpgrade(rh, req, socket, head);
|
||||
} else if (req.url.endsWith("/wisp/")) {
|
||||
wisp.routeRequest(req, socket, head);
|
||||
}
|
||||
});
|
||||
|
||||
server.listen({
|
||||
port: 8080
|
||||
port: 8080
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue