Matthew Holt
39db06d9c4
Implement IP/CIDR matcher and Not (negated) matcher
2019-06-04 13:42:54 -06:00
Matthew Holt
f064889a4f
Customize admin endpoint address with -listen flag
...
This is a temporary holdover for development purposes
2019-06-03 15:35:14 -06:00
Matthew Holt
3439933235
Implement session ticket keys; default STEK module with rotation
2019-05-29 23:11:46 -06:00
Matthew Holt
1b6b422c63
Add cleanup callbacks to context
2019-05-29 23:10:12 -06:00
Matthew Holt
2265db9028
Fix bug unmarshaling custom duration values
2019-05-29 23:09:51 -06:00
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
9cd6f35e9d
Separate out certificate selection
2019-05-27 11:31:47 -06:00
Matthew Holt
210d0cf7f1
Implement custom cert selection policies; optimize matching for SNI
2019-05-24 13:18:45 -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
c24a3e389f
Change admin listener to :1234 for now; output message when listening
2019-05-22 19:10:29 -06:00
Matthew Holt
f976451d19
Disallow unknown fields (strict unmarshal) when loading modules
...
This makes it faster and easier to detect broken configurations, but
is a slight performance hit on config loads since we have to re-encode
the decoded struct back into JSON without the module name's key
2019-05-22 14:32:12 -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
be9b6e7b57
Honor the configured CA value
2019-05-21 14:22:33 -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
1a20fe330e
Improve godoc for contexts
2019-05-17 08:48:12 -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
48b5a80320
Remove (unimplemented) enterprise TLS matchers
2019-05-07 11:58:58 -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
dev
8eba582efe
Add go module files
2019-05-06 17:26:05 -04:00
Matthew Holt
fbea3374e9
Add missing run.go (oops)
2019-05-06 12:43:04 -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
43961b542b
General cleanup and more godocs
2019-04-26 12:35:39 -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
d42529348f
Updated proxy module import
2019-04-08 16:25:27 -04: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
Matthew Holt
3eae6d43b6
Add Validator interface
...
Modules can now verify their own configurations
2019-04-03 11:41:36 -06:00
Matthew Holt
59a5d0db28
Close listeners which are no longer used
2019-04-02 15:31:02 -06:00