mirror of
https://github.com/NebulaServices/Nebula.git
synced 2025-05-15 12:40:00 -04:00
add authentication
This commit is contained in:
parent
948611f434
commit
e78eb63e4e
4 changed files with 50 additions and 15 deletions
5
config.json
Normal file
5
config.json
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"marketplace_enabled": false,
|
||||||
|
"marketplace_psk": "CHANGE_THIS_THIS_IS_INSECURE",
|
||||||
|
"marketplace_level": "1"
|
||||||
|
}
|
49
server.js
49
server.js
|
@ -6,6 +6,7 @@ import { Sequelize, DataTypes } from "sequelize";
|
||||||
import { fileURLToPath } from "url";
|
import { fileURLToPath } from "url";
|
||||||
import { handler as ssrHandler } from "./dist/server/entry.mjs";
|
import { handler as ssrHandler } from "./dist/server/entry.mjs";
|
||||||
import multer from "multer";
|
import multer from "multer";
|
||||||
|
import config from "./config.json" assert { type: "json" };
|
||||||
|
|
||||||
const __filename = fileURLToPath(import.meta.url);
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
const __dirname = path.dirname(__filename);
|
const __dirname = path.dirname(__filename);
|
||||||
|
@ -19,7 +20,22 @@ const sequelize = new Sequelize("database", "user", "password", {
|
||||||
storage: "database.sqlite",
|
storage: "database.sqlite",
|
||||||
});
|
});
|
||||||
|
|
||||||
var storage = multer.diskStorage({
|
// Auth middleware
|
||||||
|
function auth_psk(req, res, next) {
|
||||||
|
if (!config.marketplace_enabled) {
|
||||||
|
let err = "Marketplace is disabled!";
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.headers.psk !== config.marketplace_psk) {
|
||||||
|
let err = "Bad PSK!";
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
|
var image_storage = multer.diskStorage({
|
||||||
destination: function (req, file, cb) {
|
destination: function (req, file, cb) {
|
||||||
cb(null, "database_assets/image");
|
cb(null, "database_assets/image");
|
||||||
},
|
},
|
||||||
|
@ -28,7 +44,7 @@ var storage = multer.diskStorage({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
var upload = multer({ storage: storage });
|
var image_upload = multer({ storage: image_storage });
|
||||||
|
|
||||||
const catalog_assets = sequelize.define("catalog_assets", {
|
const catalog_assets = sequelize.define("catalog_assets", {
|
||||||
package_name: {
|
package_name: {
|
||||||
|
@ -149,20 +165,25 @@ app.get("/api/packages/:package", async (request, reply) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// This API is responsible for image uploads
|
// This API is responsible for image uploads
|
||||||
// PSK authentication required. (NOT YET IMPLEMENTED!!!!!!!!!!)
|
// PSK authentication required.
|
||||||
app.post("/upload", upload.single("file"), (req, res) => {
|
app.post(
|
||||||
console.log("Request file:", req.file);
|
"/api/upload-image",
|
||||||
|
auth_psk,
|
||||||
|
image_upload.single("file"),
|
||||||
|
(req, res) => {
|
||||||
|
console.log("Request file:", req.file);
|
||||||
|
|
||||||
if (!req.file) {
|
if (!req.file) {
|
||||||
return res.status(400).json({ error: "No file uploaded" });
|
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,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
app.use("/images/", express.static("./database_assets/image"));
|
app.use("/images/", express.static("./database_assets/image"));
|
||||||
app.use("/videos/", express.static("./database_assets/video"));
|
app.use("/videos/", express.static("./database_assets/video"));
|
||||||
|
|
|
@ -1,10 +1,19 @@
|
||||||
// This is a test file to upload files to the Nebula server
|
// This is a test file to upload files to the Nebula server
|
||||||
import { FormData, File } from "formdata-node";
|
import { FormData, File } from "formdata-node";
|
||||||
import { fileFromPath } from "formdata-node/file-from-path";
|
import { fileFromPath } from "formdata-node/file-from-path";
|
||||||
|
import config from "./config.json" assert { type: "json" };
|
||||||
|
|
||||||
const form = new FormData();
|
const form = new FormData();
|
||||||
// const file = new File(["My hovercraft is full of eels"], "example.txt");
|
// const file = new File(["My hovercraft is full of eels"], "example.txt");
|
||||||
|
|
||||||
form.set("file", await fileFromPath("asgard.png"));
|
form.set("file", await fileFromPath("asgard.png"));
|
||||||
|
|
||||||
await fetch("http://localhost:8080/upload", { method: "post", body: form });
|
console.log(config.marketplace_psk);
|
||||||
|
|
||||||
|
await fetch("http://localhost:8080/api/upload-image", {
|
||||||
|
headers: {
|
||||||
|
PSK: config.marketplace_psk,
|
||||||
|
},
|
||||||
|
method: "post",
|
||||||
|
body: form,
|
||||||
|
});
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 206 KiB |
Loading…
Add table
Add a link
Reference in a new issue