Commit graph

61 commits

Author SHA1 Message Date
Laurence Withers
19b2560e2d cmd/htpacker: swap out progress bar library cmd/htpacker/v1.4.4
Switch to a simpler progress bar library. I've been having trouble tracking
down a panic that seemed to affect the prior code; the new code is much
easier and uses far fewer async channels and things.
2024-08-24 09:54:25 +01:00
Laurence Withers
3974db129e cmd/packserver: updated modules cmd/packserver/v1.3.3 2024-07-18 14:58:38 +01:00
Laurence Withers
7dffaaa5d7 cmd/htpacker: updated modules cmd/htpacker/v1.3.3 2024-07-18 14:57:49 +01:00
Laurence Withers
2a1eafa306 Updated modules v1.3.3 2024-07-18 14:54:50 +01:00
Laurence Withers
3585b7943a Update JavaScript MIME type
It seems that application/javascript has been supplanted by text/javascript. See
https://www.rfc-editor.org/rfc/rfc9239 and
https://www.iana.org/assignments/media-types/application/javascript .
2024-07-18 14:52:12 +01:00
Laurence Withers
6cbbe7328a Correct some display issues with mpb update cmd/htpacker/v1.3.2 2024-05-03 17:14:12 +01:00
Laurence Withers
a83aedd502 cmd/htpacker: update modules cmd/htpacker/v1.3.1 2024-05-03 16:49:33 +01:00
Laurence Withers
8474cfbc5d Update mpb lib to v8 cmd/htpacker/v1.3.0 2023-04-28 16:12:19 +01:00
Laurence Withers
2f842a21f3 cmd/htpacker: updated modules 2023-04-28 15:57:34 +01:00
Laurence Withers
439bf2422b cmd/htpacker: don't try to compress tiny files
If we have some really tiny files, it's not worth compressing them. Among other things,
this will work around a bug in go-zopfli for 0- or 1-byte files.
2023-04-28 15:57:28 +01:00
Laurence Withers
2b280de481 Correct handling of multiple packfiles cmd/packserver/v1.3.2
During the 1.3.1 update, a change was made to stop using http.Handle (and ServeMux
underneath), in order to have manual control over the http.Server object.

Unfortunately, it was overlooked that nothing was doing routing / multiplexing, so
when using multiple packfiles only one handler (picked arbitrarily due to map)
would actually be active on any given invocation.

Correct this by adding an explicit handler. We don't use ServeMux so as to avoid
bringing in any of its more complex behaviours like path cleaning etc.
2022-12-12 10:26:55 +00:00
Laurence Withers
5398dddb02 Add --graceful-shutdown-delay cmd/packserver/v1.3.1
This option allows a configurable delay after receiving SIGTERM (or
SIGINT) but before the HTTP server stops accepting new connections. It
is quite useful for distributed systems where callers are only notified
asynchronously (e.g. via service discovery) that a service is being shut
down; it prevents the shut down from occurring prior to callers
processing the notification.

This required some minor refactoring to allow the Shutdown() method on
http.Server to be accessed.
2022-11-26 10:43:18 +00:00
Laurence Withers
e0ae6bb4b6 cmd/packserver: update to Go 1.19, update dependencies 2022-11-26 10:14:25 +00:00
Laurence Withers
6b836895a0 cmd/htpacker: update to Go 1.19, update dependencies cmd/htpacker/v1.2.1 2022-11-26 10:12:42 +00:00
Laurence Withers
301dc0c7c8 Update to Go 1.19 v1.3.2 2022-11-26 10:08:16 +00:00
Laurence Withers
a6c2991781 cmd/htpacker: updated dependencies cmd/htpacker/v1.2.0 2022-07-06 13:31:22 +01:00
Laurence Withers
d827d8aace cmd/htpacker: add --content-type flag
This allows overriding the content-type of files being packed using the
ad-hoc method (not YAML spec).
2022-07-06 13:29:55 +01:00
Laurence Withers
565a269cef cmd/packserver: add --frames option cmd/packserver/v1.3.0
Allows override of the X-Frame-Options header on the handler.
2022-07-06 10:33:54 +01:00
Laurence Withers
16d836da9a cmd/packserver: dependency update 2022-07-06 10:17:32 +01:00
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