Commit graph

42 commits

Author SHA1 Message Date
Laurence Withers
8cae4d0f8f Correct X-Frame-Options value sameorigin→SAMEORIGIN v1.3.1 2022-07-06 10:15:28 +01:00
Laurence Withers
6ea49bb3b3 Updated dependencies v1.3.0 2022-07-06 10:00:24 +01:00
Laurence Withers
83a5226e1a handler: drop sendfile(2) support
After some experimentation, I found that the sendfile(2) support did not
really save any time compared to just write(2) from an already
memory-mapped file.

After some reading, I think open/sendfile is supposed to be slightly
more efficient than open/mmap/write — but if we already did the mmap
step, then it doesn't save us much.

Moreover, the code to support sendfile(2) is a bit icky, and also forces
us to close the HTTP connection after serving a file.
2022-07-06 09:53:34 +01:00
Laurence Withers
1b84160dcf cmd/htpacker: cope with zero-length input files cmd/htpacker/v1.1.1
Sometimes we might be asked to serve up a zero-length input file,
typically from some machine-generated CSS etc. We make some very
rudimentary guess about the content-type the caller wanted and skip the
mmap(2) call.
2020-04-02 12:33:04 +01:00
Laurence Withers
52213cf67e cmd/htpacker: report filename on I/O error 2020-04-02 12:25:23 +01:00
Laurence Withers
f70914aa38 cmd/packserver: add --fallback-404 arg for Angular-style SPA support cmd/packserver/v1.2.0 2020-02-15 12:35:05 +00:00
Laurence Withers
ca54fb8fbb Add doc link to README.md v1.2.0 2020-02-15 12:27:45 +00:00
Laurence Withers
d5b4fcf0be Implement library support for Angular-style single page applications 2020-02-15 12:26:01 +00:00
Laurence Withers
f08165b0f1 Update README to remove reference to external brotli command cmd/htpacker/v1.1.0
Since we're now using github.com/andybalholm/brotli to natively pack, there's no need to refer
to an external brotli process any more.
2020-02-15 11:23:42 +00:00
Laurence Withers
6f532296ef Add CLI progress bars to the packer tool
Since packing can be quite slow, it is nice to display progress to the
caller. We use the excellent github.com/vbauerster/mpb library to do so,
and add a bit of colour with github.com/logrusru/aurora.

Finally, augment the inspector and packer with a summary printer that
displays the overall file size/count, and compression ratio for each
compression type.
2020-02-15 11:22:24 +00:00
Laurence Withers
984639d475 Finish porting child modules to src.lwithers.me.uk cmd/htpacker/v1.0.2 cmd/packserver/v1.1.5 2020-01-15 18:36:05 +00:00
Laurence Withers
1a37903d98 Add MIT licence file v1.1.5 2020-01-15 18:31:11 +00:00
Laurence Withers
7abc96d537 Moved module to src.lwithers.me.uk 2020-01-15 18:28:43 +00:00
Laurence Withers
280bf2b181 brotli CLI no longer takes --input argument 2019-12-10 15:03:41 +00:00
Laurence Withers
566c23dd7e cmd/packserver: bump to latest version of handler cmd/packserver/v1.1.4
Adds range support.
2019-10-09 13:06:02 +01:00
Laurence Withers
f7cd22f633 Single range support v1.1.4
We now support single part ranges, as per:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests#Single_part_ranges

Multi-part ranges are not implemented because there have been far too
many bugs in this area.

