-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodule.go
107 lines (94 loc) · 2.12 KB
/
module.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package storagenomad
import (
"os"
"strconv"
"github.com/caddyserver/caddy/v2"
"github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
"github.com/caddyserver/certmagic"
)
func init() {
caddy.RegisterModule(NomadStorage{})
}
func (NomadStorage) CaddyModule() caddy.ModuleInfo {
return caddy.ModuleInfo{
ID: "caddy.storage.nomad",
New: func() caddy.Module {
return New()
},
}
}
// Provision is called by Caddy to prepare the module
func (ns *NomadStorage) Provision(ctx caddy.Context) error {
ns.logger = ctx.Logger(ns).Sugar()
ns.logger.Infof("Version 0.6 - TLS storage is using Nomad at %s", ns.Address)
if prefix := os.Getenv(EnvNamePrefix); prefix != "" {
ns.Prefix = prefix
}
if valueprefix := os.Getenv(EnvValuePrefix); valueprefix != "" {
ns.ValuePrefix = valueprefix
}
return ns.createNomadClient()
}
func (ns *NomadStorage) CertMagicStorage() (certmagic.Storage, error) {
return ns, nil
}
// UnmarshalCaddyfile parses plugin settings from Caddyfile
//
// storage nomad {
// address "http://127.0.0.1:8500"
// token "nomad-access-token"
// timeout 10
// prefix "caddytls"
// value_prefix "myprefix"
// tls_enabled "false"
// tls_insecure "true"
// }
func (ns *NomadStorage) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
for d.Next() {
key := d.Val()
var value string
if !d.Args(&value) {
continue
}
switch key {
case "address":
if value != "" {
ns.Address = value
}
case "token":
if value != "" {
ns.Token = value
}
case "timeout":
if value != "" {
timeParse, err := strconv.Atoi(value)
if err == nil {
ns.Timeout = timeParse
}
}
case "prefix":
if value != "" {
ns.Prefix = value
}
case "value_prefix":
if value != "" {
ns.ValuePrefix = value
}
case "tls_enabled":
if value != "" {
tlsParse, err := strconv.ParseBool(value)
if err == nil {
ns.TlsEnabled = tlsParse
}
}
case "tls_insecure":
if value != "" {
tlsInsecureParse, err := strconv.ParseBool(value)
if err == nil {
ns.TlsInsecure = tlsInsecureParse
}
}
}
}
return nil
}