Matthew Holt
bf54615efc
ResponseMatcher for conditional logic of response headers
2019-05-28 18:53:08 -06:00
Matthew Holt
da6a8cfc86
Minor cleanups
2019-05-28 18:52:21 -06:00
Matthew Holt
5a4a1421de
Fix error handling and matching catch-all routes
2019-05-23 14:42:14 -06:00
Matthew Holt
34a25dd558
Add very simple markdown middleware for now
2019-05-23 14:41:43 -06:00
Matthew Holt
9e576c76e7
Add request_body middleware and some limits to HTTP servers
2019-05-23 13:16:34 -06:00
Matthew Holt
869fbac632
Don't use auto HTTPS for servers with only HTTP port listeners
2019-05-22 14:14:26 -06:00
Matthew Holt
284fb3a98c
Allow multiple matcher sets in routes (OR'ed together)
...
Also export MatchRegexp in case other matcher modules find it useful.
Add comments to the exported matchers.
2019-05-22 13:13:39 -06:00
Matthew Holt
bc00d840e8
Export types and fields necessary to build configs (for config adapters)
...
Also flag most fields with 'omitempty' for JSON marshaling
2019-05-22 12:32:36 -06:00
Matthew Holt
2fd98cb040
Module.New() does not need to return an error
2019-05-21 14:22:21 -06:00
Matthew Holt
67d32e6779
Fix up matchers tests and take care of TODO in rewrite
2019-05-21 13:10:14 -06:00
Matthew Holt
9d54f655aa
Take care of remaining TODOs in the browse responder
2019-05-21 13:03:52 -06:00
Matthew Holt
65195a726d
Implement rewrite middleware; fix middleware stack bugs
2019-05-20 23:48:43 -06:00
Matthew Holt
b84cb05848
Fix deferred header ops
2019-05-20 22:00:54 -06:00
Matthew Holt
a969872850
Default error handler; rename StaticFiles -> FileServer
2019-05-20 21:21:33 -06:00
Matthew Holt
aaacab1bc3
Sanitize paths in static file server; some cleanup
...
Also remove AutomaticHTTPSError for now
2019-05-20 17:15:38 -06:00
Matthew Holt
d22f64e6d4
Implement headers middleware
2019-05-20 15:46:52 -06:00
Matthew Holt
22995e5655
Implement most of browse; fix a couple obvious bugs; some cleanup
2019-05-20 15:46:52 -06:00
dev
043eb1d9e5
move internal packages to pkg folder and update reverse proxy
...
* set automatic https error type for cert-magic failures
* add state to onload and unload methods
* update reverse proxy to use Provision() and Cleanup()
2019-05-20 14:48:26 -04:00
Matthew Holt
fec7fa8bfd
Implement most of static file server; refactor and improve Replacer
2019-05-20 10:59:20 -06:00
Matthew Holt
1f0c061ce3
Architectural shift to using context for config and module state
2019-05-16 16:05:38 -06:00
Matthew Holt
ff5b4639d5
Some minor updates, and get rid of OnLoad/OnUnload
2019-05-16 11:46:17 -06:00
Matthew Holt
f9d93ead4e
Rename and export some types, other minor changes
2019-05-14 14:14:05 -06:00
Matthew Holt
8ae0d6a509
caddyhttp: Implement better HTTP matchers including regexp; add tests
2019-05-10 21:07:02 -06:00
Matthew Holt
ad3d408067
Add some tests and fix vet warning
2019-05-07 10:15:46 -06:00
Matthew Holt
e40bbecb16
Rough implementation of auto HTTP->HTTPS redirects
...
Also added GracePeriod for server shutdowns
2019-05-07 09:56:18 -06:00
Matthew Holt
2eb3593327
Begin implementing HTTP replacer and static responder
2019-05-04 13:21:20 -06:00
Matthew Holt
1136e2cfee
Add reverse proxy
2019-05-04 10:49:50 -06:00
Matthew Holt
5859cd8dad
Instantiate apps that are needed but not explicitly configured
2019-04-29 09:22:00 -06:00
Matthew Holt
2d056fbe66
Initial commit of Storage, TLS, and automatic HTTPS implementations
2019-04-25 13:54:48 -06:00
Matthew Holt
545f28008e
Begin implementing error handling and re-handling
2019-04-11 20:42:55 -06:00
dev
27ecc7f384
Protocol and Caddyscript matchers
...
* Added matcher to determine what protocol the request is being made by
- grpc, tls, http
* Added ability to run caddyscript in a matcher to evaluate the http request
* Added TLS field to caddyscript request time
* Added a library to manipulate and compare a new caddyscript time type
* Library for regex in starlark
2019-04-08 09:58:11 -04:00
Matthew Holt
402f423693
Implement "global" state for modules, OnLoad and OnUnload callbacks
...
Tested for memory leaks and performance. Obviously the added locking and
global state is not awesome, but the alternative is a little uglier IMO:
we'd have to make some sort of "liaison" value which stores the state,
then pass it around to every module, and so LoadModule becomes a lot
less accessible, and each module would need to maintain a reference to
it... nope, just ugly. I think this is the cleaner solution: just make
sure only one Start() happens at a time, and keep global things global.
Very simple log middleware is an example.
Might need to reorder the operations in Start() and handle errors
differently, etc. Otherwise, I'm mostly happy with this solution...
2019-04-08 00:00:14 -06:00
Matt Holt
f976aa7443
Merged in deadlines (pull request #1 )
...
Cleanly fake-close listeners
* WIP debugging listener deadlines
* Fix listener deadlines
2019-04-02 20:58:24 +00:00
Matthew Holt
6621406fa8
Very basic middleware and route matching functionality
2019-03-31 20:41:29 -06:00
Matthew Holt
27ff6aeccb
Fix goroutine leak in Run
...
D'oh, the servers' Shutdown() would never be called because they were
never added to the list of servers.
Thanks Danny for finding this.
2019-03-27 12:36:30 -06:00
Matthew Holt
a8dc73b4d9
Performance testing Load function
2019-03-26 19:42:52 -06:00
Matthew Holt
86e2d1b0a4
Rudimentary start of HTTP servers
2019-03-26 15:45:51 -06:00
Matthew Holt
859b5d7ea3
Initial commit
2019-03-26 12:00:54 -06:00