It interacts with compression by selecting a byte range from the
compressed stream. Since the compressed stream is fixed, the results are
consistent.
2019-10-09 13:04:07 +01:00
Laurence Withers
8fc082c4ca cmd/packserver: build against latest mod, go mod tidy cmd/packserver/v1.1.3 2019-07-17 16:31:43 +01:00
Laurence Withers
b7b5dd55d0 Remove stray debug printf v1.1.3 2019-07-17 16:30:20 +01:00
Laurence Withers
b6da0b4e48 cmd/htpacker: update dependendencies cmd/htpacker/v1.0.1 2019-06-25 15:32:24 +01:00
Laurence Withers
0883b0b405 cmd/htpacker: workaround for SVG files without XML prolog
If a .svg file doesn't have a “<?xml…” prolog, then it would be detected as plain
text. Allow extension-based override of the content-type in this case.
2019-06-25 15:31:49 +01:00
Laurence Withers
8528a31d54 cmd/packserver: bump htpack dependency cmd/packserver/v1.1.2 2019-05-28 13:00:02 +01:00
Laurence Withers
c2d7bdaa71 handler: fix sendfile to be non-blocking v1.1.2
Having done a bit more research on exactly how to use sendfile()
effectively with Go's own event loop, we can now leave the HTTP socket
in non-blocking mode and correctly integrate with the event loop to wait
for the socket to be writeable once more.
2019-05-28 12:57:59 +01:00
Laurence Withers
97a823d748 packserver: use htpack v1.1.1 cmd/packserver/v1.1.1 2019-05-10 13:22:53 +01:00
Laurence Withers
eac79eb605 Set blocking mode on hijacked fds for sendfile v1.1.1 2019-05-10 13:21:22 +01:00
Laurence Withers
21a18eced6 cmd/packserver: use Cache-Control: no-cache cmd/packserver/v1.1.0
Rather than setting "Cache-Control: no-store", use "no-cache". The
difference is that "no-store" tells the browser that it must always
completely re-fetch the resource; whereas "no-cache" means that the
browser can write the resource to disk but must re-validate it (e.g.
using Etags) before re-using it.
2019-04-25 14:47:13 +01:00
Laurence Withers
246aefbec4 cmd/packserver: add --index-file argument 2019-04-25 14:45:18 +01:00
Laurence Withers
be86cbaed3 Handler: add SetIndex v1.1.0
This allows setting an index.html (or equivalent) filename; this means that
we can serve requests to "/foo" with the contents of "/foo/index.html".
2019-04-25 14:17:55 +01:00
Laurence Withers
e28f687057 cmd/htpacker, cmd/packserver: update dependencies cmd/htpacker/v1.0.0 cmd/packserver/v1.0.0 2019-04-15 14:19:12 +01:00
Laurence Withers
5328627998 Update dependencies v1.0.0 2019-04-15 14:15:43 +01:00
Laurence Withers
527b361b51 Finish up the initial packserver implementation 2019-04-15 14:10:26 +01:00
Laurence Withers
ea77f42dc3 Note a TODO in the README 2019-04-12 09:16:23 +01:00
Laurence Withers
e47ed4e4c2 cmd/htpacker now split into its own module 2019-04-12 09:15:28 +01:00
Laurence Withers
ce6749f0a3 Workaround for splitting to multiple modules 2019-04-12 09:14:21 +01:00
Laurence Withers
fdd1990e89 Reorganise ready to split into modules 2019-04-12 09:07:17 +01:00
Laurence Withers
84ea7c3673 cmd/htpacker: lots more WIP 2019-03-29 09:18:07 +00:00
Laurence Withers
feb25bf276 Handler: close TCP conn after Sendfile
Since we hijacked the HTTP connection, we need to close the underlying TCP
connection after calling Sendfile.
2019-03-29 09:17:46 +00:00
Laurence Withers
d42094ea72 Handler: call path.Clean first
Cope with things like /foo//bar by calling path.Clean before searching for
path in the map.
2019-03-29 09:17:15 +00:00
Laurence Withers
5c05a75fba Further work; tidying up, begin cmdline tool 2019-03-13 21:55:31 +00:00
Laurence Withers
2a25d80249 Handler implementation
Currently missing range support, but compression and etag processing is
in along with basic header support. Still needs unit tests.
2019-03-08 09:16:38 +00:00
Laurence Withers
d836bf3cc7 Further work-in-progress, basic packing and inspecting 2019-03-05 18:41:02 +00:00
Laurence Withers
e864d0829e Basic work-in-progress, can pack basic files now 2019-02-24 12:17:57 +00:00
Laurence Withers
0fc26e5414 Initial README 2019-02-23 13:47:59 +00:00