2023-05-19 15:22:48 -03:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								import express from "express";
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-01-05 02:44:01 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								import bodyParser from "body-parser";
							 | 
						
					
						
							
								
									
										
										
										
											2025-08-25 13:37:14 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								import { unknownEndpointHandler } from "./middleware/middleware.ts";
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								import { requestLogger } from "./middleware/morgenMiddleware.ts";
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								import { errorHandler } from "./middleware/errorHandler.ts";
							 | 
						
					
						
							
								
									
										
										
										
											2023-05-19 15:22:48 -03:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-08-25 13:37:14 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								import { apiRouter } from "./routes/api.ts";
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								import { cacheRouter } from "./routes/cache.ts";
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								import { customRouter } from "./routes/custom.ts";
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								import { dynamicController } from "./routes/dynamic.ts";
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								import { payRouter } from "./routes/pay.ts";
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								import { statsRouter } from "./routes/stats.ts";
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								import { webuiRouter } from "./routes/webui.ts";
							 | 
						
					
						
							
								
									
										
										
										
											2023-05-19 15:22:48 -03:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								const app = express();
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-03-19 20:38:14 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								app.use((req, _res, next) => {
							 | 
						
					
						
							
								
									
										
										
										
											2025-04-12 18:53:35 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    // 38.5.0 introduced "ezip" for encrypted body blobs and "e" for request verification only (encrypted body blobs with no application data).
							 | 
						
					
						
							
								
									
										
										
										
											2025-03-19 20:38:14 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    // The bootstrapper decrypts it for us but having an unsupported Content-Encoding here would still be an issue for Express, so removing it.
							 | 
						
					
						
							
								
									
										
										
										
											2025-04-12 18:53:35 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    if (req.headers["content-encoding"] == "ezip" || req.headers["content-encoding"] == "e") {
							 | 
						
					
						
							
								
									
										
										
										
											2025-03-19 20:38:14 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        req.headers["content-encoding"] = undefined;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    }
							 | 
						
					
						
							
								
									
										
										
										
											2025-05-05 04:57:44 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    // U18 uses application/x-www-form-urlencoded even tho the data is JSON which Express doesn't like.
							 | 
						
					
						
							
								
									
										
										
										
											2025-05-05 18:09:03 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    // U17 sets no Content-Type at all, which Express also doesn't like.
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    if (!req.headers["content-type"] || req.headers["content-type"] == "application/x-www-form-urlencoded") {
							 | 
						
					
						
							
								
									
										
										
										
											2025-05-05 04:57:44 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        req.headers["content-type"] = "application/octet-stream";
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-03-19 20:38:14 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    next();
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								});
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2023-05-19 15:22:48 -03:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								app.use(bodyParser.raw());
							 | 
						
					
						
							
								
									
										
										
										
											2025-01-24 16:12:39 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								app.use(express.json({ limit: "4mb" }));
							 | 
						
					
						
							
								
									
										
										
										
											2025-04-22 10:00:10 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								app.use(bodyParser.text({ limit: "4mb" }));
							 | 
						
					
						
							
								
									
										
										
										
											2024-01-06 16:26:58 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								app.use(requestLogger);
							 | 
						
					
						
							
								
									
										
										
										
											2023-05-19 15:22:48 -03:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								app.use("/api", apiRouter);
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								app.use("/", cacheRouter);
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								app.use("/custom", customRouter);
							 | 
						
					
						
							
								
									
										
										
										
											2025-03-21 05:19:53 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								app.use("/dynamic", dynamicController);
							 | 
						
					
						
							
								
									
										
										
										
											2023-05-19 15:22:48 -03:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								app.use("/:id/dynamic", dynamicController);
							 | 
						
					
						
							
								
									
										
										
										
											2025-01-05 02:44:01 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								app.use("/pay", payRouter);
							 | 
						
					
						
							
								
									
										
										
										
											2023-06-01 17:52:59 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								app.use("/stats", statsRouter);
							 | 
						
					
						
							
								
									
										
										
										
											2024-05-04 14:44:23 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								app.use("/", webuiRouter);
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2023-05-19 15:22:48 -03:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								app.use(unknownEndpointHandler);
							 | 
						
					
						
							
								
									
										
										
										
											2025-01-03 22:46:14 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								app.use(errorHandler);
							 | 
						
					
						
							
								
									
										
										
										
											2023-05-19 15:22:48 -03:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								export { app };
							 |