checker: improve matrix check

This commit is contained in:
nemunaire 2021-03-08 13:44:23 +01:00
parent 78c42e312c
commit 405f3d6395
1 changed files with 10 additions and 9 deletions

View File

@ -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 {