[Backend] Reload Caddy via dbus

This commit is contained in:
Pacerino
2022-10-04 11:49:00 +02:00
parent 766975f52b
commit 906e8a0ba2
3 changed files with 21 additions and 30 deletions

View File

@@ -35,9 +35,11 @@ require (
)
require (
github.com/coreos/go-systemd/v22 v22.4.0
github.com/fatih/color v1.13.0
github.com/go-chi/chi/v5 v5.0.7
github.com/go-chi/cors v1.2.1
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/mattn/go-sqlite3 v1.14.15 // indirect
github.com/qri-io/jsonschema v0.2.1
github.com/vrischmann/envconfig v1.3.0

View File

@@ -1,5 +1,7 @@
github.com/aymerick/raymond v2.0.2+incompatible h1:VEp3GpgdAnv9B2GFyTvqgcKvY+mfKMjPOA3SbKLtnU0=
github.com/aymerick/raymond v2.0.2+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
github.com/coreos/go-systemd/v22 v22.4.0 h1:y9YHcjnjynCd/DVbg5j9L/33jQM3MxJlbj/zWskzfGU=
github.com/coreos/go-systemd/v22 v22.4.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -26,6 +28,9 @@ github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJ
github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
github.com/goccy/go-json v0.7.6 h1:H0wq4jppBQ+9222sk5+hPLL25abZQiRuQ6YPnjO9c+A=
github.com/goccy/go-json v0.7.6/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=

View File

@@ -1,44 +1,28 @@
package caddy
import (
"fmt"
"os/exec"
"context"
"time"
"github.com/Pacerino/CaddyProxyManager/internal/config"
"github.com/Pacerino/CaddyProxyManager/internal/logger"
"github.com/coreos/go-systemd/v22/dbus"
)
func ReloadCaddy() error {
_, err := shExec([]string{"reload", "--config", config.Configuration.CaddyFile})
return err
}
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
func getCaddyFilePath() (string, error) {
path, err := exec.LookPath("caddy")
conn, err := dbus.NewSystemdConnectionContext(ctx)
if err != nil {
return path, fmt.Errorf("cannot find caddy execuatable script in PATH")
return err
}
return path, nil
}
// shExec executes caddy with arguments
func shExec(args []string) (string, error) {
ng, err := getCaddyFilePath()
defer conn.Close()
resChan := make(chan string)
_, err = conn.ReloadOrRestartUnitContext(ctx, "caddy.service", "replace", resChan)
if err != nil {
logger.Error("CaddyError", err)
return "", err
logger.Error("", err)
return err
}
logger.Debug("CMD: %s %v", ng, args)
// nolint: gosec
c := exec.Command(ng, args...)
b, e := c.Output()
if e != nil {
logger.Error("CaddyError", fmt.Errorf("command error: %s -- %v\n%+v", ng, args, e))
logger.Warn(string(b))
}
return string(b), e
<-resChan
return nil
}