···2233import (
44 "fmt"
55+ "log/slog"
56 "net"
67 "net/http"
78 "strconv"
···1314 "github.com/caddyserver/caddy/v2/caddyconfig/httpcaddyfile"
1415 "github.com/caddyserver/caddy/v2/modules/caddyhttp"
1516 "go.uber.org/zap"
1717+ "go.uber.org/zap/exp/zapslog"
1618)
17191820func init() {
···4850func (m *AnubisMiddleware) Provision(ctx caddy.Context) error {
4951 m.log = ctx.Logger(m)
50525151- // slog.SetLogLoggerLevel(slog.LevelDebug) // TODO: customizable log level
5353+ // TODO: figure out a better level for this
5454+ zs := zapslog.NewHandler(m.log.Core(), zapslog.AddStacktraceAt(slog.LevelError + 1))
5555+5656+ // TODO: don't set the global slog logger
5757+ // currently, anubis does not allow custom loggers (https://github.com/TecharoHQ/anubis/issues/864)
5858+ sl := slog.New(zs)
5959+ slog.SetDefault(sl)
52605361 m.log.Debug("loading anubis policies", zap.String("policy_file", m.PolicyFname), zap.Int("default_difficulty", m.DefaultDifficulty))
5462 policy, err := libanubis.LoadPoliciesOrDefault(ctx, m.PolicyFname, m.DefaultDifficulty)
···89979098 m.DefaultDifficulty = anubis.DefaultDifficulty
9199 m.Options.CookieExpiration = anubis.CookieDefaultExpirationTime
9292- m.Options.CookieSecure = true // TODO: temporary
100100+ m.Options.CookieSecure = true // TODO: set this only on https upstreams
9310194102 for nesting := d.Nesting(); d.NextBlock(nesting); {
95103 var err error
-4
example/Caddyfile
···11localhost {
22- log {
33- level debug
44- }
55-62 @anubis {
73 # This matcher allows you to select specific paths for Anubis to handle.
84 # If you want to handle all paths, remove this block and use `anubis {...}` instead!