From 05ac08d1b0f87de02d5d6c3144673994f2e2cb4b Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Thu, 13 Jun 2019 12:43:30 +0200 Subject: some error handling --- main.go | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 233a26d..ffa9c5c 100644 --- a/main.go +++ b/main.go @@ -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)) } -- cgit v1.2.3