diff options
author | Emily <git@emilylange.de> | 2023-08-06 02:09:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-06 00:09:16 +0000 |
commit | 8d304a4566de36219b31e1cb5a636431362c673c (patch) | |
tree | 3d547443cdfe68e108fb40f0b4400941d59499d2 /cmd | |
parent | 65e33fc1ee4798bb3450f6e291bfc88404982636 (diff) |
cmd: Split unix sockets for admin endpoint addresses (#5696)
* cmd: fix cli when admin endpoint uses new unix socket permission format
Fixes a bug where the following Caddyfile
```Caddyfile
{
admin unix/admin.sock|0660
}
```
and `caddy reload --config Caddyfile`
would throw the following error instead of reloading it:
```
INFO using provided configuration {"config_file": "Caddyfile", "config_adapter": ""}
Error: sending configuration to instance: performing request: Post "http://127.0.0.1/load": dial unix admin.sock|0660: connect: no such file or directory
[ERROR] exit status 1
```
---
This bug also affected `caddy start` and `caddy stop`.
* Move splitter function to internal
---------
Co-authored-by: Matthew Holt <mholt@users.noreply.github.com>
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/commandfuncs.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/cmd/commandfuncs.go b/cmd/commandfuncs.go index 68b099e..dde870b 100644 --- a/cmd/commandfuncs.go +++ b/cmd/commandfuncs.go @@ -35,6 +35,7 @@ import ( "github.com/caddyserver/caddy/v2" "github.com/caddyserver/caddy/v2/caddyconfig" "github.com/caddyserver/caddy/v2/caddyconfig/caddyfile" + "github.com/caddyserver/caddy/v2/internal" "go.uber.org/zap" ) @@ -611,6 +612,16 @@ func AdminAPIRequest(adminAddr, method, uri string, headers http.Header, body io origin := "http://" + parsedAddr.JoinHostPort(0) if parsedAddr.IsUnixNetwork() { origin = "http://127.0.0.1" // bogus host is a hack so that http.NewRequest() is happy + + // the unix address at this point might still contain the optional + // unix socket permissions, which are part of the address/host. + // those need to be removed first, as they aren't part of the + // resulting unix file path + addr, _, err := internal.SplitUnixSocketPermissionsBits(parsedAddr.Host) + if err != nil { + return nil, err + } + parsedAddr.Host = addr } // form the request |