Package ibr2 implements Extensible In-Band Registration.

    BE ADVISED: This API is incomplete and is subject to change. Core functionality of this package is missing, and the entire package may be removed at any time.



    View Source
    const (
    	NS = "urn:xmpp:register:0"

      Namespaces used by IBR.


      This section is empty.


      func Recovery

      func Recovery(challenges ...Challenge) xmpp.StreamFeature

        Recovery returns a new xmpp.StreamFeature that can be used to recover an account for which authentication credentials have been lost.

        func Register

        func Register(challenges ...Challenge) xmpp.StreamFeature

          Register returns a new xmpp.StreamFeature that can be used to register a new account with the server.


          type Challenge

          type Challenge struct {
          	// Type is the type of the challenge as it appears in the server advertised
          	// challenges list.
          	Type string
          	// Send is used by the server to send the challenge to the client.
          	Send func(context.Context, xmlstream.TokenWriter) error
          	// Respond is used by the client to send a response or reply to the challenge.
          	Respond func(context.Context, xmlstream.TokenWriter) error
          	// Receive is used by the client to receive and decode the server's challenge
          	// and by the server to receive and decode the clients response.
          	Receive func(ctx context.Context, server bool, r xml.TokenReader, start *xml.StartElement) error

            Challenge is an IBR challenge.

            func Form

            func Form(f func(data *form.Data) (*form.Data, error)) Challenge

              Form is a challenge that presents or receives a data form as specified in XEP-0004. If Form is used by a client, f is called and passed the form sent by the server. The returned form should be a response to the sent form. If Form is used by a server, f is called once with a nil form and should return a form to be sent to the client; it is then called again with the clients response at which point a nil form can be returned to terminate the exchange, or a second form to be sent to the client can be returned.

              func OOB

              func OOB(data *oob.Data, f func(*oob.Data) error) Challenge

                OOB is a challenge that must be completed out of band using a URI provided by XEP-0066: Out of Band Data. If you are a client, f will be called and passed the parsed OOB data. If f returns an error, the client considers the negotiation a failure. For servers, the provided data is encoded and sent as part of the challenge (f is not used).