aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* examples: Fix wrong library nameXavier Del Campo Romero2023-10-252-2/+2
|
* CMake: Use in-tree dynstr if not availablev0.1.0-rc4Xavier Del Campo Romero2023-10-162-1/+23
|
* Bump dynstr to v0.1.0-rc2Xavier Del Campo Romero2023-10-161-0/+0
|
* libweb.pc: Fix wrong -l flagXavier Del Campo Romero2023-10-161-1/+1
|
* Rename project from slweb to libwebv0.1.0-rc3Xavier Del Campo Romero2023-10-1144-196/+196
| | | | | | | | | | | | It was found out there was another project of the same name around (https://git.sr.ht/~strahinja/slweb/), also related to website generation. In order to avoid confusion, a new name has been chosen for this project. Surprisingly, libweb was not in use by any distributions (according to https://repology.org and AUR index), and it should reflect well the intention behind this project i.e., being a library to build web-related stuff.
* server.c: Replace sequential calls with loopXavier Del Campo Romero2023-10-101-14/+18
|
* http: Support HEADXavier Del Campo Romero2023-10-102-1/+6
|
* Bump dynstrv0.1.0-rc2Xavier Del Campo Romero2023-10-021-0/+0
| | | | | | | | | | | | | dynstr got its v0.1.0-rc1 release, and this commit introduces a fix: commit 0e779caae658f118d535e9f0a74f0012eefca9a0 Author: Xavier Del Campo Romero <xavi.dcr@tutanota.com> Date: Mon Oct 2 14:38:53 2023 +0200 CMakeLists.txt: add cmake_minimum_required This command is mandatory for all CMake projects. 3.0 was chosen since dynstr does not require any newer CMake features.
* Install man pagesv0.1.0-rc1Xavier Del Campo Romero2023-09-276-0/+68
|
* Add man pagesXavier Del Campo Romero2023-09-2721-0/+2246
|
* http.h: Remove stale commentXavier Del Campo Romero2023-09-271-1/+0
| | | | | This shall be replaced with more meaningful man pages for all functions in slweb.
* Add slweb.pcXavier Del Campo Romero2023-09-273-1/+24
|
* README.md: Add install instructionsXavier Del Campo Romero2023-09-271-0/+17
|
* Makefile, CMakeLists.txt: Add installation targetsXavier Del Campo Romero2023-09-272-0/+12
|
* server.c: Fix build on FreeBSDXavier Del Campo Romero2023-09-261-0/+6
|
* examples/Makefile: Add html exampleXavier Del Campo Romero2023-09-251-1/+7
|
* Add HTML serializer exampleXavier Del Campo Romero2023-09-156-0/+116
|
* CMakeLists.txt: Fix examples not buildingXavier Del Campo Romero2023-09-151-1/+1
| | | | | Default value for a CMake option() must always be passed as the third parameter.
* http: Use null-terminated string for POST dataXavier Del Campo Romero2023-09-092-5/+5
| | | | | | | | | application/x-www-form-urlencoded-data is (or should be) always text, so it is preferrable to define struct http_post member "data" as a null- terminated string. For applications already making this assumption, this change should now remove the need for string duplication.
* .gitignore: Add examples/hello/helloXavier Del Campo Romero2023-09-091-0/+1
|
* http: Insert name into http_post_fileXavier Del Campo Romero2023-09-092-1/+2
| | | | | Whereas slcl, the project where slweb started, ignored this field, some applications might require it.
* http: Allow multiple non-file Content-DispositionXavier Del Campo Romero2023-09-092-14/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now, slweb accepts requests such as: --boundary Content-Disposition: form-data; name="field1" value1 --boundary Content-Disposition: form-data; name="field2" value2 --boundary Content-Disposition: form-data; name="field3"; filename="example.txt" The following breaking changes have been introduced: Member "dir" from struct http_post was a leftover from the days where slcl and slweb were one project. It did not make sense for slweb, since it should not decide which Content-Disposition names are allowed. In other words, "dir" was only relevant in the scope of slcl. Member "n" from struct http_post used to have two meanings: - The length of a URL-encoded request. - The number of files on a multipart/form-data request. Since "npairs" had to be introduced to struct http_post, it did not make sense to keep this dual meaning any more. Therefore, "n" has been restricted to the former, whereas a new member, called "nfiles", has been introduced for the latter.
* http.c: Use BUFSIZ instead of arbitrary valueXavier Del Campo Romero2023-09-071-1/+1
| | | | | | | | | | | | | | According to C99 7.19.1p3: BUFSIZ is a macro that expands to an integer constant expression that is the size of the buffer used by the setbuf function. In other words, this means BUFSIZ is the most optimal length for a buffer that reads a file into memory in chunks using fread(3). Note: the number of bytes sent to the client might be less than BUFSIZ, so this would act as a bottleneck, no matter how large the buffer passed to fread(3) is.
* handler: Define port as unsigned shortXavier Del Campo Romero2023-09-072-2/+2
| | | | | Port numbers are unsigned by definition. Fortunately, this was a minor issues since server_init was doing an implicit cast to unsigned short.
* hello/main.c: Add missing length callbackXavier Del Campo Romero2023-09-071-1/+17
| | | | | Even if the feature is unsupported by the application, slweb requires `length` to be a valid function pointer.
* http.c: Return error if check_length failsXavier Del Campo Romero2023-09-071-0/+7
| | | | | Otherwise, fatal errors coming from the h->cfg.length would be unnoticed, causing slweb to attempt to send a response.
* http.c: Merge payload_{get,post} into process_payloadXavier Del Campo Romero2023-08-131-17/+3
| | | | | Both functions were in fact identical, so there was no reason to keep two definitions rather than one.
* Add hello world exampleXavier Del Campo Romero2023-08-099-0/+191
|
* README.md: Add missing CMake build stepXavier Del Campo Romero2023-08-091-0/+1
|
* html.c: Fix wrong encoding for '>' and '<'Xavier Del Campo Romero2023-08-081-2/+2
|
* Bump dynstrXavier Del Campo Romero2023-08-021-0/+0
|
* http.c: Remove useless explicit castXavier Del Campo Romero2023-08-011-1/+1
|
* Do some minor rebrandingXavier Del Campo Romero2023-08-011-7/+7
| | | | | | Despite designed around portability and minimalism, I feel slweb no longer aligns with the philosophical views from the suckless project. Therefore, I think it was appropriate to unlink its branding from it.
* Bump dynstrXavier Del Campo Romero2023-08-011-0/+0
| | | | A recent commit introduced a "clean" target to its Makefile.
* html.c: Make serialize_node staticXavier Del Campo Romero2023-07-281-2/+2
|
* Move dynstr to new URLXavier Del Campo Romero2023-07-282-2/+2
|
* README.md: Provide more details about featuresXavier Del Campo Romero2023-07-281-0/+22
|
* Move header files to subdirectoryXavier Del Campo Romero2023-07-2110-9/+9
| | | | | | | | | | | Since slweb is meant as a library, it is advisable to keep public header files under their own directory in order to avoid name clashing i.e., #include "something.h" Now becomes: #include "slweb/something.h"
* Makefile: Adapt to slwebXavier Del Campo Romero2023-07-211-19/+5
| | | | | | This project was forked off slcl, a "suckless" cloud solution, so that its HTTP/1.1 server implementation could be reused by other applications.
* Add top-level CMakeLists.txtXavier Del Campo Romero2023-07-211-0/+11
|
* Add README.mdXavier Del Campo Romero2023-07-211-0/+138
|
* Import dynstrXavier Del Campo Romero2023-07-202-0/+3
|
* Add .gitignoreXavier Del Campo Romero2023-07-201-0/+3
|
* Makefile: Allow users to define LDFLAGSXavier Del Campo Romero2023-07-201-2/+1
| | | | | This should allow for easier packaging if extra linker flags are required.
* Allow admins to define their own stylesheetXavier Del Campo Romero2023-07-201-0/+1
| | | | | | | | | | | | slcl used to provide a hardcoded stylesheet. However, it would be desirable for some admins to provide a custom stylesheet without having to rebuild the application. Now, slcl creates a default stylesheet, namely style.css, into the target directory, that can be later modified by admins. While this might contradict the suckless philosophy a bit, hopefully some admins might find this new feature useful.
* wildcard_cmp.c: Fix out-of-bounds cmpXavier Del Campo Romero2023-07-201-1/+2
| | | | | | | | | | | | | | | When the distance between '*' on a wildcard expression was larger than the string to compare with, this would cause an out-of-bounds read because `n` was not being limited to the strlen(3) from the input string. Example: - s="c", p="*cc*", casecmp=false Here, the distance between the first and second '*' is 2 bytes, which is longer than the input string itself (1 byte, not counting the terminating null byte '\0').
* http.c: Disallow forbidden filenames during uploadXavier Del Campo Romero2023-07-201-0/+8
| | | | | | | - '.' or '..' must not be used for filenames. - Filenames must not contain forward slashes ('/'). - Filenames must not contain asterisks ('*') to avoid confusion with wildcard expressions.
* http.c: Use case-insensitive compare for Content-DispositionXavier Del Campo Romero2023-07-201-1/+1
| | | | | HTTP headers are case-insensitive, so the implementation must accept Content-Diposition, content-disposition or any other variation.
* server.c: Fix typoXavier Del Campo Romero2023-07-201-1/+1
|
* http.c: Accept resources with '&' or '?'Xavier Del Campo Romero2023-07-201-2/+4
| | | | | Otherwise, client requests to resources such as '/me & you', '/?' or '/??preview=1' would fail.