feat: report corrupt update files

This commit is contained in:
James Houlahan
2021-01-15 10:31:19 +01:00
parent b9ee4a152a
commit adcf0827ee
4 changed files with 50 additions and 16 deletions

View File

@ -18,6 +18,7 @@
package main
import (
"fmt"
"os"
"os/exec"
"path/filepath"
@ -43,9 +44,9 @@ var (
)
func main() { // nolint[funlen]
sentryReporter := sentry.NewReporter(appName, constants.Version)
reporter := sentry.NewReporter(appName, constants.Version)
crashHandler := crash.NewHandler(sentryReporter.Report)
crashHandler := crash.NewHandler(reporter.ReportException)
defer crashHandler.HandlePanic()
locationsProvider, err := locations.NewDefaultProvider(filepath.Join(constants.VendorName, ConfigName))
@ -84,7 +85,7 @@ func main() { // nolint[funlen]
versioner := versioner.New(updatesPath)
exe, err := getPathToExecutable(ExeName, versioner, kr)
exe, err := getPathToExecutable(ExeName, versioner, kr, reporter)
if err != nil {
if exe, err = getFallbackExecutable(ExeName, versioner); err != nil {
logrus.WithError(err).Fatal("Failed to find any launchable executable")
@ -140,7 +141,12 @@ func appendLauncherPath(path string, args []string) []string {
return res
}
func getPathToExecutable(name string, versioner *versioner.Versioner, kr *crypto.KeyRing) (string, error) {
func getPathToExecutable(
name string,
versioner *versioner.Versioner,
kr *crypto.KeyRing,
reporter *sentry.Reporter,
) (string, error) {
versions, err := versioner.ListVersions()
if err != nil {
return "", errors.Wrap(err, "failed to list available versions")
@ -152,6 +158,10 @@ func getPathToExecutable(name string, versioner *versioner.Versioner, kr *crypto
if err := version.VerifyFiles(kr); err != nil {
vlog.WithError(err).Error("Files failed verification and will be removed")
if err := reporter.ReportMessage(fmt.Sprintf("version %v failed verification: %v", version, err)); err != nil {
vlog.WithError(err).Error("Failed to report corrupt update files")
}
if err := version.Remove(); err != nil {
vlog.WithError(err).Error("Failed to remove files")
}