From 405f3d63957917e4282adb11cc48f88c77bbfbe1 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 8 Mar 2021 13:44:23 +0100 Subject: [PATCH] checker: improve matrix check --- checker/checker.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/checker/checker.go b/checker/checker.go index 7408180..5d510aa 100644 --- a/checker/checker.go +++ b/checker/checker.go @@ -190,7 +190,7 @@ type matrix_result struct { FederationOK bool } -func check_matrix(domain string) (err error) { +func check_matrix(domain string) (version string, err error) { var resp *http.Response resp, err = http.Get(fmt.Sprintf("https://federation-tester.adlin.nemunai.re/api/report?server_name=%s", strings.TrimSuffix(domain, "."))) if err != nil { @@ -199,17 +199,18 @@ func check_matrix(domain string) (err error) { defer resp.Body.Close() if resp.StatusCode >= 300 { - return nil + return "", fmt.Errorf("Sorry, the federation tester is broken. Check on https://federationtester.matrix.org/#%s", domain) } var federationTest matrix_result if federationTest.FederationOK { - return nil + version = federationTest.Version.Name + " " + federationTest.Version.Version + return version, nil } else if err = json.NewDecoder(resp.Body).Decode(&federationTest); err != nil { log.Printf("Error in chech_matrix, when decoding json:", err.Error()) - return nil + return "", fmt.Errorf("Sorry, the federation tester is broken. Check on https://federationtester.matrix.org/#%s", domain) } else if federationTest.DNSResult.SRVError != nil && federationTest.WellKnownResult.Result != "" { - return fmt.Errorf("%s OR %s", federationTest.DNSResult.SRVError.Message, federationTest.WellKnownResult.Result) + return "", fmt.Errorf("%s OR %s", federationTest.DNSResult.SRVError.Message, federationTest.WellKnownResult.Result) } else if len(federationTest.ConnectionErrors) > 0 { var msg strings.Builder for srv, cerr := range federationTest.ConnectionErrors { @@ -220,9 +221,9 @@ func check_matrix(domain string) (err error) { msg.WriteString(": ") msg.WriteString(cerr.Message) } - return fmt.Errorf("Connection errors: %s", msg.String()) + return "", fmt.Errorf("Connection errors: %s", msg.String()) } else { - return fmt.Errorf("An unimplemented error occurs. Please report to nemunaire. But know that federation seems to be broken. Check https://federationtester.matrix.org/#%s", domain) + return "", fmt.Errorf("An unimplemented error occurs. Please report to nemunaire. But know that federation seems to be broken. Check https://federationtester.matrix.org/#%s", domain) } } @@ -349,11 +350,11 @@ func studentsChecker() { // Check Matrix (only if GLUE Ok and) if glueErr == nil && istd%10 == check_matrix_for { - if err := check_matrix(std.MyDelegatedDomain()); err == nil { + if v, err := check_matrix(std.MyDelegatedDomain()); err == nil { if verbose { log.Printf("%s just unlocked Matrix challenge\n", std.Login) } - if _, err := std.UnlockChallenge(100*(tunnel_version-1)+6, ""); err != nil { + if _, err := std.UnlockChallenge(100*(tunnel_version-1)+6, v); err != nil { log.Printf("Unable to register challenge for %s: %s\n", std.Login, err.Error()) } } else {