]> cat aescling's git repositories - httpd-execline.git/log
httpd-execline.git
2 years agoAdd build configurations for userland dependencies
cat æscling [Thu, 27 Jul 2023 17:47:00 +0000 (13:47 -0400)]
Add build configurations for userland dependencies

2 years agoCorrect README
cat æscling [Thu, 27 Jul 2023 16:08:32 +0000 (12:08 -0400)]
Correct README

* Correct visible-to-httpd/binaries section
* Add charset to Content-Type_table example

2 years agoclean-dot-directories: fix: clear arg envvars on loop
cat æscling [Thu, 27 Jul 2023 07:53:41 +0000 (03:53 -0400)]
clean-dot-directories: fix: clear arg envvars on loop

Otherwise, with mischevious client requests, we run out of room for all
the cut up versions of the requested resource we store copies of. This
actually crashes in a way the client does not notice, though all the
extra string processing does have a noticable performance cost.

It is possible that the result of crashing could be a request that
exposes files outside subdirectories of supported_domains, as the
remaining dot-dots would be interpreted literally. Instead of attempting
this exploit I have simply fixed the bug.

Perhaps we *should* have been using sed(1) all along...

2 years agohttpd.execline: style: flatten resource logic
cat æscling [Thu, 27 Jul 2023 04:50:16 +0000 (00:50 -0400)]
httpd.execline: style: flatten resource logic

2 years agohttpd.execline: fix: correct publicfile Content-Type override
cat æscling [Thu, 27 Jul 2023 04:48:53 +0000 (00:48 -0400)]
httpd.execline: fix: correct publicfile Content-Type override

2 years agoRefactor for eltest and case
cat æscling [Wed, 26 Jul 2023 04:46:08 +0000 (00:46 -0400)]
Refactor for eltest and case

All tested functionality appears to work as expected

grep(1) and sed(1) are no longer used at all! We still require tr(1) and
urlencode(1); both would be very difficult to relpace with execline

* Remove extraneous documentation
* Fix improperly unquoted backslashes
* Revert
* Replace sed usage in httpd.execline
* Fix bug in http-header-parse
* Fix http-start-line-parse
* Fix case-sensitivity in client request header validation
* Fix many, many bugs

2 years agoRemove unused file
cat æscling [Wed, 26 Jul 2023 05:33:57 +0000 (01:33 -0400)]
Remove unused file

2 years agoProtect headers we always send from override
cat æscling [Wed, 26 Jul 2023 00:33:13 +0000 (20:33 -0400)]
Protect headers we always send from override

The extensibility is not great because execline makes lists difficult.
There are no native lists, not to mention any kind of list.contains

2 years agohttpd.execline: fix: typo; s6-test deprecation
cat æscling [Wed, 26 Jul 2023 01:21:58 +0000 (21:21 -0400)]
httpd.execline: fix: typo; s6-test deprecation

The latter is a partial fix

2 years agoImplement Content-Type override
cat æscling [Tue, 25 Jul 2023 23:33:07 +0000 (19:33 -0400)]
Implement Content-Type override

Document accordingly

Ignore any Content-Type headers in
`configuration/override/${resource}/headers`

* Remove empty line comments

2 years agoContent-Type_table: fix: JS; charsets
cat æscling [Wed, 26 Jul 2023 00:47:32 +0000 (20:47 -0400)]
Content-Type_table: fix: JS; charsets

3 years agocorrect reference to http-print-header-files.execline
aescling [Sat, 16 Apr 2022 06:33:01 +0000 (06:33 +0000)]
correct reference to http-print-header-files.execline

3 years agohttp-header-parse.execline: convert parsed header names to lowercase
aescling [Sat, 16 Apr 2022 06:19:29 +0000 (06:19 +0000)]
http-header-parse.execline: convert parsed header names to lowercase

Update all lookups for what is now called httpd_header_parse_host

* Fix accidental whitespace errors

4 years agohttpd-print-header-file.execline: rename; fix
single-right-quote [Mon, 25 Oct 2021 21:02:13 +0000 (21:02 +0000)]
httpd-print-header-file.execline: rename; fix

4 years agofix: preserve user configuration for logger on `git pull`
single-right-quote [Mon, 25 Oct 2021 20:37:01 +0000 (16:37 -0400)]
fix: preserve user configuration for logger on `git pull`

4 years agohttp-print-header-file.execline: improve documentation
single-right-quote [Sun, 12 Sep 2021 20:15:39 +0000 (16:15 -0400)]
http-print-header-file.execline: improve documentation

in addition, rename this script for accuracy

4 years agoUpdate README
single-right-quote [Sun, 12 Sep 2021 05:16:57 +0000 (01:16 -0400)]
Update README

4 years agoallow less specific headers to take effect origin/better-headers
single-right-quote [Sun, 12 Sep 2021 03:53:10 +0000 (23:53 -0400)]
allow less specific headers to take effect

4 years agoallow headers to refer to requested hostname, resource
single-right-quote [Thu, 9 Sep 2021 03:58:09 +0000 (03:58 +0000)]
allow headers to refer to requested hostname, resource

also document this fact

4 years agouncomment a line from README
single-right-quote [Thu, 9 Sep 2021 03:57:30 +0000 (03:57 +0000)]
uncomment a line from README

4 years agofix: correct errors in README
single-right-quote [Wed, 8 Sep 2021 01:07:34 +0000 (01:07 +0000)]
fix: correct errors in README

