51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { Router } from "express";
|
|
import { Machine } from "external/db/entity/allnet";
|
|
import CreateLogCtx from "lib/logger/logger";
|
|
import { Config } from "lib/setup/config";
|
|
import {
|
|
DownloadOrderRequestSchema,
|
|
DownloadOrderStatus,
|
|
} from "servers/allnet/types/download-order";
|
|
import { fromZodError } from "zod-validation-error";
|
|
import type { DownloadOrderResponse } from "servers/allnet/types/download-order";
|
|
|
|
const logger = CreateLogCtx(__filename);
|
|
|
|
const router: Router = Router({ mergeParams: true });
|
|
|
|
router.post("/", async (req, res) => {
|
|
const parseResult = DownloadOrderRequestSchema.safeParse(req.safeBody);
|
|
|
|
if (!parseResult.success) {
|
|
logger.error("Received invalid download order request.", {
|
|
error: fromZodError(parseResult.error).message,
|
|
body: req.safeBody,
|
|
});
|
|
return res.status(403).send("");
|
|
}
|
|
|
|
const data = parseResult.data;
|
|
|
|
if (!Config.ALLNET_CONFIG.ALLOW_UNREGISTERED_SERIALS) {
|
|
const machine = await Machine.findOne({
|
|
where: {
|
|
serial: data.serial,
|
|
},
|
|
});
|
|
|
|
if (!machine) {
|
|
logger.error("Rejected download order request from unknown serial.", { data });
|
|
return res.status(200).send({ stat: 1, serial: "", uri: "null" });
|
|
}
|
|
}
|
|
|
|
// TODO: Allow network delivery.
|
|
const response = {
|
|
stat: DownloadOrderStatus.FAILURE,
|
|
} satisfies DownloadOrderResponse;
|
|
|
|
return res.status(200).send(response);
|
|
});
|
|
|
|
export default router;
|