Documentation ¶
Index ¶
- Constants
- Variables
- func AuthPayload(encoded string, payload *string) error
- func BindFeature(rsb ResourceBinder) bindFeature
- func ClientBindFeature(rb ResourceBinder, resource string) clientBindFeature
- func ClientCompressFeature() clientCompressFeature
- func ClientSASLFeature() clientSASLFeature
- func ClientTlsFeature(conf *tls.Config) clientTlsFeature
- func CompressFeature() compressionFeature
- func ElemRunner(channel Channel) elemRunner
- func ParseJID(src string, jid *JID) error
- func SASLFeature(authorized Authorized) saslFeature
- func SaslFailureElem(tagName, desc string) stravaganza.Element
- func SaslFailureElemFromError(err error) stravaganza.Element
- func SaslFailureError(tagName, desc string) error
- func TlsFailureElem() stravaganza.Element
- func TlsFeature(certFile, keyFile string, mandatory bool) tlsFeature
- type Auth
- type Authorized
- type BuildCompressor
- type Channel
- type ClientPart
- func (od *ClientPart) Attr() *PartAttr
- func (od *ClientPart) Channel() Channel
- func (od *ClientPart) Conn() Conn
- func (od *ClientPart) ID() string
- func (od *ClientPart) Logger() Logger
- func (od *ClientPart) Negotiate() error
- func (od *ClientPart) OnCloseToken()
- func (od *ClientPart) OnOpenHeader(header xml.StartElement) error
- func (od *ClientPart) OnWhiteSpace(bs []byte)
- func (er *ClientPart) Quit()
- func (od *ClientPart) Run() chan error
- func (er ClientPart) Running() bool
- func (er *ClientPart) SetHandleLimit(limit int)
- func (od *ClientPart) Stop()
- func (er *ClientPart) WithElemHandler(handler ElemHandler)
- func (od *ClientPart) WithFeature(h ElemHandler)
- type CompZlib
- type CompressFailure
- type Compressor
- type Conn
- type ConnFor
- type ConnGrabber
- type ConnType
- type ElemHandler
- type ElementableError
- type Err
- type ErrDesc
- type Failure
- type Feature
- type IDAble
- type IqBind
- type IqErrHandler
- type JID
- type LocalConn
- func (lc *LocalConn) BindTlsUnique(w io.Writer) error
- func (lc *LocalConn) Close() error
- func (lc *LocalConn) LocalAddr() net.Addr
- func (lc *LocalConn) Read(b []byte) (n int, err error)
- func (lc *LocalConn) RemoteAddr() net.Addr
- func (lc *LocalConn) SetDeadline(t time.Time) error
- func (lc *LocalConn) SetReadDeadline(t time.Time) error
- func (lc *LocalConn) SetWriteDeadline(t time.Time) error
- func (lc *LocalConn) StartTLS(*tls.Config) error
- func (lc *LocalConn) Write(b []byte) (n int, err error)
- type LocalConnAddr
- type LogLevel
- type LogMode
- type Logger
- type MemoryAuthUser
- type MemoryAuthUserFetcher
- type MemoryAuthorized
- type MemoryPlainAuthUser
- type MemoryPlainAuthUserFetcher
- type Parser
- type Part
- type PartAttr
- type PlainAuth
- type PlainAuthUser
- type PlainAuthUserFetcher
- type Receiver
- type ResourceBinder
- type ScramAuth
- type ScramAuthUser
- type ScramAuthUserFetcher
- type ScramToAuth
- type Sender
- type Stanza
- type StanzaErr
- type StanzaErrHandler
- type StanzaType
- type TcpConn
- func (conn *TcpConn) BindTlsUnique(w io.Writer) error
- func (conn *TcpConn) Close() error
- func (conn *TcpConn) LocalAddr() net.Addr
- func (conn *TcpConn) Read(b []byte) (int, error)
- func (conn *TcpConn) RemoteAddr() net.Addr
- func (conn *TcpConn) SetDeadline(t time.Time) error
- func (conn *TcpConn) SetReadDeadline(t time.Time) error
- func (conn *TcpConn) SetWriteDeadline(t time.Time) error
- func (conn *TcpConn) StartCompress(buildCompress BuildCompressor)
- func (conn *TcpConn) StartTLS(conf *tls.Config)
- func (conn *TcpConn) Write(b []byte) (int, error)
- type TcpConnGrabber
- type ToAuth
- type WsConnGrabber
- type XChannel
- func (xc *XChannel) Close()
- func (xc *XChannel) NextElement(elem *stravaganza.Element) error
- func (xc *XChannel) Open(attr *PartAttr) error
- func (gs *XChannel) Send(bs []byte) error
- func (gs *XChannel) SendElement(elem stravaganza.Element) error
- func (gs *XChannel) SendToken(token xml.Token) error
- func (xc *XChannel) SetLogger(logger Logger)
- func (xc *XChannel) WaitHeader(header *xml.StartElement) error
- func (xc *XChannel) WaitSecOnClose(sec int)
- type XLogger
- type XPart
- func (part *XPart) Attr() *PartAttr
- func (part *XPart) Channel() Channel
- func (part *XPart) Conn() Conn
- func (part *XPart) ID() string
- func (part *XPart) Logger() Logger
- func (part *XPart) OnCloseToken()
- func (part *XPart) OnOpenHeader(header xml.StartElement) error
- func (part *XPart) OnWhiteSpace([]byte)
- func (er *XPart) Quit()
- func (part *XPart) Run() chan error
- func (er XPart) Running() bool
- func (er *XPart) SetHandleLimit(limit int)
- func (part *XPart) Stop()
- func (er *XPart) WithElemHandler(handler ElemHandler)
- func (part *XPart) WithFeature(f Feature)
Constants ¶
View Source
const ( NSBind = "urn:ietf:params:xml:ns:xmpp-bind" NSStanza = "urn:ietf:params:xml:ns:xmpp-stanzas" BEResourceConstraint = "wait: resource constraint" BENotAllowed = "cancel: not allowed" )
View Source
const ( NSStream = "http://etherx.jabber.org/streams" NSFraming = "urn:ietf:params:xml:ns:xmpp-framing" )
View Source
const ( NSCompress = "http://jabber.org/protocol/compress" CESetupFailed = "setup-failed" CEUnsupportedMethod = "unsupported-method" ZLIB = "zlib" LZW = "lzw" )
View Source
const ( ForC2S = ConnFor("C2S") ForS2S = ConnFor("S2S") TCPConn = ConnType("TCP") TLSConn = ConnType("TLS") WSConn = ConnType("WS-TCP") WSTLSConn = ConnType("WS-TLS") )
View Source
const ( LogDebug = LogLevel(0) LogInfo = LogLevel(1) LogWarning = LogLevel(2) LogError = LogLevel(3) LogFatal = LogLevel(4) )
View Source
const ( NSSasl = "urn:ietf:params:xml:ns:xmpp-sasl" SM_EXTERNAL = "EXTERNAL" // where authentication is implicit in the context (e.g., for protocols already using IPsec or TLS) SM_ANONYMOUS = "ANONYMOUS" // for unauthenticated guest access SM_PLAIN = "PLAIN" // a simple cleartext password mechanism, defined in RFC 4616 SM_OTP = "OTP" // a one-time password mechanism. Obsoletes the SKEY mechanism SM_SKEY = "SKEY" // an S/KEY mechanism SM_DIGEST_MD5 = "DIGEST-MD5" // partially HTTP Digest compatible challenge-response scheme based upon MD5. DIGEST-MD5 offered a data security layer. SM_SCRAM_SHA_1 = "SCRAM-SHA-1" // (RFC 5802), modern challenge-response scheme based mechanism with channel binding support SM_SCRAM_SHA_1_PLUS = "SCRAM-SHA-1-PLUS" // (RFC 5802), modern challenge-response scheme based mechanism with channel binding support SM_SCRAM_SHA_256 = "SCRAM-SHA-256" // (RFC 5802), modern challenge-response scheme based mechanism with channel binding support SM_SCRAM_SHA_256_PLUS = "SCRAM-SHA-256-PLUS" // (RFC 5802), modern challenge-response scheme based mechanism with channel binding support SM_SCRAM_SHA_512 = "SCRAM-SHA-512" // (RFC 5802), modern challenge-response scheme based mechanism with channel binding support SM_SCRAM_SHA_512_PLUS = "SCRAM-SHA-512-PLUS" // (RFC 5802), modern challenge-response scheme based mechanism with channel binding support SM_NTLM = "NTLM" // an NT LAN Manager authentication mechanism SM_GS2_ = "GS2-" // family of mechanisms supports arbitrary GSS-API mechanisms in SASL.[3] It is now standardized as RFC 5801. SM_GSSAPI = "GSSAPI" // for Kerberos V5 authentication via the GSSAPI. GSSAPI offers a data-security layer. SM_BROWSERID_AES128 = "BROWSERID-AES128" // for Mozilla Persona authentication SM_EAP_AES128 = "EAP-AES128" // for GSS EAP authentication SM_OAUTH_1 = "OAUTH-1" // bearer tokens (RFC 6750), communicated through TLS SM_OAUTH_2 = "OAUTH-2" // bearer tokens (RFC 6750), communicated through TLS SFAborted = "aborted" SFAccountDisabled = "account-disabled" SFCredentialsExpired = "credentials-expired" SFEncryptionRequired = "encryption-required" SFIncorrectEncoding = "incorrect-encoding" SFInvalidAuthzid = "invalid-authzid" SFInvalidMechanism = "invalid-mechanism" SFMalformedRequest = "malformed-request" SFMechanismTooWeak = "mechanism-too-weak" SFNotAuthorized = "not-authorized" SFTemporaryAuthFailure = "temporary-auth-failure" )
View Source
const ( NameIQ = "iq" NamePresence = "presence" NameMsg = "message" // for iq TypeGet = StanzaType("get") TypeSet = StanzaType("set") TypeResult = StanzaType("result") TypeError = StanzaType("error") // for presence TypeSub = StanzaType("subscribe") TypeUnsub = StanzaType("unsubscribe") TypeSubed = StanzaType("subscribed") TypeUnsubed = StanzaType("unsubscribed") )
View Source
const (
ErrHashNotSupported = "hash not supported"
)
View Source
const (
NSTls = "urn:ietf:params:xml:ns:xmpp-tls"
)
Variables ¶
View Source
var ( ErrNotHeaderStart = errors.New("not a start header") ErrChannelClosed = errors.New("channel closed") ErrNotForThisDomainHead = errors.New("not for this domain header") )
View Source
var ( ErrUnproperFromAttr = errors.New("unproper from attr") ErrIncorrectJidEncoding = errors.New("incorrect jid encoding") )
View Source
var ( ErrNotRequiredFailure = errors.New("parsed element not a required failure") ErrNotStanzaErr = errors.New("not stanza error") )
View Source
var ( ErrOnNextTokenTimeout = errors.New("get next token timeout") ErrOnNextElementnTimeout = errors.New("get next element timeout") ErrClientIgnoredTheFeature = errors.New("client ignored the feature") ErrUnhandledElement = errors.New("unhandled element") )
View Source
var AllSaslFailures = []string{ SFAborted, SFAccountDisabled, SFCredentialsExpired, SFEncryptionRequired, SFIncorrectEncoding, SFInvalidAuthzid, SFInvalidMechanism, SFMalformedRequest, SFMechanismTooWeak, SFNotAuthorized, SFTemporaryAuthFailure}
View Source
var (
ErrBindTlsUniqueNotSupported = errors.New("bind tls unique not supported")
)
View Source
var ErrNoElement = errors.New("parser: no elements")
ErrNoElement will be returned by Parse when no elements are available to be parsed in the reader buffer stream.
View Source
var (
ErrNotIqBind = errors.New("not iq bind")
)
View Source
var ErrStreamClosedByPeer = errors.New("parser: stream closed by peer")
ErrStreamClosedByPeer will be returned by Parse when stream closed element is parsed.
View Source
var ErrTooLargeStanza = errors.New("parser: too large stanza")
ErrTooLargeStanza will be returned Parse when the size of the incoming stanza is too large.
View Source
var ErrUnexpectedToken = errors.New("parser: unexpected token")
Functions ¶
func AuthPayload ¶
func BindFeature ¶
func BindFeature(rsb ResourceBinder) bindFeature
func ClientBindFeature ¶
func ClientBindFeature(rb ResourceBinder, resource string) clientBindFeature
func ClientCompressFeature ¶
func ClientCompressFeature() clientCompressFeature
func ClientSASLFeature ¶
func ClientSASLFeature() clientSASLFeature
func ClientTlsFeature ¶
func CompressFeature ¶
func CompressFeature() compressionFeature
func ElemRunner ¶
func ElemRunner(channel Channel) elemRunner
func SASLFeature ¶
func SASLFeature(authorized Authorized) saslFeature
func SaslFailureElem ¶
func SaslFailureElem(tagName, desc string) stravaganza.Element
func SaslFailureElemFromError ¶
func SaslFailureElemFromError(err error) stravaganza.Element
func SaslFailureError ¶
func TlsFailureElem ¶
func TlsFailureElem() stravaganza.Element
func TlsFeature ¶
Types ¶
type Authorized ¶
type BuildCompressor ¶
type BuildCompressor func(io.ReadWriter) Compressor
type ClientPart ¶
type ClientPart struct {
// contains filtered or unexported fields
}
func NewClientPart ¶
func NewClientPart(conn Conn, logger Logger, s *PartAttr) *ClientPart
func (*ClientPart) Attr ¶
func (od *ClientPart) Attr() *PartAttr
func (*ClientPart) Channel ¶
func (od *ClientPart) Channel() Channel
func (*ClientPart) Conn ¶
func (od *ClientPart) Conn() Conn
func (*ClientPart) ID ¶
func (od *ClientPart) ID() string
func (*ClientPart) Logger ¶
func (od *ClientPart) Logger() Logger
func (*ClientPart) Negotiate ¶
func (od *ClientPart) Negotiate() error
func (*ClientPart) OnCloseToken ¶
func (od *ClientPart) OnCloseToken()
func (*ClientPart) OnOpenHeader ¶
func (od *ClientPart) OnOpenHeader(header xml.StartElement) error
func (*ClientPart) OnWhiteSpace ¶
func (od *ClientPart) OnWhiteSpace(bs []byte)
func (*ClientPart) Run ¶
func (od *ClientPart) Run() chan error
func (*ClientPart) SetHandleLimit ¶
func (er *ClientPart) SetHandleLimit(limit int)
func (*ClientPart) Stop ¶
func (od *ClientPart) Stop()
func (*ClientPart) WithElemHandler ¶
func (er *ClientPart) WithElemHandler(handler ElemHandler)
func (*ClientPart) WithFeature ¶
func (od *ClientPart) WithFeature(h ElemHandler)
type CompZlib ¶
type CompZlib struct {
// contains filtered or unexported fields
}
func NewCompZlib ¶
func NewCompZlib(rw io.ReadWriter) *CompZlib
type CompressFailure ¶
type CompressFailure struct {
DescTag string
}
func (*CompressFailure) FromElem ¶
func (cf *CompressFailure) FromElem(elem stravaganza.Element) error
func (CompressFailure) ToElem ¶
func (cf CompressFailure) ToElem(elem *stravaganza.Element)
type Compressor ¶
type Compressor interface { io.ReadWriter }
type ConnGrabber ¶
type ElemHandler ¶
type ElementableError ¶
type ElementableError interface { error ToElem(*stravaganza.Element) }
type Feature ¶
type Feature interface { Elem() stravaganza.Element Mandatory() bool Handled() bool ElemHandler }
type IDAble ¶
type IDAble struct {
// contains filtered or unexported fields
}
func CreateIDAble ¶
func CreateIDAble() IDAble
type IqErrHandler ¶
type LocalConn ¶
type LocalConn struct {
// contains filtered or unexported fields
}
a conn mainly for test
func NewLocalConn ¶
func NewLocalConnPair ¶
func (*LocalConn) RemoteAddr ¶
type LocalConnAddr ¶
type LocalConnAddr struct {
// contains filtered or unexported fields
}
func NewLocalConnAddr ¶
func NewLocalConnAddr(port string) *LocalConnAddr
func (*LocalConnAddr) Network ¶
func (addr *LocalConnAddr) Network() string
func (*LocalConnAddr) String ¶
func (addr *LocalConnAddr) String() string
type MemoryAuthUser ¶
type MemoryAuthUser struct {
// contains filtered or unexported fields
}
func NewMemomryAuthUser ¶
func (*MemoryAuthUser) ID ¶
func (au *MemoryAuthUser) ID() string
func (*MemoryAuthUser) IterationCount ¶
func (au *MemoryAuthUser) IterationCount() int
func (*MemoryAuthUser) Password ¶
func (au *MemoryAuthUser) Password(hashName string) (string, error)
func (*MemoryAuthUser) Salt ¶
func (au *MemoryAuthUser) Salt() string
func (*MemoryAuthUser) Username ¶
func (au *MemoryAuthUser) Username() string
type MemoryAuthUserFetcher ¶
type MemoryAuthUserFetcher struct {
// contains filtered or unexported fields
}
func NewMemoryAuthUserFetcher ¶
func NewMemoryAuthUserFetcher() *MemoryAuthUserFetcher
func (*MemoryAuthUserFetcher) Add ¶
func (uf *MemoryAuthUserFetcher) Add(user *MemoryAuthUser)
func (*MemoryAuthUserFetcher) UserByUsername ¶
func (uf *MemoryAuthUserFetcher) UserByUsername(username string) (ScramAuthUser, error)
type MemoryAuthorized ¶
type MemoryAuthorized struct {
// contains filtered or unexported fields
}
func NewMemoryAuthorized ¶
func NewMemoryAuthorized() *MemoryAuthorized
func (*MemoryAuthorized) Authorized ¶
func (ma *MemoryAuthorized) Authorized(_ string, part Part)
func (*MemoryAuthorized) BindResource ¶
func (ma *MemoryAuthorized) BindResource(part Part, resource string) (string, error)
func (*MemoryAuthorized) FindPart ¶
func (ma *MemoryAuthorized) FindPart(jid *JID) Part
type MemoryPlainAuthUser ¶
type MemoryPlainAuthUser struct {
// contains filtered or unexported fields
}
func NewMemoryPlainAuthUser ¶
func NewMemoryPlainAuthUser(username, password string) *MemoryPlainAuthUser
func (*MemoryPlainAuthUser) Password ¶
func (mpu *MemoryPlainAuthUser) Password() string
func (*MemoryPlainAuthUser) Username ¶
func (mpu *MemoryPlainAuthUser) Username() string
type MemoryPlainAuthUserFetcher ¶
type MemoryPlainAuthUserFetcher struct {
// contains filtered or unexported fields
}
func NewMemoryPlainAuthUserFetcher ¶
func NewMemoryPlainAuthUserFetcher() *MemoryPlainAuthUserFetcher
func (*MemoryPlainAuthUserFetcher) Add ¶
func (mpuf *MemoryPlainAuthUserFetcher) Add(u *MemoryPlainAuthUser)
func (*MemoryPlainAuthUserFetcher) UserByUsername ¶
func (mpuf *MemoryPlainAuthUserFetcher) UserByUsername(username string) (PlainAuthUser, error)
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
Parser parses arbitrary XML input and builds an array with the structure of all tag and data elements.
type Part ¶
type Part interface { ID() string Attr() *PartAttr Channel() Channel WithElemHandler(ElemHandler) Logger() Logger Conn() Conn OnOpenHeader(header xml.StartElement) error OnCloseToken() OnWhiteSpace([]byte) }
type PartAttr ¶
type PartAttr struct { ID string JID JID // client's jid Domain string // server domain Version string Xmlns string XmlLang string OpenTag bool }
func (*PartAttr) ParseToClient ¶
func (sa *PartAttr) ParseToClient(elem xml.StartElement) error
func (*PartAttr) ParseToServer ¶
func (sa *PartAttr) ParseToServer(elem xml.StartElement) error
func (*PartAttr) ToClientHead ¶
func (attr *PartAttr) ToClientHead(elem *xml.StartElement)
func (*PartAttr) ToServerHead ¶
func (attr *PartAttr) ToServerHead(elem *xml.StartElement)
type PlainAuth ¶
type PlainAuth struct {
// contains filtered or unexported fields
}
func NewPlainAuth ¶
func NewPlainAuth(uf PlainAuthUserFetcher, hashCreate func() hash.Hash) *PlainAuth
type PlainAuthUser ¶
type PlainAuthUserFetcher ¶
type PlainAuthUserFetcher interface {
UserByUsername(string) (PlainAuthUser, error)
}
type Receiver ¶
type Receiver interface { NextElement(elem *stravaganza.Element) error // contains filtered or unexported methods }
type ResourceBinder ¶
type ScramAuth ¶
type ScramAuth struct {
// contains filtered or unexported fields
}
func NewScramAuth ¶
func NewScramAuth(userFetcher ScramAuthUserFetcher, hashBuild func() hash.Hash, useCB bool) *ScramAuth
type ScramAuthUser ¶
type ScramAuthUserFetcher ¶
type ScramAuthUserFetcher interface {
UserByUsername(username string) (ScramAuthUser, error)
}
type ScramToAuth ¶
type ScramToAuth struct {
// contains filtered or unexported fields
}
func NewScramToAuth ¶
func NewScramToAuth(u, p string, mechanism string, useCB bool) *ScramToAuth
type Stanza ¶
type Stanza struct { Name string Type StanzaType ID string From string To string }
func (Stanza) ToElemBuilder ¶
func (stanza Stanza) ToElemBuilder() *stravaganza.Builder
type StanzaErrHandler ¶
type StanzaErrHandler struct { Name string // contains filtered or unexported fields }
func (StanzaErrHandler) Handle ¶
func (seh StanzaErrHandler) Handle(_ stravaganza.Element, part Part) error
func (*StanzaErrHandler) Match ¶
func (seh *StanzaErrHandler) Match(elem stravaganza.Element) bool
type StanzaType ¶
type StanzaType string
type TcpConn ¶
type TcpConn struct {
// contains filtered or unexported fields
}
func (*TcpConn) RemoteAddr ¶
func (*TcpConn) StartCompress ¶
func (conn *TcpConn) StartCompress(buildCompress BuildCompressor)
type TcpConnGrabber ¶
type TcpConnGrabber struct {
// contains filtered or unexported fields
}
func NewTcpConnGrabber ¶
func NewTcpConnGrabber(listenOn string, connFor ConnFor, logger Logger) *TcpConnGrabber
func (*TcpConnGrabber) Cancel ¶
func (tc *TcpConnGrabber) Cancel()
func (*TcpConnGrabber) For ¶
func (tc *TcpConnGrabber) For() ConnFor
func (*TcpConnGrabber) Grab ¶
func (tc *TcpConnGrabber) Grab(connChan chan Conn) error
func (*TcpConnGrabber) ReplaceLogger ¶
func (tc *TcpConnGrabber) ReplaceLogger(logger Logger)
func (*TcpConnGrabber) Type ¶
func (tc *TcpConnGrabber) Type() ConnType
func (*TcpConnGrabber) UpgradeToTls ¶
func (tc *TcpConnGrabber) UpgradeToTls(certFile, keyFile string) error
type WsConnGrabber ¶
type WsConnGrabber struct {
// contains filtered or unexported fields
}
func NewWsConnGrabber ¶
func (*WsConnGrabber) Cancel ¶
func (wsc *WsConnGrabber) Cancel()
func (*WsConnGrabber) For ¶
func (wsc *WsConnGrabber) For() ConnFor
func (*WsConnGrabber) Grab ¶
func (wsc *WsConnGrabber) Grab(connChan chan Conn) error
func (*WsConnGrabber) Type ¶
func (wsc *WsConnGrabber) Type() ConnType
func (*WsConnGrabber) UpgradeToTls ¶
func (wsc *WsConnGrabber) UpgradeToTls(certFile, keyFile string) error
type XChannel ¶
type XChannel struct {
// contains filtered or unexported fields
}
func NewXChannel ¶
func (*XChannel) NextElement ¶
func (*XChannel) SendElement ¶
func (*XChannel) WaitHeader ¶
func (xc *XChannel) WaitHeader(header *xml.StartElement) error
func (*XChannel) WaitSecOnClose ¶
type XLogger ¶
type XLogger struct {
// contains filtered or unexported fields
}
func (*XLogger) SetLogLevel ¶
type XPart ¶
type XPart struct {
// contains filtered or unexported fields
}
func (*XPart) OnCloseToken ¶
func (part *XPart) OnCloseToken()
func (*XPart) OnOpenHeader ¶
func (part *XPart) OnOpenHeader(header xml.StartElement) error
func (*XPart) OnWhiteSpace ¶
func (*XPart) SetHandleLimit ¶
func (er *XPart) SetHandleLimit(limit int)
func (*XPart) WithElemHandler ¶
func (er *XPart) WithElemHandler(handler ElemHandler)
func (*XPart) WithFeature ¶
Source Files ¶
- bind_feature.go
- channel.go
- client_bind_feature.go
- client_compress_feature.go
- client_part.go
- client_sasl_feature.go
- client_tls_feature.go
- compress.go
- compress_feature.go
- conn.go
- conn_grabber.go
- local_conn.go
- log.go
- memory_auth_user.go
- parser.go
- plain_auth.go
- sasl_feature.go
- scram_auth.go
- scram_toauth.go
- stanza.go
- tls_feature.go
- xmpp_core.go
Click to show internal directories.
Click to hide internal directories.