Slave/upload api #5
+5
-2
@@ -18,7 +18,6 @@ NODE_ENV=development
|
|||||||
|
|
||||||
CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
|
CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
|
||||||
|
|
||||||
MAX_IMAGES_PER_UPLOAD=10
|
|
||||||
MULTER_MAX_FILE_BYTES=10485760
|
MULTER_MAX_FILE_BYTES=10485760
|
||||||
|
|
||||||
ALTCHA_ENABLED=true
|
ALTCHA_ENABLED=true
|
||||||
@@ -32,7 +31,11 @@ THROTTLE_LIMIT=1000
|
|||||||
THROTTLE_UPLOAD_TTL_MS=60000
|
THROTTLE_UPLOAD_TTL_MS=60000
|
||||||
THROTTLE_UPLOAD_LIMIT=20
|
THROTTLE_UPLOAD_LIMIT=20
|
||||||
|
|
||||||
|
VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD=10
|
||||||
|
VALIDATION_UPLOAD_MAX_VIEWS_MAX=1000000
|
||||||
|
|
||||||
VITE_API_BASE_URL=http://localhost:3000/api
|
VITE_API_BASE_URL=http://localhost:3000/api
|
||||||
VITE_CLEARNET_DOMAIN=localhost:5173
|
VITE_CLEARNET_DOMAIN=localhost:5173
|
||||||
VITE_ONION_HOSTNAME=
|
VITE_ONION_HOSTNAME=
|
||||||
VITE_MAX_IMAGES_PER_UPLOAD=10
|
VITE_VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD=10
|
||||||
|
VITE_VALIDATION_UPLOAD_MAX_VIEWS_MAX=1000000
|
||||||
|
|||||||
@@ -49,6 +49,10 @@ export const getAppConfig = (): AppConfig => {
|
|||||||
uploadThrottle: {
|
uploadThrottle: {
|
||||||
ttlMs: envInt('THROTTLE_UPLOAD_TTL_MS'),
|
ttlMs: envInt('THROTTLE_UPLOAD_TTL_MS'),
|
||||||
limit: envInt('THROTTLE_UPLOAD_LIMIT')
|
limit: envInt('THROTTLE_UPLOAD_LIMIT')
|
||||||
|
},
|
||||||
|
validation: {
|
||||||
|
maxImagesPerUpload: envInt('VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD'),
|
||||||
|
uploadMaxViewsMax: envInt('VALIDATION_UPLOAD_MAX_VIEWS_MAX')
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ const validConfig = (overrides: Record<string, unknown> = {}): Record<string, un
|
|||||||
POSTGRES_PORT: 5432,
|
POSTGRES_PORT: 5432,
|
||||||
POSTGRES_MIGRATIONS_RUN: 'false',
|
POSTGRES_MIGRATIONS_RUN: 'false',
|
||||||
CORS_ORIGINS: 'http://localhost:5173',
|
CORS_ORIGINS: 'http://localhost:5173',
|
||||||
MAX_IMAGES_PER_UPLOAD: 10,
|
VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD: 10,
|
||||||
MULTER_MAX_FILE_BYTES: 10485760,
|
MULTER_MAX_FILE_BYTES: 10485760,
|
||||||
ALTCHA_ENABLED: 'true',
|
ALTCHA_ENABLED: 'true',
|
||||||
ALTCHA_HMAC_KEY: 'secret',
|
ALTCHA_HMAC_KEY: 'secret',
|
||||||
@@ -21,6 +21,7 @@ const validConfig = (overrides: Record<string, unknown> = {}): Record<string, un
|
|||||||
THROTTLE_LIMIT: 1000,
|
THROTTLE_LIMIT: 1000,
|
||||||
THROTTLE_UPLOAD_TTL_MS: 60000,
|
THROTTLE_UPLOAD_TTL_MS: 60000,
|
||||||
THROTTLE_UPLOAD_LIMIT: 20,
|
THROTTLE_UPLOAD_LIMIT: 20,
|
||||||
|
VALIDATION_UPLOAD_MAX_VIEWS_MAX: 1_000_000,
|
||||||
...overrides
|
...overrides
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -45,12 +45,6 @@ class EnvironmentVariables {
|
|||||||
@IsString()
|
@IsString()
|
||||||
CORS_ORIGINS: string;
|
CORS_ORIGINS: string;
|
||||||
|
|
||||||
@IsNotEmpty()
|
|
||||||
@IsNumber()
|
|
||||||
@Min(1)
|
|
||||||
@Max(100)
|
|
||||||
MAX_IMAGES_PER_UPLOAD: number;
|
|
||||||
|
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
@IsNumber()
|
@IsNumber()
|
||||||
@Min(1)
|
@Min(1)
|
||||||
@@ -100,6 +94,18 @@ class EnvironmentVariables {
|
|||||||
@Min(1)
|
@Min(1)
|
||||||
@Max(10_000)
|
@Max(10_000)
|
||||||
THROTTLE_UPLOAD_LIMIT: number;
|
THROTTLE_UPLOAD_LIMIT: number;
|
||||||
|
|
||||||
|
@IsNotEmpty()
|
||||||
|
@IsNumber()
|
||||||
|
@Min(1)
|
||||||
|
@Max(100)
|
||||||
|
VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD: number;
|
||||||
|
|
||||||
|
@IsNotEmpty()
|
||||||
|
@IsNumber()
|
||||||
|
@Min(1)
|
||||||
|
@Max(10_000_000)
|
||||||
|
VALIDATION_UPLOAD_MAX_VIEWS_MAX: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const validate = (config: Record<string, unknown>) => {
|
export const validate = (config: Record<string, unknown>) => {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { NodeEnv } from './NodeEnv';
|
import { NodeEnv } from './NodeEnv';
|
||||||
import { ThrottleConfig } from './ThrottleConfig';
|
import { ThrottleConfig } from './ThrottleConfig';
|
||||||
|
import { ValidationConfig } from './ValidationConfig';
|
||||||
|
|
||||||
export type AppConfig = {
|
export type AppConfig = {
|
||||||
port: number;
|
port: number;
|
||||||
@@ -7,4 +8,5 @@ export type AppConfig = {
|
|||||||
corsOrigins: string[];
|
corsOrigins: string[];
|
||||||
throttle: ThrottleConfig;
|
throttle: ThrottleConfig;
|
||||||
uploadThrottle: ThrottleConfig;
|
uploadThrottle: ThrottleConfig;
|
||||||
|
validation: ValidationConfig;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
export type ValidationConfig = {
|
||||||
|
maxImagesPerUpload: number;
|
||||||
|
uploadMaxViewsMax: number;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user