From 8fab2beab9720b7615784be7e73dc7791bc013b2 Mon Sep 17 00:00:00 2001 From: Serge Bazanski Date: Thu, 25 Oct 2018 23:37:37 +0200 Subject: [PATCH] statusz: fix executable sha256 --- go/Gopkg.lock | 10 +--------- go/Gopkg.toml | 4 ---- go/mirko/README | 2 +- go/mirko/mirko.go | 2 +- go/statusz/README.md | 4 ++-- go/statusz/statusz.go | 24 ++++++++++++++++-------- go/svc/topo/service.go | 10 ++++------ 7 files changed, 25 insertions(+), 31 deletions(-) diff --git a/go/Gopkg.lock b/go/Gopkg.lock index 583f199..01cdbba 100644 --- a/go/Gopkg.lock +++ b/go/Gopkg.lock @@ -251,14 +251,6 @@ revision = "645ef00459ed84a119197bfb8d8205042c6df63d" version = "v0.8.0" -[[projects]] - branch = "master" - digest = "1:a7cc4447e0c2432f217fd2bed937c100ec475272a7a9306477170c2934297357" - name = "github.com/q3k/statusz" - packages = ["."] - pruneopts = "UT" - revision = "924f04ea71149b75f5b10f426cc4c39d6d90f6f2" - [[projects]] branch = "master" digest = "1:8f042d4b4c48d38d7a1201096299bd26d044c97c032ab20ee171fe5b0d201d2e" @@ -436,7 +428,7 @@ "github.com/golang/glog", "github.com/golang/protobuf/proto", "github.com/golang/protobuf/protoc-gen-go", - "github.com/q3k/statusz", + "github.com/shirou/gopsutil/load", "github.com/ybbus/jsonrpc", "github.com/ziutek/telnet", "golang.org/x/net/context", diff --git a/go/Gopkg.toml b/go/Gopkg.toml index 7f8e8c3..d6195ad 100644 --- a/go/Gopkg.toml +++ b/go/Gopkg.toml @@ -46,10 +46,6 @@ required = ["github.com/golang/protobuf/protoc-gen-go", "github.com/gobuffalo/pa name = "github.com/golang/protobuf" version = "1.2.0" -[[constraint]] - branch = "master" - name = "github.com/q3k/statusz" - [[constraint]] name = "github.com/ybbus/jsonrpc" version = "2.1.2" diff --git a/go/mirko/README b/go/mirko/README index ba8be71..556c147 100644 --- a/go/mirko/README +++ b/go/mirko/README @@ -49,6 +49,6 @@ The following flags are automatically registered: The following debug HTTP handlers are installed: - - `/debug/status`: show the [statusz](https://github.com/q3k/statusz) page + - `/debug/status`: show the statusz page - `/debug/requests`: show the [net/trace](https://godoc.org/golang.org/x/net/trace) page (including gRPC traces) diff --git a/go/mirko/mirko.go b/go/mirko/mirko.go index 46c2987..2e62c3d 100644 --- a/go/mirko/mirko.go +++ b/go/mirko/mirko.go @@ -11,8 +11,8 @@ import ( "time" "code.hackerspace.pl/hscloud/go/pki" + "code.hackerspace.pl/hscloud/go/statusz" "github.com/golang/glog" - "github.com/q3k/statusz" "golang.org/x/net/trace" "google.golang.org/grpc" "google.golang.org/grpc/reflection" diff --git a/go/statusz/README.md b/go/statusz/README.md index 4743c55..ea77db9 100644 --- a/go/statusz/README.md +++ b/go/statusz/README.md @@ -10,7 +10,7 @@ For the basic status page, just include the module. ```go import ( - _ "github.com/q3k/statusz" + _ "code.hackerspace.pl/hscloud/go/statusz" ) func main() { @@ -25,7 +25,7 @@ To add a section to the status page, call `AddStatusSection` like so: ```go import ( - statusz "github.com/q3k/statusz" + "code.hackerspace.pl/hscloud/go/statusz" ) diff --git a/go/statusz/statusz.go b/go/statusz/statusz.go index 606d244..6c0fe17 100644 --- a/go/statusz/statusz.go +++ b/go/statusz/statusz.go @@ -178,15 +178,23 @@ func init() { } username = fmt.Sprintf("%s (%s)", user.Username, user.Uid) - f, err := os.Open(os.Args[0]) - if err != nil { - glog.Fatalf("os.Open(%q): %v", os.Args[0], err) + exec, err := os.Executable() + if err == nil { + f, err := os.Open(exec) + if err == nil { + h := sha256.New() + if _, err := io.Copy(h, f); err != nil { + glog.Fatalf("io.Copy: %v", err) + } + binaryHash = fmt.Sprintf("%x", h.Sum(nil)) + } else { + glog.Errorf("Could not get SHA256 of binary: os.Open(%q): %v", exec, err) + binaryHash = "could not read executable" + } + } else { + glog.Errorf("Could not get SHA256 of binary: os.Executable(): %v", err) + binaryHash = "could not get executable" } - h := sha256.New() - if _, err := io.Copy(h, f); err != nil { - glog.Fatalf("io.Copy: %v", err) - } - binaryHash = fmt.Sprintf("%x", h.Sum(nil)) if DefaultMux { http.HandleFunc("/debug/status", StatusHandler) diff --git a/go/svc/topo/service.go b/go/svc/topo/service.go index 15e71fe..571eb97 100644 --- a/go/svc/topo/service.go +++ b/go/svc/topo/service.go @@ -8,14 +8,12 @@ import ( "strings" "code.hackerspace.pl/hscloud/go/mirko" - "github.com/gobuffalo/packr" - "github.com/q3k/statusz" - "vbom.ml/util/sortorder" - + ipb "code.hackerspace.pl/hscloud/go/proto/infra" + "code.hackerspace.pl/hscloud/go/statusz" "code.hackerspace.pl/hscloud/go/svc/topo/graph" "code.hackerspace.pl/hscloud/go/svc/topo/state" - - ipb "code.hackerspace.pl/hscloud/go/proto/infra" + "github.com/gobuffalo/packr" + "vbom.ml/util/sortorder" ) type Service struct {