Newer
Older
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import (
"fmt"
"github.com/caddyserver/caddy/v2"
"gfx.cafe/gfx/pggat/lib/fed"
"gfx.cafe/gfx/pggat/lib/gat"
"gfx.cafe/gfx/pggat/lib/perror"
"gfx.cafe/gfx/pggat/lib/util/slices"
"gfx.cafe/gfx/pggat/lib/util/strutil"
)
func init() {
caddy.RegisterModule((*Module)(nil))
}
type Module struct {
Parameters []strutil.CIString `json:"parameters"`
}
func (T *Module) CaddyModule() caddy.ModuleInfo {
return caddy.ModuleInfo{
ID: "pggat.handlers.allowed_startup_parameters",
New: func() caddy.Module {
return new(Module)
},
}
}
func (T *Module) Handle(conn *fed.Conn) error {
for parameter := range conn.InitialParameters {
if !slices.Contains(T.Parameters, parameter) {
return perror.New(
perror.FATAL,
perror.FeatureNotSupported,
fmt.Sprintf(`Startup parameter "%s" is not supported`, parameter.String()),
)
}
}
return nil
}
var _ gat.Handler = (*Module)(nil)
var _ caddy.Module = (*Module)(nil)