mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-18 13:27:28 -06:00
[feature] Discover webfinger through host-meta (#1588)
* [feature] Discover webfinger through host-meta This implements a fallback for discovering the webfinger endpoint in case the /.well-known/webfinger endpoint wasn't properly redirected. Some instances do this because the recommendation used to be to use host-meta for the webfinger redirect in the before times. Closes #1558. * [bug] Ensure we only ever update cache on success * [chore] Move finger tests to their own place This adds a test suite for transport and moves the finger cache tests into there instead of abusing the search test suite. * [chore] cleanup the test a bit more We don't really need a separate function for the oddly located webfinger response as we check the full URL string anyway * Address review comments * [chore] update config example * [chore] access DB only through state in controller
This commit is contained in:
parent
b344c2c8f4
commit
e397272fe8
13 changed files with 563 additions and 30 deletions
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
package model
|
||||
|
||||
import "encoding/xml"
|
||||
|
||||
// WellKnownResponse represents the response to either a webfinger request for an 'acct' resource, or a request to nodeinfo.
|
||||
// For example, it would be returned from https://example.org/.well-known/webfinger?resource=acct:some_username@example.org
|
||||
//
|
||||
|
|
@ -32,12 +34,12 @@ type WellKnownResponse struct {
|
|||
|
||||
// Link represents one 'link' in a slice of links returned from a lookup request.
|
||||
//
|
||||
// See https://webfinger.net/
|
||||
// See https://webfinger.net/ and https://www.rfc-editor.org/rfc/rfc6415.html#section-3.1
|
||||
type Link struct {
|
||||
Rel string `json:"rel"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Href string `json:"href,omitempty"`
|
||||
Template string `json:"template,omitempty"`
|
||||
Rel string `json:"rel" xml:"rel,attr"`
|
||||
Type string `json:"type,omitempty" xml:"type,attr,omitempty"`
|
||||
Href string `json:"href,omitempty" xml:"href,attr,omitempty"`
|
||||
Template string `json:"template,omitempty" xml:"template,attr,omitempty"`
|
||||
}
|
||||
|
||||
// Nodeinfo represents a version 2.1 or version 2.0 nodeinfo schema.
|
||||
|
|
@ -87,3 +89,13 @@ type NodeInfoUsage struct {
|
|||
type NodeInfoUsers struct {
|
||||
Total int `json:"total"`
|
||||
}
|
||||
|
||||
// HostMeta represents a hostmeta document.
|
||||
// See: https://www.rfc-editor.org/rfc/rfc6415.html#section-3
|
||||
//
|
||||
// swagger:model hostmeta
|
||||
type HostMeta struct {
|
||||
XMLName xml.Name `xml:"XRD"`
|
||||
XMLNS string `xml:"xmlns,attr"`
|
||||
Link []Link `xml:"Link"`
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue