-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathtls.go
More file actions
146 lines (109 loc) · 3.25 KB
/
tls.go
File metadata and controls
146 lines (109 loc) · 3.25 KB
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package parser
import (
docopt "github.com/docopt/docopt-go"
"github.com/drycc/workflow-cli/cmd"
)
// TLS routes tls commands to their specific function.
func TLS(argv []string, cmdr cmd.Commander) error {
usage := `
Valid commands for tls:
tls:info view info about an application's TLS settings
tls:force:enable enables the router to enforce https-only requests to an application
tls:force:disable disables the router to enforce https-only requests to an application
tls:auto:enable enables the router to automatic generation of certificates to an application
tls:auto:disable disables the router to automatic generation of certificates to an application
Use 'drycc help [command]' to learn more.
`
switch argv[0] {
case "tls:info":
return tlsInfo(argv, cmdr)
case "tls:force:enable":
return tlsForceEnable(argv, cmdr)
case "tls:force:disable":
return tlsForceDisable(argv, cmdr)
case "tls:auto:enable":
return tlsAutoEnable(argv, cmdr)
case "tls:auto:disable":
return tlsAutoDisable(argv, cmdr)
default:
if printHelp(argv, usage) {
return nil
}
if argv[0] == "tls" {
argv[0] = "tls:info"
return tlsInfo(argv, cmdr)
}
PrintUsage(cmdr)
return nil
}
}
func tlsInfo(argv []string, cmdr cmd.Commander) error {
usage := `
Prints info about the current application's TLS settings.
Usage: drycc tls:info [options]
Options:
-a --app=<app>
the uniquely identifiable name for the application.
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
return cmdr.TLSInfo(safeGetValue(args, "--app"))
}
func tlsForceEnable(argv []string, cmdr cmd.Commander) error {
usage := `
Enable the router to enforce https-only requests to the current application.
Usage: drycc tls:force:enable [options]
Options:
-a --app=<app>
the uniquely identifiable name for the application.
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
return cmdr.TLSForceEnable(safeGetValue(args, "--app"))
}
func tlsForceDisable(argv []string, cmdr cmd.Commander) error {
usage := `
Disable the router from enforcing https-only requests to the current application.
Usage: drycc tls:force:disable [options]
Options:
-a --app=<app>
the uniquely identifiable name for the application.
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
return cmdr.TLSForceDisable(safeGetValue(args, "--app"))
}
func tlsAutoEnable(argv []string, cmdr cmd.Commander) error {
usage := `
Enable certs-auto requests to current application.
Usage: drycc tls:auto:enable [options]
Options:
-a --app=<app>
the uniquely identifiable name for the application.
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
return cmdr.TLSAutoEnable(safeGetValue(args, "--app"))
}
func tlsAutoDisable(argv []string, cmdr cmd.Commander) error {
usage := `
Disable certs-auto requests to current application.
Usage: drycc tls:auto:disable [options]
Options:
-a --app=<app>
the uniquely identifiable name for the application.
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
return cmdr.TLSAutoDisable(safeGetValue(args, "--app"))
}