From 4e89c0c2c30038fc1488c28e784c583b1af9fbc8 Mon Sep 17 00:00:00 2001 From: adrien Date: Tue, 19 Nov 2019 18:29:30 +0100 Subject: [PATCH] Write status checker Signed-off-by: adrien --- bin/.keep | 0 cmd/xavier-srv/main.go | 53 ++++++++++++++++++++++++++++++++++++++ examples/etc/xavier-srv/check.json | 14 ++++++++++ examples/etc/xavier-srv/check.toml | 5 ++++ 4 files changed, 72 insertions(+) create mode 100644 bin/.keep create mode 100644 cmd/xavier-srv/main.go create mode 100644 examples/etc/xavier-srv/check.json create mode 100644 examples/etc/xavier-srv/check.toml diff --git a/bin/.keep b/bin/.keep new file mode 100644 index 0000000..e69de29 diff --git a/cmd/xavier-srv/main.go b/cmd/xavier-srv/main.go new file mode 100644 index 0000000..16645ee --- /dev/null +++ b/cmd/xavier-srv/main.go @@ -0,0 +1,53 @@ +package main + +import ( + "fmt" + "errors" + "strconv" + "net/http" +) + +func main() { + fmt.Println(cerebro("https://test.iglou.eu", 200)) + fmt.Println(cerebro("https://iglou.eu", 200)) + fmt.Println(cerebro("https://iglou.eu", 301)) + fmt.Println(cerebro("https://git.iglou.eu", 200)) + fmt.Println(cerebro("https://media.iglou.eu", 200)) + fmt.Println(cerebro("https://51.15.11.133", 200)) +} + +func httpStatus(url string, need int) (bool, error) { + client := &http.Client{ + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }} + + resp, err := client.Head(url) + + if err == nil { + statusCode := (need == resp.StatusCode) + + if statusCode { + return true, nil + } else { + return false, errors.New("Head " + url + ": Response " + strconv.Itoa(resp.StatusCode) + ": Expected status code " + strconv.Itoa(need)) + } + } + + return false, err +} + +func cerebro(url string, need int) (bool) { + xPsyAgatha, err := httpStatus(url, need) + xPsyArthur, _ := httpStatus(url, need) + xPsyDash , _ := httpStatus(url, need) + + if (xPsyAgatha && xPsyArthur) || + (xPsyAgatha && xPsyDash) || + (xPsyArthur && xPsyDash) { + return true + } + + fmt.Println(err) + return false +} diff --git a/examples/etc/xavier-srv/check.json b/examples/etc/xavier-srv/check.json new file mode 100644 index 0000000..7a8daa1 --- /dev/null +++ b/examples/etc/xavier-srv/check.json @@ -0,0 +1,14 @@ +{ + "groupe1": { + "try": { + "appName": [301, "https://iglou.eu"] + }, + "err": {} + }, + "groupe2": { + "try": { + "appName": [200, "https://iglou.eu"] + }, + "err": {} + } +} diff --git a/examples/etc/xavier-srv/check.toml b/examples/etc/xavier-srv/check.toml new file mode 100644 index 0000000..681ca9c --- /dev/null +++ b/examples/etc/xavier-srv/check.toml @@ -0,0 +1,5 @@ +[app.groupe] +enable = true +ssl_check = true +error = [] +server.name = []