From 90a302f5580f32635d20e5d13aba5f0c74c5643e Mon Sep 17 00:00:00 2001 From: Garet Halliday <me@garet.holiday> Date: Sun, 1 Oct 2023 22:13:08 -0500 Subject: [PATCH] better --- entrypoint.sh | 6 +----- lib/gat/gatcaddyfile/handler.go | 12 +++++++++++ lib/gat/handlers/error/module.go | 36 ++++++++++++++++++++++++++++++++ lib/gat/standard/standard.go | 1 + presets/default.Caddyfile | 3 +++ 5 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 lib/gat/handlers/error/module.go create mode 100644 presets/default.Caddyfile diff --git a/entrypoint.sh b/entrypoint.sh index 560b199c..20dddc10 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -4,9 +4,5 @@ set -e EXEC_BIN_PATH=${PGGAT_BIN_PATH:=/usr/bin/pggat} pggat() { - if [[ ! -v "${PGGAT_RUN_MODE}" ]]; then - exec $EXEC_BIN_PATH run - else - exec $EXEC_BIN_PATH run --adapter="caddyfile" --config="/presets/${PGGAT_RUN_MODE}.Caddyfile" - fi + exec $EXEC_BIN_PATH run --adapter="caddyfile" --config="/presets/${PGGAT_RUN_MODE:-default}.Caddyfile" } diff --git a/lib/gat/gatcaddyfile/handler.go b/lib/gat/gatcaddyfile/handler.go index cc8d4255..c98074c1 100644 --- a/lib/gat/gatcaddyfile/handler.go +++ b/lib/gat/gatcaddyfile/handler.go @@ -1,6 +1,7 @@ package gatcaddyfile import ( + error_handler "gfx.cafe/gfx/pggat/lib/gat/handlers/error" "gfx.cafe/gfx/pggat/lib/gat/handlers/pgbouncer_spilo" "strconv" "strings" @@ -106,6 +107,17 @@ func init() { Value: value, }, nil }) + RegisterDirective(Handler, "error", func(d *caddyfile.Dispenser, _ *[]caddyconfig.Warning) (caddy.Module, error) { + if !d.NextArg() { + return nil, d.ArgErr() + } + + message := d.Val() + + return &error_handler.Module{ + Message: message, + }, nil + }) RegisterDirective(Handler, "pgbouncer", func(d *caddyfile.Dispenser, _ *[]caddyconfig.Warning) (caddy.Module, error) { var config = "pgbouncer.ini" if d.NextArg() { diff --git a/lib/gat/handlers/error/module.go b/lib/gat/handlers/error/module.go new file mode 100644 index 00000000..b8eedbf7 --- /dev/null +++ b/lib/gat/handlers/error/module.go @@ -0,0 +1,36 @@ +package error_handler + +import ( + "gfx.cafe/gfx/pggat/lib/fed" + "gfx.cafe/gfx/pggat/lib/gat" + "gfx.cafe/gfx/pggat/lib/perror" + "github.com/caddyserver/caddy/v2" +) + +func init() { + caddy.RegisterModule((*Module)(nil)) +} + +type Module struct { + Message string `json:"message"` +} + +func (T *Module) CaddyModule() caddy.ModuleInfo { + return caddy.ModuleInfo{ + ID: "pggat.handlers.error", + New: func() caddy.Module { + return new(Module) + }, + } +} + +func (T *Module) Handle(_ *fed.Conn) error { + return perror.New( + perror.FATAL, + perror.InternalError, + T.Message, + ) +} + +var _ gat.Handler = (*Module)(nil) +var _ caddy.Module = (*Module)(nil) diff --git a/lib/gat/standard/standard.go b/lib/gat/standard/standard.go index fd5bce70..a010bc7a 100644 --- a/lib/gat/standard/standard.go +++ b/lib/gat/standard/standard.go @@ -16,6 +16,7 @@ import ( // middlewares _ "gfx.cafe/gfx/pggat/lib/gat/handlers/allowed_startup_parameters" + _ "gfx.cafe/gfx/pggat/lib/gat/handlers/error" _ "gfx.cafe/gfx/pggat/lib/gat/handlers/require_ssl" _ "gfx.cafe/gfx/pggat/lib/gat/handlers/rewrite_database" _ "gfx.cafe/gfx/pggat/lib/gat/handlers/rewrite_parameter" diff --git a/presets/default.Caddyfile b/presets/default.Caddyfile new file mode 100644 index 00000000..f0e4d676 --- /dev/null +++ b/presets/default.Caddyfile @@ -0,0 +1,3 @@ +:5432 { + error "server is not configured" +} -- GitLab