Commit Graph

13 Commits

Author SHA1 Message Date
28283074c8
auth.c: Make use of crealpath
crealpath already provides a mechanism to determine the current working
directory from getcwd(3).
2024-06-14 23:05:47 +02:00
37c4b29678
auth.c: Reject empty files
It makes no sense to attempt to fopen(3) an empty file and malloc(3)
zero bytes so as to dump it, as dump_db is still meant to fail on empty
files.
2024-06-13 08:25:29 +02:00
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
28ae865e5e
Apply slweb renaming to libweb 2023-10-11 00:08:40 +02:00
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
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
f1bf2fb684
auth.c: Fix wrong size check
Otherwise, sb.st_size + 1 would exceed SIZE_MAX.
2023-05-28 12:57:28 +02:00
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
fa474603cc
auth.c: Add friendly reminder 2023-03-16 01:59:17 +01:00
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
61dc4f42b3
Perform some minor optimizations 2023-03-06 05:51:53 +01:00
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
d26f046fc9
Initial commit 2023-02-28 01:43:56 +01:00