-
Notifications
You must be signed in to change notification settings - Fork 308
/
config.go
74 lines (58 loc) · 1.42 KB
/
config.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
package openvpn
import (
"strconv"
)
func NewConfig() *Config {
return &Config{
options: make([]configOption, 0),
}
}
type Config struct {
options []configOption
}
type configOption interface {
getName() string
}
func (c *Config) AddOptions(options ...configOption) {
c.options = append(c.options, options...)
}
func (c *Config) setParam(name, value string) {
c.AddOptions(
OptionParam(name, value),
)
}
func (c *Config) setFlag(name string) {
c.AddOptions(
OptionFlag(name),
)
}
func (c *Config) SetManagementSocket(socketAddress string) {
c.setParam("management", socketAddress+" unix")
c.setFlag("management-client")
}
func (c *Config) SetPort(port int) {
c.setParam("port", strconv.Itoa(port))
}
func (c *Config) SetDevice(deviceName string) {
c.setParam("dev", deviceName)
}
func (c *Config) SetTlsCertificate(caFile, certFile, certKeyFile string) {
c.AddOptions(OptionFile("ca", caFile))
c.AddOptions(OptionFile("cert", certFile))
c.AddOptions(OptionFile("key", certKeyFile))
}
func (c *Config) SetTlsAuth(authFile string) {
c.AddOptions(OptionFile("tls-auth", authFile))
}
func (c *Config) SetKeepAlive(interval, timeout int) {
c.setParam("keepalive", strconv.Itoa(interval)+" "+strconv.Itoa(timeout))
}
func (c *Config) SetPingTimerRemote() {
c.setFlag("ping-timer-rem")
}
func (c *Config) SetPersistTun() {
c.setFlag("persist-tun")
}
func (c *Config) SetPersistKey() {
c.setFlag("persist-key")
}