additionally, update it

4 years agoimprove logger output for processing
single-right-quote [Wed, 8 Sep 2021 00:57:55 +0000 (00:57 +0000)]
improve logger output for processing

4 years agobugfix: respond for any sytactically valid Hosts
single-right-quote [Wed, 8 Sep 2021 00:39:36 +0000 (00:39 +0000)]
bugfix: respond for any sytactically valid Hosts

as a fallback, make sure to send a response even when invalid
hostnames are required

4 years agoadjust hiding client input to satisfy toybox
single-right-quote [Wed, 8 Sep 2021 00:32:50 +0000 (00:32 +0000)]
adjust hiding client input to satisfy toybox

when done reading from the client, we defensively close stdin, to
prevent potential bugs being exploitable to malicious input

toybox opens /dev/null if stdin does not exist, which crashes in a
chrooted evironment. piping in an empty string more or less
accomplishes the same thing as closing stdin would

i really do not know why toybox found this necessary.

4 years agochange example content type for Market Commons
single-right-quote [Wed, 8 Sep 2021 00:29:46 +0000 (00:29 +0000)]
change example content type for Market Commons

per https://github.com/marrus-sh/MarketCommons2-Ecmascript#miscellaneous

4 years agohttp-error-response.execline: cleanup
single-right-quote [Thu, 26 Aug 2021 02:44:46 +0000 (22:44 -0400)]
http-error-response.execline: cleanup

4 years agoadd notes/warning on external contributions
single-right-quote [Wed, 25 Aug 2021 04:30:02 +0000 (00:30 -0400)]
add notes/warning on external contributions

4 years agochange license
single-right-quote [Wed, 25 Aug 2021 04:29:13 +0000 (00:29 -0400)]
change license

4 years agobugfix: unbreak response when no extra headers
single-right-quote [Tue, 24 Aug 2021 04:26:52 +0000 (04:26 +0000)]
bugfix: unbreak response when no extra headers

4 years agouse more sensible default values
single-right-quote [Tue, 24 Aug 2021 04:25:35 +0000 (04:25 +0000)]
use more sensible default values

4 years agoupdate for breaking changes in execline
single-right-quote [Mon, 23 Aug 2021 12:58:17 +0000 (08:58 -0400)]
update for breaking changes in execline

+ `backtick -i` is now the default behaviour
+ `backtick -I` is now the old default behaviour
+ `backtick -x` is now what `-I` used to be
+ `backtick -E` was added to automatically `import -i -u`
+ `trap` no longer supports timeouts; switch to timeout(1p)

5 years agoallow configuring domain-name–agnostic error response pages
single-right-quote [Thu, 24 Sep 2020 19:42:40 +0000 (19:42 +0000)]
allow configuring domain-name–agnostic error response pages

additionally, remove outdated comments.

5 years agoremove unused debugging line
single-right-quote [Thu, 24 Sep 2020 19:35:27 +0000 (19:35 +0000)]
remove unused debugging line

5 years agohttp-get-extra-headers.execline: bugfix: terminate headers with \r\n
single-right-quote [Wed, 16 Sep 2020 18:52:45 +0000 (18:52 +0000)]
http-get-extra-headers.execline: bugfix: terminate headers with \r\n

embarrassing.

5 years agoupdate README for changes
single-right-quote [Fri, 11 Sep 2020 00:47:01 +0000 (00:47 +0000)]
update README for changes

note the TODO about error status pages. how did i forget that???

5 years agoreorganize configuration of resource- and domain-specific headers
single-right-quote [Thu, 10 Sep 2020 22:03:12 +0000 (22:03 +0000)]
reorganize configuration of resource- and domain-specific headers

in doing so, move so-called ”extra headers” code to a separate script

furthermore, slightly adjust the logic of http-error-response.execline

headers are now specified on a per-header basis, one file per header

5 years agobegin making visible-to-httpd/configuration/overrides generic
single-right-quote [Thu, 10 Sep 2020 21:52:46 +0000 (21:52 +0000)]
begin making visible-to-httpd/configuration/overrides generic

5 years agoisolate chroot-exclusive contents
single-right-quote [Fri, 14 Aug 2020 19:57:23 +0000 (19:57 +0000)]
isolate chroot-exclusive contents

also rename several folders in anticipation of further restructuring

as a bonus, `supported-hostname-test.execline` no longer needs special cases

5 years agointroduce custom HTTP status pages [NEEDS WORK]
single-right-quote [Thu, 13 Aug 2020 21:20:08 +0000 (17:20 -0400)]
introduce custom HTTP status pages [NEEDS WORK]

as an additional bonus, child processes of `httpd.execline` now inherit
the environment variables for the parsed start line and headers; this
allows `http-error-response.execline` to make use of the host supplied
by the client request with minimal changes.

note that `Content-Length` is currently not supplied anymore for header
responses (functional, but the HTTP/1.1 standard says you “SHOULD” use
that header); this needs fixing.

also note that `http-error-response.execline` currently forces error
status pages to use a `Content-Type` of
`application/xhtml+xml; charset=utf-8`; surely we should allow the user
to override this. (perhaps make status code *folders*, and use
constituent files `Content-Type`, perhaps `extra_headers`, and of course
`message_body`, in that directory? this interface would be less than
ideal though)

5 years agoinitial commit
single-right-quote [Tue, 11 Aug 2020 21:56:45 +0000 (17:56 -0400)]
initial commit