Skip to content

Commit 8cd1772

Browse files
Merge pull request #4 from francislavoie/caddyfile-support
Caddyfile support
2 parents 3a92c81 + b09335a commit 8cd1772

File tree

1 file changed

+47
-6
lines changed

1 file changed

+47
-6
lines changed

caddy.go

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package caddy2proxyprotocol
22

3-
import "github.com/caddyserver/caddy/v2"
4-
5-
var (
6-
_ = caddy.Provisioner(&Wrapper{})
7-
_ = caddy.Module(&Wrapper{})
8-
_ = caddy.ListenerWrapper(&Wrapper{})
3+
import (
4+
"github.com/caddyserver/caddy/v2"
5+
"github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
96
)
107

118
func init() {
@@ -18,3 +15,47 @@ func (Wrapper) CaddyModule() caddy.ModuleInfo {
1815
New: func() caddy.Module { return new(Wrapper) },
1916
}
2017
}
18+
19+
// UnmarshalCaddyfile sets up the listener wrapper from Caddyfile tokens. Syntax:
20+
//
21+
// proxy_protocol {
22+
// timeout <duration>
23+
// allow <IPs...>
24+
// }
25+
//
26+
func (w *Wrapper) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
27+
for d.Next() {
28+
// No same-line options are supported
29+
if d.NextArg() {
30+
return d.ArgErr()
31+
}
32+
33+
for d.NextBlock(0) {
34+
switch d.Val() {
35+
case "timeout":
36+
if !d.NextArg() {
37+
return d.ArgErr()
38+
}
39+
dur, err := caddy.ParseDuration(d.Val())
40+
if err != nil {
41+
return d.Errf("parsing proxy_protocol timeout duration: %v", err)
42+
}
43+
w.Timeout = caddy.Duration(dur)
44+
45+
case "allow":
46+
w.Allow = append(w.Allow, d.RemainingArgs()...)
47+
48+
default:
49+
return d.ArgErr()
50+
}
51+
}
52+
}
53+
return nil
54+
}
55+
56+
var (
57+
_ caddy.Provisioner = (*Wrapper)(nil)
58+
_ caddy.Module = (*Wrapper)(nil)
59+
_ caddy.ListenerWrapper = (*Wrapper)(nil)
60+
_ caddyfile.Unmarshaler = (*Wrapper)(nil)
61+
)

0 commit comments

Comments
 (0)