aboutsummaryrefslogtreecommitdiff
path: root/echo/middleware/xff.go
diff options
context:
space:
mode:
Diffstat (limited to 'echo/middleware/xff.go')
-rw-r--r--echo/middleware/xff.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/echo/middleware/xff.go b/echo/middleware/xff.go
new file mode 100644
index 0000000..d110e12
--- /dev/null
+++ b/echo/middleware/xff.go
@@ -0,0 +1,20 @@
1package middleware
2
3import (
4 "net"
5
6 "github.com/labstack/echo/v4"
7)
8
9func ExtractIPFromXFFHeaders(trustLinkLocal bool, ips []string) (echo.IPExtractor, error) {
10 xffOpts := []echo.TrustOption{echo.TrustLinkLocal(trustLinkLocal)}
11 for _, r := range ips {
12 _, pn, err := net.ParseCIDR(r)
13 if err != nil {
14 return nil, err
15 }
16 xffOpts = append(xffOpts, echo.TrustIPRange(pn))
17 }
18
19 return echo.ExtractIPFromXFFHeader(xffOpts...), nil
20}