diff options
author | Kali Kaneko <kali@leap.se (leap communications)> | 2019-06-13 12:43:30 +0200 |
---|---|---|
committer | Kali Kaneko <kali@leap.se (leap communications)> | 2019-06-13 12:43:30 +0200 |
commit | 05ac08d1b0f87de02d5d6c3144673994f2e2cb4b (patch) | |
tree | 4b41e844d84968f601d40a6966d35d8a26debeaa /main.go | |
parent | 3ef5a67efc3115983142ae53eb4c75dec54e9a4f (diff) |
some error handling
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 32 |
1 files changed, 30 insertions, 2 deletions
@@ -2,12 +2,21 @@ package main import ( "flag" + "fmt" + "log" "net/http" + "os" + "strconv" ) const keySize = 2048 const expiryDays = 28 +func errExit(errmsg string) { + fmt.Printf("ERROR: %s\n", errmsg) + os.Exit(1) +} + type certHandler struct { cainfo caInfo } @@ -16,15 +25,34 @@ func (ch *certHandler) certResponder(w http.ResponseWriter, r *http.Request) { ch.cainfo.CertWriter(w) } +func doFilesSanityCheck(caCrt string, caKey string) { + if _, err := os.Stat(caCrt); os.IsNotExist(err) { + errExit("cannot find caCrt file") + } + if _, err := os.Stat(caKey); os.IsNotExist(err) { + errExit("cannot find caKey file") + } +} + func main() { var caCrt = flag.String("caCrt", "", "path to the CA public key") var caKey = flag.String("caKey", "", "path to the CA private key") + var port = flag.Int("port", 8000, "port where the server will listen") flag.Parse() + if *caCrt == "" { + errExit("missing caCrt parameter") + } + if *caKey == "" { + errExit("missing caKey parameter") + } + + doFilesSanityCheck(*caCrt, *caKey) + ci := newCaInfo(*caCrt, *caKey) ch := certHandler{ci} - http.HandleFunc("/cert", ch.certResponder) - http.ListenAndServe(":8000", nil) + http.HandleFunc("/1/cert", ch.certResponder) + log.Fatal(http.ListenAndServe(":"+strconv.Itoa(*port), nil)) } |