This repository has been archived by the owner on Mar 30, 2020. It is now read-only.
/
main.go
114 lines (98 loc) · 2.91 KB
/
main.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
108
109
110
111
112
113
114
/* {{{ Copyright (c) 2017, Paul R. Tagliamonte <paultag@gmail.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE. }}} */
package main
import (
"os"
"github.com/urfave/cli"
"pault.ag/go/cybercom/version"
)
func main() {
app := cli.NewApp()
app.Name = "cyber"
app.Usage = "read, write and manage x509 Certificates"
app.Version = version.Version
app.Flags = []cli.Flag{
cli.StringFlag{
Name: "server",
Usage: "`FQDN:PORT` to connect to",
Value: "localhost:2611",
EnvVar: "CYBERCOM_SERVER",
},
cli.BoolFlag{
Name: "insecure",
Usage: "Ignore TLS verification",
EnvVar: "CYBERCOM_INSECURE",
},
cli.StringFlag{
Name: "store",
Usage: "Backend store to use",
Value: "filesystem",
EnvVar: "CYBERCOM_STORE",
},
cli.StringFlag{
Name: "yubikey-pin",
Usage: "PIN to the Yubikey",
EnvVar: "CYBERCOM_YUBIKEY_PIN",
},
cli.BoolFlag{
Name: "yubikey-management-key-is-pin",
Usage: "Yubikey Management Key is PIN, as set by pivman",
EnvVar: "CYBERCOM_YUBIKEY_MANAGEMENT_KEY_IS_PIN",
},
cli.StringFlag{
Name: "yubikey-management-key",
Usage: "Yubikey Management Key in Hex",
EnvVar: "CYBERCOM_YUBIKEY_MANAGEMENT_KEY",
},
cli.StringFlag{
Name: "yubikey-reader",
Value: "Yubikey",
Usage: "Which Yubikey to work off of",
EnvVar: "CYBERCOM_YUBIKEY_READER",
},
cli.StringFlag{
Name: "yubikey-slot",
Value: "authentication",
Usage: "Which slot of the Yubikey to use",
EnvVar: "CYBERCOM_YUBIKEY_SLOT",
},
}
app.Commands = []cli.Command{
WhoamiCommand,
InitCommand,
RenewCommand,
GetCommand,
LsCommand,
SSHKeygenCommand,
GetCertificatesCommand,
IssueCertificateCommand,
ImportCommand,
RemindCommand,
SetStateCommand,
SetLongevityCommand,
SetExpiryCommand,
PingCommand,
CACommand,
SignCSRCommand,
CertificateBySerialCommand,
}
app.Run(os.Args)
}
// vim: foldmethod=marker