Hirevo / alexandrie

An alternative crate registry, implemented in Rust.
https://hirevo.github.io/alexandrie/
Apache License 2.0
493 stars 55 forks source link

Configurable maximum crate size #153

Closed Hirevo closed 1 year ago

Hirevo commented 1 year ago

This PR introduces a new max_crate_size (under [general]) configuration option to control the maximum allowed crate size upon publication.

This configuration option can be expressed as either a single number (in bytes) or as a string with a specific file size unit.
It is also possible to omit this field to disable any file size limits.

This configuration option only applies to crate tarball sizes, it doesn't apply this size limit to any other request payloads in the API.
Therefore, it is still recommended to run Alexandrie behind a reverse proxy server and set it to limit the size for all incoming HTTP request body.

Here are some examples of accepted values:

# 20 megabytes can be set using either:
max_crate_size = 20_000_000
# or:
max_crate_size = "20 MB"
# 50 mibibytes can be set using either:
max_crate_size = 52_428_800
# or:
max_crate_size = "50 MiB"
# 1 gigabyte can be set using either:
max_crate_size = 1_000_000_000
# or:
max_crate_size = "1 GB"

Closes #98. Closes #151.