Documentation
¶
Overview ¶
Package xmpp implements a simple Google Talk client using the XMPP protocol described in RFC 3920 and RFC 3921.
Index ¶
- Constants
- Variables
- type BlockList
- type BlockListItem
- type Client
- func (c *Client) ApproveSubscription(jid string) error
- func (c *Client) Ban(room, jid, reason string) error
- func (c *Client) Block(jid string) error
- func (c *Client) ChangeNick(room, nick string) error
- func (c *Client) Close() error
- func (c *Client) ConfigureRoom(room string, form MUCForm) error
- func (c *Client) DirectInvite(room, jid, password, reason string) error
- func (c *Client) DiscoverReservedNick(room string) error
- func (c *Client) GetBlocked() error
- func (c *Client) GetDiscoInfo(target, node string) error
- func (c *Client) GetDiscoItems(target, node string) error
- func (c *Client) GetRoomConfig(room string) error
- func (c *Client) GetRoomMembers(room string) error
- func (c *Client) Invite(room string) error
- func (c *Client) IsEncrypted() bool
- func (c *Client) JID() string
- func (c *Client) JoinMUC(room, nick string, history_type, history int, history_date *time.Time) (n int, err error)
- func (c *Client) JoinMUCNoHistory(room, nick string) (n int, err error)
- func (c *Client) JoinProtectedMUC(jid, nick string, password string, history_type, history int, ...) (n int, err error)
- func (c *Client) Kick(room, nick, reason string) error
- func (c *Client) LeaveMUC(room string) (n int, err error)
- func (c *Client) PingC2S(jid, server string) error
- func (c *Client) PingS2S(fromServer, toServer string) error
- func (c *Client) Recv() (stanza interface{}, err error)
- func (c *Client) RemoveRosterItem(jid string) error
- func (c *Client) RequestRoomVoice(room string) error
- func (c *Client) RequestSubscription(jid string) error
- func (c *Client) RevokeSubscription(jid string) error
- func (c *Client) Roster() error
- func (c *Client) SendBytes(b []byte) (n int, err error)
- func (c *Client) SendElement(el interface{}) (n int, err error)
- func (c *Client) SendHtml(msg Message) (n int, err error)
- func (c *Client) SendIQ(iq *IQ) (n int, err error)
- func (c *Client) SendKeepAlive() (n int, err error)
- func (c *Client) SendMessage(msg *Message) (n int, err error)
- func (c *Client) SendPresence(presence *Presence) (n int, err error)
- func (c *Client) SendResultPing(id, toServer string) error
- func (c *Client) SendStreamError(e string) (n int, err error)
- func (c *Client) SendString(s string) (n int, err error)
- func (c *Client) SendTopic(room, topic string) (n int, err error)
- func (c *Client) SetRoomAffiliation(room, jid, affiliation, reason string) error
- func (c *Client) SetRoomRole(room, nick, role, reason string) error
- func (c *Client) Unblock(jid string) error
- func (c *Client) UpdateRosterItem(item *RosterItem) error
- type Cookie
- type Delay
- type DiscoItem
- type DiscoveryQuery
- type Error
- type Feature
- type IBBCLose
- type IBBData
- type IBBOpen
- type IQ
- type Identity
- type MUCForm
- type Message
- type Options
- type Presence
- type Query
- type Roster
- type RosterItem
- type XMLElement
Constants ¶
const ( // IQTypeGet = "get" // IQTypeSet = "set" // IQTypeResult = "result" NSDiscoInfo = "http://jabber.org/protocol/disco#info" NSDiscoItems = "http://jabber.org/protocol/disco#items" )
const ( NoHistory = 0 CharHistory = 1 StanzaHistory = 2 SecondsHistory = 3 SinceHistory = 4 )
const (
NSBlock = "urn:xmpp:blocking"
)
const (
NSIBB = "http://jabber.org/protocol/ibb"
)
const (
NSRoster = "jabber:iq:roster"
)
Variables ¶
var DefaultConfig tls.Config
Default TLS configuration options
Functions ¶
This section is empty.
Types ¶
type BlockList ¶
type BlockList []BlockListItem
type BlockListItem ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client holds XMPP connection opitons
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) ChangeNick ¶
func (*Client) DirectInvite ¶
XEP-0249: Direct MUC Invitations
func (*Client) DiscoverReservedNick ¶
A user MAY have a reserved room nickname, for example through explicit room registration, database integration, or nickname "lockdown". A user SHOULD discover his or her reserved nickname before attempting to enter the room. This is done by sending a Service Discovery information request to the room JID while specifying a well-known Service Discovery node of "x-roomuser-item".
func (*Client) GetBlocked ¶
func (*Client) GetDiscoInfo ¶
target is server name or room's JID or full JID with resource
func (*Client) GetDiscoItems ¶
target is server name or room's JID or full JID with resource
func (*Client) GetRoomConfig ¶
XER-0045 10.2 Subsequent Room Configuration
func (*Client) GetRoomMembers ¶
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) JoinMUC ¶
func (c *Client) JoinMUC(room, nick string, history_type, history int, history_date *time.Time) (n int, err error)
xep-0045 7.2
func (*Client) JoinMUCNoHistory ¶
func (*Client) JoinProtectedMUC ¶
func (c *Client) JoinProtectedMUC(jid, nick string, password string, history_type, history int, history_date *time.Time) (n int, err error)
xep-0045 7.2.6
func (*Client) Recv ¶
Recv waits to receive the next XMPP stanza. Return type is either a presence notification or a chat message. TODO: Merge Recv() and next()
func (*Client) RemoveRosterItem ¶
func (*Client) RequestRoomVoice ¶
func (*Client) RequestSubscription ¶
func (*Client) RevokeSubscription ¶
func (*Client) SendElement ¶
SendElement sends stanza or any XML element Maybe rewrite using concrete interface? e.g. interface {GetID(), SetID()} ??
func (*Client) SendKeepAlive ¶
SendKeepAlive sends a "whitespace keepalive" as described in chapter 4.6.1 of RFC6120.
func (*Client) SendMessage ¶
Send sends the message wrapped inside an XMPP message stanza body.
func (*Client) SendPresence ¶
SendPresence sends presence stanza
func (*Client) SendResultPing ¶
func (*Client) SendStreamError ¶
Send stream error and close stream
func (*Client) SendString ¶
SendString sends the original text without being wrapped in an XMPP message stanza. Do we need locks here?
func (*Client) SetRoomAffiliation ¶
func (*Client) SetRoomRole ¶
func (*Client) UpdateRosterItem ¶
func (c *Client) UpdateRosterItem(item *RosterItem) error
type DiscoveryQuery ¶
type Error ¶
type Error struct {
XMLName xml.Name //`xml:"error"` //`xml:"jabber:client error"`
Code string `xml:",attr,omitempty"`
Type string `xml:",attr,omitempty"`
// Any xml.Name `xml:",omitempty"`
Text string `xml:"text,omitempty"`
}
Rename to StanzaError ???
type IQ ¶
type IQ struct {
XMLName xml.Name `xml:"jabber:client iq"`
From string `xml:"from,attr,omitempty"`
ID string `xml:"id,attr,omitempty"`
To string `xml:"to,attr,omitempty"`
Type string `xml:"type,attr"` // error, get, result, set
InnerElement Query `xml:",any,omitempty"` //`xml:",innerxml"` // query, block, etc.
Error *Error `xml:",omitempty"`
Bind *bindBind `xml:",omitempty"`
}
Info Query
type Message ¶
type Message struct {
XMLName xml.Name `xml:"jabber:client message"`
From string `xml:"from,attr,omitempty"`
ID string `xml:"id,attr,omitempty"`
To string `xml:"to,attr"`
Type string `xml:"type,attr"` // chat, error, groupchat, headline, or normal
Error *Error `xml:"error,omitempty"`
// These should technically be []clientText, but string is much more convenient.
Subject string `xml:"subject,omitempty"`
Body string `xml:"body,omitempty"`
Thread string `xml:"thread,omitempty"`
// Any hasn't matched element
OtherElements []XMLElement `xml:",any,omitempty"`
Delay *Delay `xml:"delay,omitempty"`
}
RFC 3921 B.1 jabber:client Message is an incoming or outgoing XMPP chat message.
func (*Message) OtherStrings ¶
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
// 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 {
XMLName xml.Name `xml:"jabber:client presence"`
From string `xml:"from,attr,omitempty"`
ID string `xml:"id,attr,omitempty"`
To string `xml:"to,attr,omitempty"`
Type string `xml:"type,attr,omitempty"` // error, probe, subscribe, subscribed, unavailable, unsubscribe, unsubscribed
Lang string `xml:"xml lang,attr,omitempty"`
Show string `xml:"show,omitempty"` // away, chat, dnd, xa
Status string `xml:"status,omitempty"` // sb []clientText
Priority string `xml:"priority,attr,omitempty"`
Error *Error `xml:",omitempty"`
}
Presence is an XMPP presence notification.
type Roster ¶
type Roster []RosterItem
type RosterItem ¶
type XMLElement ¶
func (*XMLElement) String ¶
func (e *XMLElement) String() string