summaryrefslogtreecommitdiff
path: root/vendor/github.com/sjtug/cerberus/directives/caddyfile.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/sjtug/cerberus/directives/caddyfile.go')
-rw-r--r--vendor/github.com/sjtug/cerberus/directives/caddyfile.go237
1 files changed, 0 insertions, 237 deletions
diff --git a/vendor/github.com/sjtug/cerberus/directives/caddyfile.go b/vendor/github.com/sjtug/cerberus/directives/caddyfile.go
deleted file mode 100644
index af0ef64..0000000
--- a/vendor/github.com/sjtug/cerberus/directives/caddyfile.go
+++ /dev/null
@@ -1,237 +0,0 @@
-package directives
-
-import (
- "time"
-
- "github.com/caddyserver/caddy/v2/caddyconfig"
- "github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
- "github.com/caddyserver/caddy/v2/caddyconfig/httpcaddyfile"
- "github.com/caddyserver/caddy/v2/modules/caddyhttp"
- "github.com/dustin/go-humanize"
- "github.com/sjtug/cerberus/core"
- "github.com/sjtug/cerberus/internal/ipblock"
-)
-
-func (c *App) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
- d.Next() // consume the directive
-
- for nesting := d.Nesting(); d.NextBlock(nesting); {
- switch d.Val() {
- case "difficulty":
- if !d.NextArg() {
- return d.ArgErr()
- }
- difficulty, ok := d.ScalarVal().(int)
- if !ok {
- return d.Errf("difficulty must be an integer")
- }
- c.Difficulty = difficulty
- case "drop":
- if !d.NextArg() {
- c.Drop = true
- continue
- }
- drop, ok := d.ScalarVal().(bool)
- if !ok {
- return d.Errf("drop must be a boolean")
- }
- c.Drop = drop
- case "ed25519_key_file":
- if !d.NextArg() {
- return d.ArgErr()
- }
- ed25519KeyFile, ok := d.ScalarVal().(string)
- if !ok {
- return d.Errf("ed25519_key_file must be a string")
- }
- c.Ed25519KeyFile = ed25519KeyFile
- case "max_pending":
- if !d.NextArg() {
- return d.ArgErr()
- }
- maxPending, ok := d.ScalarVal().(int)
- if !ok {
- return d.Errf("max_pending must be an integer")
- }
- c.MaxPending = int32(maxPending) // #nosec G115 -- trusted input
- case "access_per_approval":
- if !d.NextArg() {
- return d.ArgErr()
- }
- accessPerApproval, ok := d.ScalarVal().(int)
- if !ok {
- return d.Errf("access_per_approval must be an integer")
- }
- c.AccessPerApproval = int32(accessPerApproval) // #nosec G115 -- trusted input
- case "block_ttl":
- if !d.NextArg() {
- return d.ArgErr()
- }
- blockTTLRaw, ok := d.ScalarVal().(string)
- if !ok {
- return d.Errf("block_ttl must be a string")
- }
- blockTTL, err := time.ParseDuration(blockTTLRaw)
- if err != nil {
- return d.Errf("block_ttl must be a valid duration: %v", err)
- }
- c.BlockTTL = blockTTL
- case "pending_ttl":
- if !d.NextArg() {
- return d.ArgErr()
- }
- pendingTTLRaw, ok := d.ScalarVal().(string)
- if !ok {
- return d.Errf("pending_ttl must be a string")
- }
- pendingTTL, err := time.ParseDuration(pendingTTLRaw)
- if err != nil {
- return d.Errf("pending_ttl must be a valid duration: %v", err)
- }
- c.PendingTTL = pendingTTL
- case "approval_ttl":
- if !d.NextArg() {
- return d.ArgErr()
- }
- approvalTTLRaw, ok := d.ScalarVal().(string)
- if !ok {
- return d.Errf("approval_ttl must be a string")
- }
- approvalTTL, err := time.ParseDuration(approvalTTLRaw)
- if err != nil {
- return d.Errf("approval_ttl must be a valid duration: %v", err)
- }
- c.ApprovalTTL = approvalTTL
- case "max_mem_usage":
- if !d.NextArg() {
- return d.ArgErr()
- }
- maxMemUsageRaw, ok := d.ScalarVal().(string)
- if !ok {
- return d.Errf("max_mem_usage must be a string")
- }
- maxMemUsage, err := humanize.ParseBytes(maxMemUsageRaw)
- if err != nil {
- return d.Errf("max_mem_usage must be a valid size: %v", err)
- }
- c.MaxMemUsage = int64(maxMemUsage) // #nosec G115 -- trusted input
- case "cookie_name":
- if !d.NextArg() {
- return d.ArgErr()
- }
- cookieName, ok := d.ScalarVal().(string)
- if !ok {
- return d.Errf("cookie_name must be a string")
- }
- c.CookieName = cookieName
- case "header_name":
- if !d.NextArg() {
- return d.ArgErr()
- }
- headerName, ok := d.ScalarVal().(string)
- if !ok {
- return d.Errf("header_name must be a string")
- }
- c.HeaderName = headerName
- case "title":
- if !d.NextArg() {
- return d.ArgErr()
- }
- title, ok := d.ScalarVal().(string)
- if !ok {
- return d.Errf("title must be a string")
- }
- c.Title = title
- case "prefix_cfg":
- if !d.NextArg() {
- return d.ArgErr()
- }
- v4Prefix, ok := d.ScalarVal().(int)
- if !ok {
- return d.Errf("prefix_cfg must be followed by two integers")
- }
- if !d.NextArg() {
- return d.ArgErr()
- }
- v6Prefix, ok := d.ScalarVal().(int)
- if !ok {
- return d.Errf("prefix_cfg must be followed by two integers")
- }
- c.PrefixCfg = ipblock.Config{
- V4Prefix: v4Prefix,
- V6Prefix: v6Prefix,
- }
- case "mail":
- if !d.NextArg() {
- return d.ArgErr()
- }
- mail, ok := d.ScalarVal().(string)
- if !ok {
- return d.Errf("mail must be a string")
- }
- c.Mail = mail
- default:
- return d.Errf("unknown subdirective '%s'", d.Val())
- }
- }
-
- return nil
-}
-
-func ParseCaddyFileApp(d *caddyfile.Dispenser, _ any) (any, error) {
- var c App
- err := c.UnmarshalCaddyfile(d)
- return httpcaddyfile.App{
- Name: core.AppName,
- Value: caddyconfig.JSON(c, nil),
- }, err
-}
-
-func (m *Middleware) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
- d.Next() // consume the directive
-
- for nesting := d.Nesting(); d.NextBlock(nesting); {
- switch d.Val() {
- case "base_url":
- if !d.NextArg() {
- return d.ArgErr()
- }
- baseURL, ok := d.ScalarVal().(string)
- if !ok {
- return d.Errf("base_url must be a string")
- }
- m.BaseURL = baseURL
- case "block_only":
- if !d.NextArg() {
- m.BlockOnly = true
- continue
- }
- blockOnly, ok := d.ScalarVal().(bool)
- if !ok {
- return d.Errf("block_only must be a boolean")
- }
- m.BlockOnly = blockOnly
- default:
- return d.Errf("unknown subdirective '%s'", d.Val())
- }
- }
- return nil
-}
-
-func ParseCaddyFileMiddleware(h httpcaddyfile.Helper) (caddyhttp.MiddlewareHandler, error) {
- var m Middleware
- err := m.UnmarshalCaddyfile(h.Dispenser)
- return &m, err
-}
-
-func (e *Endpoint) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
- d.Next() // consume the directive
-
- return nil
-}
-
-func ParseCaddyFileEndpoint(h httpcaddyfile.Helper) (caddyhttp.MiddlewareHandler, error) {
- var e Endpoint
- err := e.UnmarshalCaddyfile(h.Dispenser)
- return &e, err
-}