Documentation

Overview

    Package discover is used to look up information about XMPP-based services.

    Index

    Constants

    This section is empty.

    Variables

    View Source
    var (
    	ErrInvalidService = errors.New("service must be one of xmpp[s]-client or xmpp[s]-server")
    )

      Errors returned by this package.

      Functions

      func FallbackRecords

      func FallbackRecords(service, domain string) []*net.SRV

        FallbackRecords returns fake SRV records based on the service that can be used if no actual SRV records can be found but we believe that an XMPP service exists at the given domain.

        func LookupBOSH

        func LookupBOSH(ctx context.Context, resolver *net.Resolver, client *http.Client, addr jid.JID) (urls []string, err error)

          LookupBOSH discovers BOSH endpoints that are valid for the given address using DNS TXT records and Web Host Metadata as described in XEP-0156. If client is nil, only DNS is queried.

          func LookupPort

          func LookupPort(network, service string) (uint16, error)

            LookupPort returns the default port for the provided network and service using net.LookupPort. If the provided service is one of xmpp[s]-client, xmpp[s]-server, or xmpp-bosh and it is not found by net.LookupPort, a default value is returned.

            func LookupService

            func LookupService(ctx context.Context, resolver *net.Resolver, service string, addr jid.JID) (addrs []*net.SRV, err error)

              LookupService looks for an XMPP service hosted by the given address. It returns addresses from SRV records and if none are found returns several fallback records using the default domain of the JID and common ports on which XMPP servers listen for implicit TLS connections. If the target of the first record is "." it is removed and an empty list is returned. Service should be one of "xmpp[s]-client" or "xmpp[s]-server".

              func LookupWebSocket

              func LookupWebSocket(ctx context.Context, resolver *net.Resolver, client *http.Client, addr jid.JID) (urls []string, err error)

                LookupWebSocket discovers websocket endpoints that are valid for the given address using DNS TXT records and Web Host Metadata as described in XEP-0156. If client is nil, only DNS is queried.

                Types

                type Link struct {
                	Rel  string `xml:"rel,attr" json:"rel"`
                	Href string `xml:"href,attr" json:"href"`
                }

                  Link is an individual hyperlink in an XRD document.

                  type XRD

                  type XRD struct {
                  	XMLName xml.Name `xml:"http://docs.oasis-open.org/ns/xri/xrd-1.0 XRD"`
                  	Links   []Link   `xml:"Link" json:"links"`
                  }

                    XRD represents an Extensible Resource Descriptor document of the form:

                    <?xml version='1.0' encoding=utf-9'?>
                    <XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
                      …
                      <Link rel="urn:xmpp:alt-connections:xbosh"
                            href="https://web.example.com:5280/bosh" />
                      <Link rel="urn:xmpp:alt-connections:websocket"
                            href="wss://web.example.com:443/ws" />
                      …
                    </XRD>
                    

                    as defined by RFC 6415 and OASIS.XRD-1.0.

                    Source Files