Skip to content

Commit

Permalink
fix: create env vars to config for the rate limit
Browse files Browse the repository at this point in the history
  • Loading branch information
bjarneo committed Jan 28, 2024
1 parent 5985bac commit 188715f
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 25 deletions.
48 changes: 25 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,29 +119,31 @@ npx hemmelig --help

## Environment variables

| ENV vars | Description | Default |
| ------------------------------|:---------------------------------------------------------------------:| --------------------:|
| `SECRET_LOCAL_HOSTNAME` | The local hostname for the fastify instance | 0.0.0.0 |
| `SECRET_PORT` | The port number for the fastify instance | 3000 |
| `SECRET_HOST` | Used for i.e. set cors/cookies to your domain name | "" |
| `SECRET_MAX_TEXT_SIZE` | The max text size for the secret. Is set in kb. i.e. 256 for 256kb. | 256 |
| `SECRET_JWT_SECRET` | Override this for the secret signin JWT tokens for log in | good_luck_have_fun |
| `SECRET_ROOT_USER` | Override this for the root account username | groot |
| `SECRET_ROOT_PASSWORD` | This is the root password, override it with your own password | iamgroot |
| `SECRET_ROOT_EMAIL` | This is the root email, override it with your own email | [email protected] |
| `SECRET_FILE_SIZE` | Set the total allowed upload file size in mb. | 4 |
| `SECRET_FORCED_LANGUAGE` | Set the default language for the application. | en |
| `SECRET_UPLOAD_RESTRICTION` | Set the restriction for uploads to signed in users | "true" |
| `SECRET_DO_SPACES_ENDPOINT` | The Digital Ocean Spaces/AWS s3 endpoint | "" |
| `SECRET_DO_SPACES_KEY` | The Digital Ocean Spaces/AWS s3 key | "" |
| `SECRET_DO_SPACES_SECRET` | The Digital Ocean Spaces/AWS s3 secret | "" |
| `SECRET_DO_SPACES_BUCKET` | The Digital Ocean Spaces/AWS s3 bucket name | "" |
| `SECRET_DO_SPACES_FOLDER` | The Digital Ocean Spaces/AWS s3 folder for the uploaded files | "" |
| `SECRET_AWS_S3_REGION` | The Digital AWS s3 region | "" |
| `SECRET_AWS_S3_KEY` | The Digital AWS s3 key | "" |
| `SECRET_AWS_S3_SECRET` | The Digital AWS s3 secret | "" |
| `SECRET_AWS_S3_BUCKET` | The Digital AWS s3 bucket name | "" |
| `SECRET_AWS_S3_FOLDER` | The Digital AWS s3 folder for the uploaded files | "" |
| ENV vars | Description | Default |
| --------------------------------|:---------------------------------------------------------------------:| --------------------:|
| `SECRET_LOCAL_HOSTNAME` | The local hostname for the fastify instance | 0.0.0.0 |
| `SECRET_PORT` | The port number for the fastify instance | 3000 |
| `SECRET_HOST` | Used for i.e. set cors/cookies to your domain name | "" |
| `SECRET_MAX_TEXT_SIZE` | The max text size for the secret. Is set in kb. i.e. 256 for 256kb. | 256 |
| `SECRET_JWT_SECRET` | Override this for the secret signin JWT tokens for log in | good_luck_have_fun |
| `SECRET_ROOT_USER` | Override this for the root account username | groot |
| `SECRET_ROOT_PASSWORD` | This is the root password, override it with your own password | iamgroot |
| `SECRET_ROOT_EMAIL` | This is the root email, override it with your own email | [email protected] |
| `SECRET_FILE_SIZE` | Set the total allowed upload file size in mb. | 4 |
| `SECRET_FORCED_LANGUAGE` | Set the default language for the application. | en |
| `SECRET_UPLOAD_RESTRICTION` | Set the restriction for uploads to signed in users | "true" |
| `SECRET_RATE_LIMIT_MAX` | The maximum allowed requests each time frame | 1000 |
| `SECRET_RATE_LIMIT_TIME_WINDOW` | The time window for the requests before being rate limited in seconds | 60 |
| `SECRET_DO_SPACES_ENDPOINT` | The Digital Ocean Spaces/AWS s3 endpoint | "" |
| `SECRET_DO_SPACES_KEY` | The Digital Ocean Spaces/AWS s3 key | "" |
| `SECRET_DO_SPACES_SECRET` | The Digital Ocean Spaces/AWS s3 secret | "" |
| `SECRET_DO_SPACES_BUCKET` | The Digital Ocean Spaces/AWS s3 bucket name | "" |
| `SECRET_DO_SPACES_FOLDER` | The Digital Ocean Spaces/AWS s3 folder for the uploaded files | "" |
| `SECRET_AWS_S3_REGION` | The Digital AWS s3 region | "" |
| `SECRET_AWS_S3_KEY` | The Digital AWS s3 key | "" |
| `SECRET_AWS_S3_SECRET` | The Digital AWS s3 secret | "" |
| `SECRET_AWS_S3_BUCKET` | The Digital AWS s3 bucket name | "" |
| `SECRET_AWS_S3_FOLDER` | The Digital AWS s3 folder for the uploaded files | "" |

## Supported languages

Expand Down
6 changes: 6 additions & 0 deletions config/default.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ const {
SECRET_AWS_S3_FOLDER = '',
SECRET_MAX_TEXT_SIZE = 256, // 256 kb
SECRET_UPLOAD_RESTRICTION = 'true', // true = only allow uploads from signed in users
SECRET_RATE_LIMIT_MAX = 1000,
SECRET_RATE_LIMIT_TIME_WINDOW = 60,
NODE_ENV = 'development',
} = process.env;

Expand All @@ -31,6 +33,10 @@ const config = {
port: SECRET_PORT,
secret_key: SECRET_MASTER_KEY,
upload_restriction: JSON.parse(SECRET_UPLOAD_RESTRICTION),
rateLimit: {
max: Number(SECRET_RATE_LIMIT_MAX),
timeWindow: Number(SECRET_RATE_LIMIT_TIME_WINDOW) * 1000,
},
// root account management
account: {
root: {
Expand Down
4 changes: 2 additions & 2 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ const fastify = importFastify({

fastify.register(rateLimit, {
prefix: '/api/',
max: 1000, // x requests
timeWindow: 60 * 1000, // 1 minute
max: config.get('rateLimit.max'),
timeWindow: config.get('rateLimit.timeWindow'),
});

// https://github.com/fastify/fastify-helmet
Expand Down

0 comments on commit 188715f

Please sign in to comment.