1.0.14
This commit is contained in:
73
server.ts
73
server.ts
@@ -26,6 +26,7 @@ dotenv.config({
|
||||
path: resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`)
|
||||
});
|
||||
|
||||
// Logger setup
|
||||
const commonTransportConfig = {
|
||||
maxSize: "20m",
|
||||
maxFiles: 14,
|
||||
@@ -42,10 +43,6 @@ const baseFormat = winston.format.combine(
|
||||
winston.format.prettyPrint()
|
||||
);
|
||||
|
||||
const consoleTransport = new winston.transports.Console({
|
||||
format: winston.format.combine(winston.format.colorize(), winston.format.timestamp(), winston.format.simple())
|
||||
});
|
||||
|
||||
export const logger = winston.createLogger({
|
||||
format: baseFormat,
|
||||
level: "http",
|
||||
@@ -54,15 +51,13 @@ export const logger = winston.createLogger({
|
||||
new DailyRotateFile({
|
||||
filename: path.join(FolderPaths.Root, "logs", "exceptions-%DATE%.log"),
|
||||
...commonTransportConfig
|
||||
}),
|
||||
consoleTransport
|
||||
})
|
||||
],
|
||||
rejectionHandlers: [
|
||||
new DailyRotateFile({
|
||||
filename: path.join(FolderPaths.Root, "logs", "rejections-%DATE%.log"),
|
||||
...commonTransportConfig
|
||||
}),
|
||||
consoleTransport
|
||||
})
|
||||
],
|
||||
transports: [
|
||||
new DailyRotateFile({
|
||||
@@ -78,55 +73,48 @@ export const logger = winston.createLogger({
|
||||
new DailyRotateFile({
|
||||
filename: path.join(FolderPaths.Root, "logs", "ALL-%DATE%.log"),
|
||||
...commonTransportConfig
|
||||
}),
|
||||
new winston.transports.Console({
|
||||
format: winston.format.combine(winston.format.colorize(), winston.format.timestamp(), winston.format.simple())
|
||||
})
|
||||
]
|
||||
});
|
||||
|
||||
logger.add(
|
||||
new winston.transports.Console({
|
||||
format: winston.format.combine(winston.format.colorize(), winston.format.timestamp(), winston.format.simple())
|
||||
})
|
||||
);
|
||||
|
||||
// App init
|
||||
const app: Express = express();
|
||||
const port = process.env.PORT;
|
||||
app.disable("x-powered-by");
|
||||
app.set("trust proxy", 1);
|
||||
|
||||
// Middleware order: security, logging, parsing, etc.
|
||||
app.set("etag", false);
|
||||
app.use(helmet({ crossOriginResourcePolicy: { policy: "cross-origin" } }));
|
||||
app.use(nocache());
|
||||
app.use(cors());
|
||||
app.use(compression());
|
||||
app.use(responseTime());
|
||||
|
||||
app.use(bodyParser.json({ limit: "1000mb" }));
|
||||
app.use(bodyParser.urlencoded({ limit: "1000mb", extended: true }));
|
||||
|
||||
app.use((req, res, next) => {
|
||||
res.setHeader("Connection", "keep-alive");
|
||||
next();
|
||||
});
|
||||
app.use(nocache());
|
||||
app.use(bodyParser.json({ limit: "1000mb" }));
|
||||
app.use(bodyParser.urlencoded({ limit: "1000mb", extended: true }));
|
||||
app.use(responseTime());
|
||||
app.use(cors());
|
||||
|
||||
const morganMiddleware = morgan(
|
||||
"combined", //":method :url :status :res[content-length] - :response-time ms"
|
||||
{
|
||||
stream: {
|
||||
write: (message) => logger.http(message.trim())
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const morganMiddleware = morgan("combined", {
|
||||
stream: { write: (message) => logger.http(message.trim()) }
|
||||
});
|
||||
app.use(morganMiddleware);
|
||||
app.use(helmet({ crossOriginResourcePolicy: { policy: "cross-origin" } }));
|
||||
|
||||
// Job endpoints
|
||||
app.post("/jobs/list", ValidateImsToken, validateJobRequest, JobsListMedia);
|
||||
app.post("/jobs/upload", ValidateImsToken, JobMediaUploadMulter.array("file"), validateJobRequest, jobsUploadMedia);
|
||||
app.post("/jobs/download", ValidateImsToken, validateJobRequest, jobsDownloadMedia);
|
||||
app.post(
|
||||
"/jobs/move", //JobRequestValidator,
|
||||
ValidateImsToken,
|
||||
JobsMoveMedia
|
||||
);
|
||||
app.post(
|
||||
"/jobs/delete", //JobRequestValidator,
|
||||
ValidateImsToken,
|
||||
JobsDeleteMedia
|
||||
);
|
||||
app.post("/jobs/move", ValidateImsToken, JobsMoveMedia);
|
||||
app.post("/jobs/delete", ValidateImsToken, JobsDeleteMedia);
|
||||
|
||||
// Bill endpoints
|
||||
app.post("/bills/list", BillRequestValidator, BillsListMedia);
|
||||
app.post(
|
||||
"/bills/upload",
|
||||
@@ -136,16 +124,19 @@ app.post(
|
||||
BillsUploadMedia
|
||||
);
|
||||
|
||||
app.get("/", ValidateImsToken, (req: express.Request, res: express.Response) => {
|
||||
// Health and root
|
||||
app.get("/", ValidateImsToken, (req, res) => {
|
||||
res.send("IMS running.");
|
||||
});
|
||||
app.get("/health", (req: express.Request, res: express.Response) => {
|
||||
app.get("/health", (req, res) => {
|
||||
res.status(200).send("OK");
|
||||
});
|
||||
|
||||
// Static files
|
||||
InitServer();
|
||||
app.use(FolderPaths.StaticPath, express.static(FolderPaths.Root, { etag: false, maxAge: 30 * 1000 }));
|
||||
app.use("/assets", express.static("./assets", { etag: false, maxAge: 30 * 1000 }));
|
||||
|
||||
app.listen(port, () => {
|
||||
logger.info(`ImEX Media Server is running at http://localhost:${port}`);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user