checker: improve matrix check
This commit is contained in:
parent
78c42e312c
commit
405f3d6395
@ -190,7 +190,7 @@ type matrix_result struct {
|
|||||||
FederationOK bool
|
FederationOK bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func check_matrix(domain string) (err error) {
|
func check_matrix(domain string) (version string, err error) {
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
resp, err = http.Get(fmt.Sprintf("https://federation-tester.adlin.nemunai.re/api/report?server_name=%s", strings.TrimSuffix(domain, ".")))
|
resp, err = http.Get(fmt.Sprintf("https://federation-tester.adlin.nemunai.re/api/report?server_name=%s", strings.TrimSuffix(domain, ".")))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -199,17 +199,18 @@ func check_matrix(domain string) (err error) {
|
|||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
if resp.StatusCode >= 300 {
|
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
|
var federationTest matrix_result
|
||||||
if federationTest.FederationOK {
|
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 {
|
} else if err = json.NewDecoder(resp.Body).Decode(&federationTest); err != nil {
|
||||||
log.Printf("Error in chech_matrix, when decoding json:", err.Error())
|
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 != "" {
|
} 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 {
|
} else if len(federationTest.ConnectionErrors) > 0 {
|
||||||
var msg strings.Builder
|
var msg strings.Builder
|
||||||
for srv, cerr := range federationTest.ConnectionErrors {
|
for srv, cerr := range federationTest.ConnectionErrors {
|
||||||
@ -220,9 +221,9 @@ func check_matrix(domain string) (err error) {
|
|||||||
msg.WriteString(": ")
|
msg.WriteString(": ")
|
||||||
msg.WriteString(cerr.Message)
|
msg.WriteString(cerr.Message)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("Connection errors: %s", msg.String())
|
return "", fmt.Errorf("Connection errors: %s", msg.String())
|
||||||
} else {
|
} 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)
|
// Check Matrix (only if GLUE Ok and)
|
||||||
if glueErr == nil && istd%10 == check_matrix_for {
|
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 {
|
if verbose {
|
||||||
log.Printf("%s just unlocked Matrix challenge\n", std.Login)
|
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())
|
log.Printf("Unable to register challenge for %s: %s\n", std.Login, err.Error())
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user