Commit Graph

11 Commits

Author SHA1 Message Date
Xavier Del Campo Romero d96e5685ee
auth.c: Fix potential signed integer overflow
For platforms where int is a 16-bit data type, this operation might
overflow and possibly cause either unexpected behaviour and/or a
compiler warning.

Therefore, it is safer to promote each integer constant accordingly.
2023-10-14 13:08:25 +02:00
Xavier Del Campo Romero 28ae865e5e
Apply slweb renaming to libweb 2023-10-11 00:08:40 +02:00
Xavier Del Campo Romero 5af036c37c
auth.c: Add missing include
As opposed to other integer constants such as ULLONG_MAX, SIZE_MAX is
defined by stdint.h, not limits.h.
2023-09-15 22:34:07 +02:00
Xavier Del Campo Romero e49f1da7ae
Adapt to slweb's include paths
slweb puts its header files into its own directory in order to avoid
potential name clashing.
2023-07-21 01:40:55 +02:00
Xavier Del Campo Romero f1bf2fb684
auth.c: Fix wrong size check
Otherwise, sb.st_size + 1 would exceed SIZE_MAX.
2023-05-28 12:57:28 +02:00
Xavier Del Campo Romero ee6809eac5
auth.c: Ensure absolute path for a->dir
Otherwise, slcl would create broken symbolic links if the user passes a
relative path as command line argument.
2023-03-25 09:57:19 +01:00
Xavier Del Campo Romero fa474603cc
auth.c: Add friendly reminder 2023-03-16 01:59:17 +01:00
Xavier Del Campo Romero ad7fb045ad
Move decode_hex into its own file
- Error detection against strotul(3) has been improved, as done in other
places.
- New function encode_hex has been implemented, which will be used
by future commits.
2023-03-09 01:14:10 +01:00
Xavier Del Campo Romero 61dc4f42b3
Perform some minor optimizations 2023-03-06 05:51:53 +01:00
Xavier Del Campo Romero ff8da797a1
Implement user quota
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.
2023-03-06 05:51:49 +01:00
Xavier Del Campo Romero d26f046fc9
Initial commit 2023-02-28 01:43:56 +01:00