Documentation ¶
Overview ¶
Package xmpp implements a simple Google Talk client using the XMPP protocol described in RFC 3920 and RFC 3921.
TODO(flo):
- cleanup signatures of join/leave functions
Index ¶
- Constants
- Variables
- type AvatarData
- type AvatarMetadata
- type Chat
- type Client
- func (c *Client) ApproveSubscription(jid string) error
- func (c *Client) AvatarRequestData(jid string) (string, error)
- func (c *Client) AvatarRequestDataByID(jid, id string) (string, error)
- func (c *Client) AvatarRequestMetadata(jid string) (string, error)
- func (c *Client) AvatarSubscribeMetadata(jid string) (string, error)
- func (c *Client) AvatarUnsubscribeMetadata(jid string) (string, error)
- func (c *Client) Close() error
- func (c *Client) DiscoverEntityItems(jid string) (string, error)
- func (c *Client) DiscoverInfo(from string, to string) (string, error)
- func (c *Client) DiscoverNodeInfo(node string) (string, error)
- func (c *Client) DiscoverServerItems() (string, error)
- func (c *Client) Discovery() (string, error)
- func (c *Client) ErrorNotImplemented(v IQ, xmlns, feature string) (string, error)
- func (c *Client) ErrorServiceUnavailable(v IQ, queryXmlns, node string) (string, error)
- func (c *Client) IqVersionResponse(v IQ, name, version, os string) (string, error)
- func (c *Client) IsEncrypted() bool
- func (c *Client) JID() string
- func (c *Client) JabberIqLastResponse(v IQ, lastActivity int64) (string, error)
- func (c *Client) JoinMUC(jid, nick string, historyType, history int, historyDate *time.Time) (int, error)
- func (c *Client) JoinMUCNoHistory(jid, nick string) (int, error)
- func (c *Client) JoinProtectedMUC(jid, nick string, password string, historyType, history int, ...) (int, error)
- func (c *Client) LeaveMUC(jid string) (int, error)
- func (c *Client) PingC2S(jid, server string) error
- func (c *Client) PingResponse(v IQ) (string, error)
- func (c *Client) PingS2S(fromServer, toServer string) error
- func (c *Client) PubsubRequestItem(node, jid, id string) (string, error)
- func (c *Client) PubsubRequestLastItems(node, jid string) (string, error)
- func (c *Client) PubsubSubscribeNode(node, jid string) (string, error)
- func (c *Client) PubsubUnsubscribeNode(node, jid string) (string, error)
- func (c *Client) RawInformation(from, to, id, iqType, body string) (string, error)
- func (c *Client) RawInformationQuery(from, to, id, iqType, requestNamespace, body string) (string, error)
- func (c *Client) Recv() (stanza interface{}, err error)
- func (c *Client) RequestSubscription(jid string) error
- func (c *Client) RetrieveSubscription(jid string) error
- func (c *Client) RevokeSubscription(jid string) error
- func (c *Client) Roster() error
- func (c *Client) Send(chat Chat) (int, error)
- func (c *Client) SendHtml(chat Chat) (int, error)
- func (c *Client) SendKeepAlive() (int, error)
- func (c *Client) SendOOB(chat Chat) (int, error)
- func (c *Client) SendOrg(org string) (int, error)
- func (c *Client) SendPresence(presence Presence) (int, error)
- func (c *Client) SendResultPing(id, toServer string) error
- func (c *Client) SendTopic(chat Chat) (int, error)
- func (c *Client) UrnXMPPTimeResponse(v IQ, timezoneOffset string) (string, error)
- type Contact
- type Cookie
- type Delay
- type DiscoIdentity
- type DiscoItem
- type DiscoItems
- type DiscoResult
- type IQ
- type Options
- type Presence
- type PubsubEvent
- type PubsubItem
- type PubsubItems
- type PubsubSubscription
- type PubsubUnsubscription
- type Roster
- type XMLElement
Constants ¶
const ( XMPPNS_AVATAR_PEP_DATA = "urn:xmpp:avatar:data" //nocritic:revive XMPPNS_AVATAR_PEP_METADATA = "urn:xmpp:avatar:metadata" //nocritic:revive )
const ( XMPPNS_DISCO_ITEMS = "http://jabber.org/protocol/disco#items" //nocritic:revive XMPPNS_DISCO_INFO = "http://jabber.org/protocol/disco#info" //nocritic:revive )
const ( NoHistory = 0 CharHistory = 1 StanzaHistory = 2 SecondsHistory = 3 SinceHistory = 4 )
const ( XMPPNS_PUBSUB = "http://jabber.org/protocol/pubsub" //nolint:revive XMPPNS_PUBSUB_EVENT = "http://jabber.org/protocol/pubsub#event" //nolint:revive )
const IQTypeError = "error"
const IQTypeGet = "get"
const IQTypeResult = "result"
const IQTypeSet = "set"
Variables ¶
var DebugWriter io.Writer = os.Stderr
DebugWriter is the writer used to write debugging output to.
var DefaultConfig = &tls.Config{} //nolint:gosec // go fuck yourself, gosec
DefaultConfig is default TLS configuration options.
var StanzaWriter io.Writer
Functions ¶
This section is empty.
Types ¶
type AvatarData ¶
type AvatarMetadata ¶
type Chat ¶
type Chat struct { Remote string Type string Text string Subject string Thread string Ooburl string Oobdesc string Roster Roster Other []string OtherElem []XMLElement Stamp time.Time }
Chat is an incoming or outgoing XMPP chat message.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client holds XMPP connection options.
func NewClient ¶
NewClient creates a new connection to a host given as "hostname" or "hostname:port". If host is not specified, the DNS SRV should be used to find the host from the domainpart of the JID. Default the port to 5222.
func NewClientNoTLS ¶
NewClientNoTLS creates a new client without TLS.
func (*Client) ApproveSubscription ¶
func (*Client) AvatarRequestDataByID ¶
func (*Client) AvatarRequestMetadata ¶
func (*Client) AvatarSubscribeMetadata ¶
func (*Client) AvatarUnsubscribeMetadata ¶
func (*Client) DiscoverEntityItems ¶
DiscoverEntityItems discovers items that an entity exposes.
func (*Client) DiscoverInfo ¶ added in v1.1.0
DiscoverInfo discovers information about given item from given jid.
func (*Client) DiscoverNodeInfo ¶
DiscoverNodeInfo discovers information about a node. Empty node queries info about server itself.
func (*Client) DiscoverServerItems ¶
DiscoverServerItems discover items that the server exposes.
func (*Client) ErrorNotImplemented ¶ added in v1.5.0
ErrorNotImplemented implements error response about feature that is not (yet?) implemented. Xmlns is about not implemented feature.
If queried feature is not here because of it under development or for similar reasons, standards suggest answer with this stanza.
func (*Client) ErrorServiceUnavailable ¶ added in v1.5.0
ErrorServiceUnavailable implements error response about feature that is not available. Currently implemented for xep-0030. QueryXmlns is about incoming xmlns attribute in query tag. Node is about incoming node attribute in query tag (looks like it used only in disco#commands).
If queried feature is not here on purpose, standards suggest answer with this stanza.
func (*Client) IqVersionResponse ¶ added in v1.5.0
IqVersionResponse responding with software version, according to xep-0092.
func (*Client) IsEncrypted ¶
IsEncrypted will return true if the client is connected using a TLS transport, either because it used. TLS to connect from the outset, or because it successfully used STARTTLS to promote a TCP connection to TLS.
func (*Client) JabberIqLastResponse ¶ added in v1.5.0
JabberIqLastResponse responding with relative time since last activity. Here lastActivity is unix time stamp when last activity took place since.
func (*Client) JoinMUC ¶
func (c *Client) JoinMUC(jid, nick string, historyType, history int, historyDate *time.Time) (int, error)
JoinMUC joins room, xep-0045 7.2.
func (*Client) JoinMUCNoHistory ¶
JoinMUCNoHistory joins room and instructs server that no history data required.
func (*Client) JoinProtectedMUC ¶
func (c *Client) JoinProtectedMUC(jid, nick string, password string, historyType, history int, historyDate *time.Time) (int, error)
JoinProtectedMUC joins password protected room, xep-0045 7.2.6.
func (*Client) PingResponse ¶ added in v1.5.0
PingResponse responding to ping query according to xep-0199.
func (*Client) PubsubRequestItem ¶
func (*Client) PubsubRequestLastItems ¶
func (*Client) PubsubSubscribeNode ¶
func (*Client) PubsubUnsubscribeNode ¶
func (*Client) RawInformation ¶
RawInformation sends a IQ request with the payload body to the server.
func (*Client) RawInformationQuery ¶
func (c *Client) RawInformationQuery(from, to, id, iqType, requestNamespace, body string) (string, error)
RawInformationQuery sends an information query request to the server.
func (*Client) Recv ¶
Recv waits to receive the next XMPP stanza. Return type is either a presence notification or a chat message.
func (*Client) RequestSubscription ¶
func (*Client) RetrieveSubscription ¶
func (*Client) RevokeSubscription ¶
func (*Client) Send ¶
Send sends the message wrapped inside an XMPP message stanza body. Returns amount bytes sent and error (if any).
func (*Client) SendHtml ¶
SendHtml sends the message as HTML as defined by XEP-0071. Returns amount bytes sent and error (if any).
func (*Client) SendKeepAlive ¶
SendKeepAlive sends a "whitespace keepalive" as described in chapter 4.6.1 of RFC6120. Returns amount bytes sent and error (if any).
func (*Client) SendOOB ¶
SendOOB sends OOB data wrapped inside an XMPP message stanza, without actual body. Returns amount bytes sent and error (if any).
func (*Client) SendOrg ¶
SendOrg sends the original text without being wrapped in an XMPP message stanza. Returns amount bytes sent and error (if any).
func (*Client) SendPresence ¶
SendPresence sends Presence wrapped inside XMPP presence stanza.
func (*Client) SendResultPing ¶
type DiscoIdentity ¶
type DiscoItems ¶
type DiscoResult ¶
type DiscoResult struct { ID string From string To string Features []string Identities []DiscoIdentity }
type Options ¶
type Options struct { // Host specifies what host to connect to, as either "hostname" or "hostname:port" // If host is not specified, the DNS SRV should be used to find the host from the domainpart of the JID. // Default the port to 5222. Host string // User specifies what user to authenticate to the remote server. User string // Password supplies the password to use for authentication with the remote server. Password string // DialTimeout is the time limit for establishing a connection. A // DialTimeout of zero means no timeout. DialTimeout time.Duration // Resource specifies an XMPP client resource, like "bot", instead of accepting one // from the server. Use "" to let the server generate one for your client. Resource string // OAuthScope provides go-xmpp the required scope for OAuth2 authentication. OAuthScope string // OAuthToken provides go-xmpp with the required OAuth2 token used to authenticate OAuthToken string // OAuthXmlNs provides go-xmpp with the required namespaced used for OAuth2 authentication. This is // provided to the server as the xmlns:auth attribute of the OAuth2 authentication request. OAuthXmlNs string // TLS Config TLSConfig *tls.Config // InsecureAllowUnencryptedAuth permits authentication over a TCP connection that has not been promoted to // TLS by STARTTLS; this could leak authentication information over the network, or permit man in the middle // attacks. InsecureAllowUnencryptedAuth bool // NoTLS directs go-xmpp to not use TLS initially to contact the server; instead, a plain old unencrypted // TCP connection should be used. (Can be combined with StartTLS to support STARTTLS-based servers.) NoTLS bool // StartTLS directs go-xmpp to STARTTLS if the server supports it; go-xmpp will automatically STARTTLS // if the server requires it regardless of this option. StartTLS bool // Debug output Debug bool // Use server sessions Session bool // Presence Status Status string // Status message StatusMessage string }
Options are used to specify additional options for new clients, such as a Resource.
type Presence ¶
type Presence struct { From string To string Type string Show string Status string Priority string ID string Affiliation string Role string JID string }
Presence is an XMPP presence notification.
type PubsubEvent ¶
type PubsubEvent struct { Node string Items []PubsubItem }
type PubsubItem ¶
type PubsubItems ¶
type PubsubItems struct { Node string Items []PubsubItem }
type PubsubSubscription ¶
type PubsubUnsubscription ¶
type PubsubUnsubscription PubsubSubscription