Add Caddyfile support for sip_guardian_admin HTTP handler
Register handler directive with httpcaddyfile and implement UnmarshalCaddyfile to enable Caddyfile configuration syntax.
This commit is contained in:
parent
b5fa007d6e
commit
0b0fb53c9c
32
admin.go
32
admin.go
@ -6,11 +6,21 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/caddyserver/caddy/v2"
|
||||
"github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
|
||||
"github.com/caddyserver/caddy/v2/caddyconfig/httpcaddyfile"
|
||||
"github.com/caddyserver/caddy/v2/modules/caddyhttp"
|
||||
)
|
||||
|
||||
func init() {
|
||||
caddy.RegisterModule(AdminHandler{})
|
||||
httpcaddyfile.RegisterHandlerDirective("sip_guardian_admin", parseSIPGuardianAdmin)
|
||||
}
|
||||
|
||||
// parseSIPGuardianAdmin parses the sip_guardian_admin directive
|
||||
func parseSIPGuardianAdmin(h httpcaddyfile.Helper) (caddyhttp.MiddlewareHandler, error) {
|
||||
var handler AdminHandler
|
||||
err := handler.UnmarshalCaddyfile(h.Dispenser)
|
||||
return &handler, err
|
||||
}
|
||||
|
||||
// AdminHandler provides HTTP endpoints to manage SIP Guardian
|
||||
@ -160,8 +170,30 @@ func (h *AdminHandler) handleBan(w http.ResponseWriter, r *http.Request, path st
|
||||
})
|
||||
}
|
||||
|
||||
// UnmarshalCaddyfile implements caddyfile.Unmarshaler for AdminHandler.
|
||||
// Usage in Caddyfile:
|
||||
//
|
||||
// handle /api/sip-guardian/* {
|
||||
// sip_guardian_admin
|
||||
// }
|
||||
//
|
||||
// Or simply: sip_guardian_admin
|
||||
func (h *AdminHandler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
|
||||
// Move past "sip_guardian_admin" token
|
||||
d.Next()
|
||||
|
||||
// This handler doesn't have any configuration options currently
|
||||
// but we need to consume any block if present
|
||||
for nesting := d.Nesting(); d.NextBlock(nesting); {
|
||||
return d.Errf("unknown sip_guardian_admin directive: %s", d.Val())
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Interface guards
|
||||
var (
|
||||
_ caddyhttp.MiddlewareHandler = (*AdminHandler)(nil)
|
||||
_ caddy.Provisioner = (*AdminHandler)(nil)
|
||||
_ caddyfile.Unmarshaler = (*AdminHandler)(nil)
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user