1. 20 Jun, 2016 3 commits
    • Matthew Holt's avatar
      Refactor how caddy.Context is stored and used · a798e0c9
      Matthew Holt authored
      - Server types no longer need to store their own contexts; they are
        stored on the caddy.Instance, which means each context will be
        properly GC'ed when the instance is stopped. Server types should use
        type assertions to convert from caddy.Context to their concrete
        context type when they need to use it.
      - Pass the entire context into httpserver.GetConfig instead of only the
        Key field.
      - caddy.NewTestController now requires a server type string so it can
        create a controller with the proper concrete context associated with
        that server type.
      
      Tests still need more attention so that we can test the proper creation
      of startup functions, etc.
      a798e0c9
    • David Dyke's avatar
      Add timeout to health_check (#887) · 07b7c999
      David Dyke authored
      * Add timeout to http get on health_check
      
      * Add new test and up the timeout
      
      * Tests for change to default timeout
      
      * Only call http client once and make options more inline with current caddy directives
      07b7c999
    • Matt Holt's avatar
      Merge pull request #891 from andrewhamon/policy-cleanup · 80761796
      Matt Holt authored
      Refactor and clean up policy code
      80761796
  2. 18 Jun, 2016 1 commit
    • Andrew Hamon's avatar
      Refactor and clean up policy code · a5046297
      Andrew Hamon authored
      This commit shouldn't change any behavior. It is simply a cleanup of
      the different proxy policies. It also adds some comments explaining the
      sampling method used, since on first inspection it might not appear to
      be a uniformly random selection.
      a5046297
  3. 16 Jun, 2016 2 commits
  4. 15 Jun, 2016 1 commit
  5. 14 Jun, 2016 3 commits
    • Matt Holt's avatar
      Merge pull request #876 from hacdias/patch-1 · 0f1e5bce
      Matt Holt authored
      Add minify directive
      0f1e5bce
    • Andrew Hamon's avatar
      Balance round robin evenly when some hosts are down (#880) · fee4890e
      Andrew Hamon authored
      * Balance round robin evenly when some hosts are down
      
      Before, when load balancing across multiple hosts, if a host went down
      then the next host in line would be sent a double share of requests.
      This is because the round robin counter was only incremented once per
      request, regardless of the health of the selection. If current
      selection was unhealthy then the policy would advance to the next host,
      but this would not be reflected in the policy counter. To fix this, the
      counter is now incremented for every attempted host.
      
      This commit adds a test case that identifies the issue, and a fix.
      
      * Make robin counter private
      
      * Use a mutex to sync round robin selection
      fee4890e
    • David Dyke's avatar
      Add proxy preset: transparent (#881) · b14baf7e
      David Dyke authored
      * Add reverse_proxy preset
      
      * Update to 'transparent' preset instead of 'reverse_proxy'
      b14baf7e
  6. 13 Jun, 2016 1 commit
  7. 10 Jun, 2016 3 commits
  8. 09 Jun, 2016 2 commits
  9. 08 Jun, 2016 2 commits
  10. 07 Jun, 2016 7 commits
  11. 06 Jun, 2016 7 commits
  12. 05 Jun, 2016 2 commits
  13. 04 Jun, 2016 1 commit
    • Matthew Holt's avatar
      Rewrote Caddy from the ground up; initial commit of 0.9 branch · ac4fa2c3
      Matthew Holt authored
      These changes span work from the last ~4 months in an effort to make
      Caddy more extensible, reduce the coupling between its components, and
      lay a more robust foundation of code going forward into 1.0. A bunch of
      new features have been added, too, with even higher future potential.
      
      The most significant design change is an overall inversion of
      dependencies. Instead of the caddy package knowing about the server
      and the notion of middleware and config, the caddy package exposes an
      interface that other components plug into. This does introduce more
      indirection when reading the code, but every piece is very modular and
      pluggable. Even the HTTP server is pluggable.
      
      The caddy package has been moved to the top level, and main has been
      pushed into a subfolder called caddy. The actual logic of the main
      file has been pushed even further into caddy/caddymain/run.go so that
      custom builds of Caddy can be 'go get'able.
      
      The HTTPS logic was surgically separated into two parts to divide the
      TLS-specific code and the HTTPS-specific code. The caddytls package can
      now be used by any type of server that needs TLS, not just HTTP. I also
      added the ability to customize nearly every aspect of TLS at the site
      level rather than all sites sharing the same TLS configuration. Not all
      of this flexibility is exposed in the Caddyfile yet, but it may be in
      the future. Caddy can also generate self-signed certificates in memory
      for the convenience of a developer working on localhost who wants HTTPS.
      And Caddy now supports the DNS challenge, assuming at least one DNS
      provider is plugged in.
      
      Dozens, if not hundreds, of other minor changes swept through the code
      base as I literally started from an empty main function, copying over
      functions or files as needed, then adjusting them to fit in the new
      design. Most tests have been restored and adapted to the new API,
      but more work is needed there.
      
      A lot of what was "impossible" before is now possible, or can be made
      possible with minimal disruption of the code. For example, it's fairly
      easy to make plugins hook into another part of the code via callbacks.
      Plugins can do more than just be directives; we now have plugins that
      customize how the Caddyfile is loaded (useful when you need to get your
      configuration from a remote store).
      
      Site addresses no longer need be just a host and port. They can have a
      path, allowing you to scope a configuration to a specific path. There is
      no inheretance, however; each site configuration is distinct.
      
      Thanks to amazing work by Lucas Clemente, this commit adds experimental
      QUIC support. Turn it on using the -quic flag; your browser may have
      to be configured to enable it.
      
      Almost everything is here, but you will notice that most of the middle-
      ware are missing. After those are transferred over, we'll be ready for
      beta tests.
      
      I'm very excited to get this out. Thanks for everyone's help and
      patience these last few months. I hope you like it!!
      ac4fa2c3
  14. 03 Jun, 2016 5 commits