✨ icons + banners route
This commit is contained in:
		
							parent
							
								
									a6eac74236
								
							
						
					
					
						commit
						ede8ed4b71
					
				
							
								
								
									
										1955
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1955
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -29,6 +29,7 @@ | ||||
| 		"express": "^4.17.1", | ||||
| 		"express-async-errors": "^3.1.1", | ||||
| 		"file-type": "^16.5.0", | ||||
| 		"fs-extra": "^10.0.0", | ||||
| 		"image-size": "^1.0.0", | ||||
| 		"lambert-db": "^1.2.3", | ||||
| 		"lambert-server": "^1.2.8", | ||||
| @ -42,6 +43,7 @@ | ||||
| 		"@types/btoa": "^1.2.3", | ||||
| 		"@types/dotenv": "^8.2.0", | ||||
| 		"@types/express": "^4.17.12", | ||||
| 		"@types/fs-extra": "^9.0.12", | ||||
| 		"@types/multer": "^1.4.7", | ||||
| 		"@types/node": "^14.17.0", | ||||
| 		"@types/node-fetch": "^2.5.7", | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| import { Server, ServerOptions } from "lambert-server"; | ||||
| import { Config, db } from "@fosscord/server-util"; | ||||
| import path from "path"; | ||||
| import multerConfig from "multer"; | ||||
| import avatarsRoute from "./routes/avatars"; | ||||
| 
 | ||||
| export interface CDNServerOptions extends ServerOptions {} | ||||
| 
 | ||||
| @ -20,6 +20,10 @@ export class CDNServer extends Server { | ||||
| 		console.log("[Database] connected"); | ||||
| 
 | ||||
| 		await this.registerRoutes(path.join(__dirname, "routes/")); | ||||
| 		this.app.use("/icons/", avatarsRoute); | ||||
| 		this.log("info", "[Server] Route /icons registered"); | ||||
| 		this.app.use("/banners/", avatarsRoute); | ||||
| 		this.log("info", "[Server] Route /banners registered"); | ||||
| 		return super.start(); | ||||
| 	} | ||||
| 
 | ||||
| @ -27,12 +31,3 @@ export class CDNServer extends Server { | ||||
| 		return super.stop(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| export const multer = multerConfig({ | ||||
| 	storage: multerConfig.memoryStorage(), | ||||
| 	limits: { | ||||
| 		fields: 10, | ||||
| 		files: 10, | ||||
| 		fileSize: 1024 * 1024 * 100, // 100 mb
 | ||||
| 	}, | ||||
| }); | ||||
|  | ||||
| @ -3,7 +3,7 @@ import { Config, Snowflake } from "@fosscord/server-util"; | ||||
| import { storage } from "../util/Storage"; | ||||
| import FileType from "file-type"; | ||||
| import { HTTPError } from "lambert-server"; | ||||
| import { multer } from "../Server"; | ||||
| import { multer } from "../util/multer"; | ||||
| import imageSize from "image-size"; | ||||
| 
 | ||||
| const router = Router(); | ||||
|  | ||||
| @ -3,7 +3,7 @@ import { Config, Snowflake } from "@fosscord/server-util"; | ||||
| import { storage } from "../util/Storage"; | ||||
| import FileType from "file-type"; | ||||
| import { HTTPError } from "lambert-server"; | ||||
| import { multer } from "../Server"; | ||||
| import { multer } from "../util/multer"; | ||||
| import crypto from "crypto"; | ||||
| 
 | ||||
| // TODO: check premium and animated pfp are allowed in the config
 | ||||
| @ -13,7 +13,7 @@ import crypto from "crypto"; | ||||
| // TODO: check request signature for modify methods
 | ||||
| 
 | ||||
| const ANIMATED_MIME_TYPES = ["image/apng", "image/gif", "image/gifv"]; | ||||
| const STATIC_MIME_TYPES = ["image/png", "image/jpeg", "image/webp"]; | ||||
| const STATIC_MIME_TYPES = ["image/png", "image/jpeg", "image/webp", "image/svg+xml", "image/svg"]; | ||||
| const ALLOWED_MIME_TYPES = [...ANIMATED_MIME_TYPES, ...STATIC_MIME_TYPES]; | ||||
| 
 | ||||
| const router = Router(); | ||||
| @ -38,7 +38,7 @@ router.post("/:user_id", multer.single("file"), async (req: Request, res: Respon | ||||
| 		id, | ||||
| 		content_type: type.mime, | ||||
| 		size, | ||||
| 		url: `${endpoint}/path`, | ||||
| 		url: `${endpoint}${req.baseUrl}/${user_id}/${id}`, | ||||
| 	}); | ||||
| }); | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										22
									
								
								src/start.ts
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								src/start.ts
									
									
									
									
									
								
							| @ -1,17 +1,23 @@ | ||||
| import path from "path"; | ||||
| import dotenv from "dotenv"; | ||||
| import fse from "fs-extra"; | ||||
| dotenv.config(); | ||||
| 
 | ||||
| import { CDNServer } from "./Server"; | ||||
| 
 | ||||
| if (process.env.STORAGE_LOCATION) { | ||||
| 	if (!process.env.STORAGE_LOCATION.startsWith("/")) { | ||||
| 		process.env.STORAGE_LOCATION = __dirname + "/../" + process.env.STORAGE_LOCATION; | ||||
| if (!process.env.STORAGE_PROVIDER) process.env.STORAGE_PROVIDER = "file"; | ||||
| // TODO:nodejs path.join trailing slash windows compatible
 | ||||
| if (process.env.STORAGE_PROVIDER === "file") { | ||||
| 	if (process.env.STORAGE_LOCATION) { | ||||
| 		if (!process.env.STORAGE_LOCATION.startsWith("/")) { | ||||
| 			process.env.STORAGE_LOCATION = path.join(__dirname, "..", process.env.STORAGE_LOCATION, "/"); | ||||
| 		} | ||||
| 	} else { | ||||
| 		process.env.STORAGE_LOCATION = path.join(__dirname, "..", "files", "/"); | ||||
| 	} | ||||
| } else { | ||||
| 	process.env.STORAGE_LOCATION = __dirname + "/../files/"; | ||||
| 	process.env.STORAGE_PROVIDER = "file"; | ||||
| 	fse.ensureDirSync(process.env.STORAGE_LOCATION); | ||||
| } | ||||
| 
 | ||||
| import { CDNServer } from "./Server"; | ||||
| 
 | ||||
| const server = new CDNServer({ port: Number(process.env.PORT) || 3003 }); | ||||
| server | ||||
| 	.start() | ||||
|  | ||||
							
								
								
									
										10
									
								
								src/util/multer.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/util/multer.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| import multerConfig from "multer"; | ||||
| 
 | ||||
| export const multer = multerConfig({ | ||||
| 	storage: multerConfig.memoryStorage(), | ||||
| 	limits: { | ||||
| 		fields: 10, | ||||
| 		files: 10, | ||||
| 		fileSize: 1024 * 1024 * 100, // 100 mb
 | ||||
| 	}, | ||||
| }); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Flam3rboy
						Flam3rboy