@marcel91200 / caddy Mirror · read-only / commits / 0cbf467b
Fork 0

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

Mirrored from https://github.com/Slazee/caddy.git

Synced Nov 14, 05:15 UTC

caddyhttp: Add time.now placeholder and update cel-go (closes #2594)

Matthew Holt committed May 21, 2020 at 18:19 UTC 0cbf467b3fbde471e5ee67680fb98a9af2a9b16e
4 files changed +11 -3
go.mod
+2 -1
@@ -11,7 +11,8 @@ require (
11 github.com/go-acme/lego/v3 v3.7.0
12 github.com/go-chi/chi v4.1.1+incompatible
13 github.com/gogo/protobuf v1.3.1
14 - github.com/google/cel-go v0.5.0
14 + github.com/golang/protobuf v1.3.4
15 + github.com/google/cel-go v0.5.1
16 github.com/jsternberg/zap-logfmt v1.2.0
17 github.com/klauspost/compress v1.10.5
18 github.com/klauspost/cpuid v1.2.4
go.sum
+2 -2
@@ -286,8 +286,8 @@ github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039/go.mod h1:qOQCunE
286 github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ=
287 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
288 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
289 -github.com/google/cel-go v0.5.0 h1:mKsiw/KmT+VlDZnYFd2SE5ULrbe8RPlb0rHBem2Bv7I=
290 -github.com/google/cel-go v0.5.0/go.mod h1:9SvtVVTtZV4DTB1/RuAD1D2HhuqEIdmZEE/r/lrFyKE=
289 +github.com/google/cel-go v0.5.1 h1:oDsbtAwlwFPEcC8dMoRWNuVzWJUDeDZeHjoet9rXjTs=
290 +github.com/google/cel-go v0.5.1/go.mod h1:9SvtVVTtZV4DTB1/RuAD1D2HhuqEIdmZEE/r/lrFyKE=
291 github.com/google/cel-spec v0.4.0/go.mod h1:2pBM5cU4UKjbPDXBgwWkiwBsVgnxknuEJ7C5TDWwORQ=
292 github.com/google/certificate-transparency-go v1.1.0/go.mod h1:i+Q7XY+ArBveOUT36jiHGfuSK1fHICIg6sUkRxPAbCs=
293 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
modules/caddyhttp/celmatcher.go
+5
@@ -21,10 +21,12 @@ import (
21 "reflect"
22 "regexp"
23 "strings"
24 + "time"
25
26 "github.com/caddyserver/caddy/v2"
27 "github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
28 "github.com/gogo/protobuf/proto"
29 + "github.com/golang/protobuf/ptypes/timestamp"
30 "github.com/google/cel-go/cel"
31 "github.com/google/cel-go/checker/decls"
32 "github.com/google/cel-go/common/types"
@@ -204,6 +206,9 @@ func (celTypeAdapter) NativeToValue(value interface{}) ref.Val {
206 switch v := value.(type) {
207 case celHTTPRequest:
208 return v
209 + case time.Time:
210 + // TODO: eliminate direct protobuf dependency, sigh -- just wrap stdlib time.Time instead...
211 + return types.Timestamp{Timestamp: &timestamp.Timestamp{Seconds: v.Unix(), Nanos: int32(v.Nanosecond())}}
212 case error:
213 types.NewErr(v.Error())
214 }
replacer.go
+2
@@ -276,6 +276,8 @@ func globalDefaultReplacements(key string) (interface{}, bool) {
276 return runtime.GOOS, true
277 case "system.arch":
278 return runtime.GOARCH, true
279 + case "time.now":
280 + return nowFunc(), true
281 case "time.now.common_log":
282 return nowFunc().Format("02/Jan/2006:15:04:05 -0700"), true
283 case "time.now.year":