aboutsummaryrefslogtreecommitdiff
path: root/README.md
Commit message (Collapse)AuthorAgeFilesLines
* README.md: Add packages for Alpine LinuxXavier Del Campo Romero2026-02-131-0/+18
|
* README.md: Fix wrong package nameXavier Del Campo Romero2026-02-131-1/+1
|
* README.md: Replace OpenSSL with libsodiumXavier Del Campo Romero2025-10-111-2/+2
| | | | | | | | | | This was a leftover from the following commit: commit 10e42591ac72285736d5cc4ee5e7c2f68dbf1e4b Author: Xavier Del Campo Romero Date: Wed Oct 8 13:50:52 2025 +0200 Replace OpenSSL with libsodium and argon2id
* README.md: Add build instructions for thumbnailXavier Del Campo Romero2025-10-091-0/+14
|
* README.md: Update copyright noticeXavier Del Campo Romero2025-10-091-1/+1
|
* Allow building thumbnail from the top-level buildXavier Del Campo Romero2025-10-081-1/+2
|
* Replace OpenSSL with libsodium and argon2idXavier Del Campo Romero2025-10-081-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The SHA256-based password hashing algorithm used by slcl(1) and usergen(1) is considered insecure against several kinds of attacks, including brute force attacks. [1] Therefore, a stronger password hashing algorithm based on the Argon2id key derivation function is now used by default. While OpenSSL does support Argon2id, it is only supported by very recent versions [2], which are still not packaged by most distributions as of the time of this writing. [3] As an alternative to OpenSSL, libsodium [4] had several benefits: - It provides easy-to-use functions for password hashing, base64 encoding/decoding and other cryptographic primitives used by slcl(1) and usergen(1). - It is packaged by most distributions [5], and most often only the patch version differs, which ensures good compatibility across distributions. Unfortunately, and as opposed to OpenSSL, libsodium does not come with command-line tools. Therefore, usergen(1) had to be rewritten in C. In order to maintain backwards compatiblity with existing databases, slcl(1) and usergen(1) shall support the insecure, SHA256-based password hashing algorithm. However, Argon2id shall now be the default choice for usergen(1). [1]: https://security.stackexchange.com/questions/195563/why-is-sha-256-not-good-for-passwords [2]: https://docs.openssl.org/3.3/man7/EVP_KDF-ARGON2/ [3]: https://repology.org/project/openssl/versions [4]: https://www.libsodium.org/ [5]: https://repology.org/project/libsodium/versions
* Implement directory download as ZIPXavier Del Campo Romero2025-10-081-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | Thanks to the fdzipstream library [1] and zlib [2], it is possible to generate ZIP files on-the-fly, therefore requiring no extra disk space usage and only a small amount of memory. Unfortunately, as of the time of this writing fdzipstream is not packaged by any distributions yet [3], so it had to be imported as a git submodule as a workaround. While libarchive [4] could be an interesting alternative, writing ZIP files is only supported by very recent versions (>= 3.8.0), which are still not packaged by many distributions [5], either. Moreover, libarchive is a package with several dependencies other than zlib and is significantly larger compared to fdzipstreams, so fdzipstreams was ultimately considered a better fit for this purpose. [1]: https://github.com/CTrabant/fdzipstream.git [2]: http://zlib.net/ [3]: https://repology.org/projects/?search=fdzipstream [4]: https://www.libarchive.org/ [5]: https://repology.org/project/libarchive/versions
* README.md: Update according to thumbnail generationXavier Del Campo Romero2025-09-241-2/+31
|
* README.md: Fix CMake build instructionsXavier Del Campo Romero2024-05-051-3/+2
| | | | | | The previous instructions were simply wrong because `cmake ..` would attempt to configure the project from the parent directory, instead of the build directory.
* README.md: Update dependencies listXavier Del Campo Romero2024-02-241-2/+2
| | | | | | - jq is required by usergen. - Despite being part of a POSIX.1-2008 environment, m4 is not provided by Debian or Ubuntu by default.
* README.md: Remove wrong comment about /tmpv0.1.0-rc4v0.1.0Xavier Del Campo Romero2023-10-251-3/+1
| | | | | /tmp is at least defined by POSIX.1-2017 at section 10 (Directory Structure and Devices).
* Replace handwritten Makefile with configure scriptXavier Del Campo Romero2023-10-251-1/+3
|
* Apply slweb renaming to libwebXavier Del Campo Romero2023-10-111-3/+3
|
* usergen: Remove dependency against xxd(1)Xavier Del Campo Romero2023-09-161-1/+0
| | | | | xxd(1) is closely related to vim(1), might not be available under some POSIX systems.
* Reduce minimum required major version for OpenSSLXavier Del Campo Romero2023-09-161-1/+1
| | | | | slcl has been successfully tested with OpenSSL 2.0 on an OpenBSD 7.3 host.
* Add screenshotsXavier Del Campo Romero2023-08-081-0/+6
|
* Do some minor rebrandingXavier Del Campo Romero2023-08-011-9/+9
| | | | | | Despite designed around portability and minimalism, I feel slcl no longer aligns with the philosophical views from the suckless project. Therefore, I think it was appropriate to unlink its branding from it.
* README.md: Inform about -t command line optionXavier Del Campo Romero2023-07-301-0/+21
|
* Move slweb to new URLXavier Del Campo Romero2023-07-281-4/+4
|
* README.md: Add references to slwebXavier Del Campo Romero2023-07-211-1/+4
| | | | | | slweb is the HTTP/1.1 server implementation and utilities that slcl originally implemented, which have now been split into a separate repository.
* Remove HTTP/1.0 supportXavier Del Campo Romero2023-05-011-1/+1
| | | | | | | | | | | Considering http.h defined HTTP/1.1-only responses such as "303 See Other", as well as incoming HTTP/1.1-only features (e.g.: byte serving), it did not make much sense to keep a somewhat broken compatibility against HTTP/1.0. Unfortunately, this breaks support with some existing clients such as lynx(1), even if HTTP/1.0 was already deprecated many years ago. However, even lynx(1) can be configured to support HTTP/1.1.
* README.md: Fix wrong linksXavier Del Campo Romero2023-03-201-4/+4
|
* README.md: Update according to current statusXavier Del Campo Romero2023-03-191-14/+26
|
* Make usergen a bit more usefulXavier Del Campo Romero2023-03-161-0/+1
| | | | | | So far, usergen printed a JSON object over standard output that had to be manually copied into db.json. Now, this step is done automatically, thanks to jq(1). OTOH, user directory is now also created by usergen.
* Implement user quotaXavier Del Campo Romero2023-03-061-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This feature allows admins to set a specific quota for each user, in MiB. This feature is particularly useful for shared instances, where unlimited user storage might be unfeasible or even dangerous for the server. Also, a nice HTML5 <progress> element has been added to the site that shows how much of the quota has been consumed. If no quota is set, slcl falls back to the default behaviour i.e., assume unlimited storage. Limitations: - While HTTP does specify a Content-Length, which determines the length of the whole request, it does not specify how many files are involved or their individual sizes. - Because of this, if multiple files are uploaded simultaneously, the whole request would be dropped if user quota is exceeded, even if not all files exceeded it. - Also, Content-Length adds the length of some HTTP boilerplate (e.g.: boundaries), but slcl must rely on this before accepting the whole request. In other words, this means some requests might be rejected by slcl because of the extra bytes caused by such boilerplate. - When the quota is exceeded, slcl must close the connection so that the rest of the transfer is cancelled. Unfortunately, this means no HTML can be sent back to the customer to inform about the situation.
* README.md: Fix broken link to usergenXavier Del Campo Romero2023-03-061-4/+4
|
* Initial commitXavier Del Campo Romero2023-02-281-0/+205