Initial commit
This commit is contained in:
commit
2bb91d33d4
16 changed files with 878 additions and 0 deletions
72
checker/types.go
Normal file
72
checker/types.go
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
// Package checker implements the Matrix federation checker for happyDomain.
|
||||
//
|
||||
// It queries a Matrix Federation Tester instance (by default the public one
|
||||
// hosted at https://federationtester.matrix.org) to verify that a Matrix
|
||||
// homeserver is correctly federating, then exposes the result both as an
|
||||
// observation and as a rich HTML report.
|
||||
package checker
|
||||
|
||||
import (
|
||||
sdk "git.happydns.org/checker-sdk-go/checker"
|
||||
)
|
||||
|
||||
// ObservationKeyMatrix is the observation key for Matrix federation test data.
|
||||
const ObservationKeyMatrix sdk.ObservationKey = "matrix_federation"
|
||||
|
||||
// MatrixFederationData is the full payload returned by the Matrix Federation
|
||||
// Tester API and stored as the observation.
|
||||
type MatrixFederationData struct {
|
||||
WellKnownResult struct {
|
||||
Server string `json:"m.server"`
|
||||
Result string `json:"result"`
|
||||
CacheExpiresAt int64 `json:"CacheExpiresAt"`
|
||||
} `json:"WellKnownResult"`
|
||||
DNSResult struct {
|
||||
SRVSkipped bool `json:"SRVSkipped"`
|
||||
SRVCName string `json:"SRVCName"`
|
||||
SRVRecords []struct {
|
||||
Target string `json:"Target"`
|
||||
Port uint16 `json:"Port"`
|
||||
Priority uint16 `json:"Priority"`
|
||||
Weight uint16 `json:"Weight"`
|
||||
} `json:"SRVRecords"`
|
||||
SRVError *struct {
|
||||
Message string `json:"Message"`
|
||||
} `json:"SRVError"`
|
||||
Hosts map[string]struct {
|
||||
CName string `json:"CName"`
|
||||
Addrs []string `json:"Addrs"`
|
||||
} `json:"Hosts"`
|
||||
Addrs []string `json:"Addrs"`
|
||||
} `json:"DNSResult"`
|
||||
ConnectionReports map[string]struct {
|
||||
Certificates []struct {
|
||||
SubjectCommonName string `json:"SubjectCommonName"`
|
||||
IssuerCommonName string `json:"IssuerCommonName"`
|
||||
SHA256Fingerprint string `json:"SHA256Fingerprint"`
|
||||
DNSNames []string `json:"DNSNames"`
|
||||
} `json:"Certificates"`
|
||||
Cipher struct {
|
||||
Version string `json:"Version"`
|
||||
CipherSuite string `json:"CipherSuite"`
|
||||
} `json:"Cipher"`
|
||||
Checks struct {
|
||||
AllChecksOK bool `json:"AllChecksOK"`
|
||||
MatchingServerName bool `json:"MatchingServerName"`
|
||||
FutureValidUntilTS bool `json:"FutureValidUntilTS"`
|
||||
HasEd25519Key bool `json:"HasEd25519Key"`
|
||||
AllEd25519ChecksOK bool `json:"AllEd25519ChecksOK"`
|
||||
ValidCertificates bool `json:"ValidCertificates"`
|
||||
} `json:"Checks"`
|
||||
Errors []string `json:"Errors"`
|
||||
} `json:"ConnectionReports"`
|
||||
ConnectionErrors map[string]struct {
|
||||
Message string `json:"Message"`
|
||||
} `json:"ConnectionErrors"`
|
||||
Version struct {
|
||||
Name string `json:"name"`
|
||||
Version string `json:"version"`
|
||||
Error string `json:"error,omitempty"`
|
||||
} `json:"Version"`
|
||||
FederationOK bool `json:"FederationOK"`
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue