Public Member Functions |
| Client (const std::string &server) |
| Client (const JID &jid, const std::string &password, int port=-1) |
virtual | ~Client () |
bool | bindResource (const std::string &resource) |
bool | selectResource (const std::string &resource) |
bool | hasResourceBind () const |
bool | unbindResource (const std::string &resource) |
const std::string & | resource () const |
int | priority () const |
void | setUsername (const std::string &username) |
void | setResource (const std::string &resource) |
void | setPresence (const JID &to, Presence::PresenceType pres, int priority, const std::string &status=EmptyString) |
void | setPresence (Presence::PresenceType pres, int priority, const std::string &status=EmptyString) |
void | setPresence () |
Presence & | presence () |
GLOOX_DEPRECATED void | setForceNonSasl (bool force=true) |
void | disableRoster () |
RosterManager * | rosterManager () |
void | disconnect () |
bool | login () |
| ClientBase (const std::string &ns, const std::string &server, int port=-1) |
| ClientBase (const std::string &ns, const std::string &password, const std::string &server, int port=-1) |
virtual | ~ClientBase () |
bool | connect (bool block=true) |
ConnectionError | recv (int timeout=-1) |
virtual const std::string & | username () const |
const JID & | jid () |
void | setSasl (bool sasl) |
void | setTls (TLSPolicy tls) |
void | setCompression (bool compression) |
void | setPort (int port) |
void | setServer (const std::string &server) |
void | setPassword (const std::string &password) |
const std::string & | server () const |
bool | sasl () const |
TLSPolicy | tls () const |
bool | compression () const |
int | port () const |
virtual const std::string & | password () const |
virtual Disco * | disco () const |
const std::string | getID () |
void | send (Tag *tag) |
void | send (IQ &iq, IqHandler *ih, int context, bool del=false) |
void | send (const IQ &iq) |
void | send (const Message &msg) |
void | send (const Subscription &sub) |
void | send (Presence &pres) |
bool | authed () const |
ConnectionState | state () const |
const std::string & | xmlLang () const |
void | setXmlLang (const std::string &xmllang) |
ConnectionBase * | connectionImpl () const |
void | setConnectionImpl (ConnectionBase *cb) |
TLSBase * | encryptionImpl () const |
void | setEncryptionImpl (TLSBase *tb) |
CompressionBase * | compressionImpl () const |
void | setCompressionImpl (CompressionBase *cb) |
void | whitespacePing () |
void | xmppPing (const JID &to, EventHandler *eh) |
void | setAuthzid (const JID &authzid) |
void | setAuthcid (const std::string &authcid) |
void | setSASLMechanisms (int mechanisms) |
void | registerStanzaExtension (StanzaExtension *ext) |
bool | removeStanzaExtension (int ext) |
void | registerConnectionListener (ConnectionListener *cl) |
void | registerIqHandler (IqHandler *ih, int exttype) |
void | removeIDHandler (IqHandler *ih) |
void | registerMessageHandler (MessageHandler *mh) |
void | removeMessageHandler (MessageHandler *mh) |
void | registerMessageSession (MessageSession *session) |
void | disposeMessageSession (MessageSession *session) |
void | registerPresenceHandler (PresenceHandler *ph) |
void | registerPresenceHandler (const JID &jid, PresenceHandler *ph) |
void | registerSubscriptionHandler (SubscriptionHandler *sh) |
void | registerTagHandler (TagHandler *th, const std::string &tag, const std::string &xmlns) |
void | registerStatisticsHandler (StatisticsHandler *sh) |
void | removeConnectionListener (ConnectionListener *cl) |
void | removeIqHandler (IqHandler *ih, int exttype) |
void | removePresenceHandler (PresenceHandler *ph) |
void | removePresenceHandler (const JID &jid, PresenceHandler *ph) |
void | removeSubscriptionHandler (SubscriptionHandler *sh) |
void | removeTagHandler (TagHandler *th, const std::string &tag, const std::string &xmlns) |
void | removeStatisticsHandler () |
void | setCACerts (const StringList &cacerts) |
void | setClientCert (const std::string &clientKey, const std::string &clientCerts) |
void | registerMessageSessionHandler (MessageSessionHandler *msh, int types=0) |
LogSink & | logInstance () |
StreamError | streamError () const |
const std::string & | streamErrorText (const std::string &lang="default") const |
const std::string & | streamErrorCData () const |
const Tag * | streamErrorAppCondition () const |
AuthenticationError | authError () const |
StatisticsStruct | getStatistics () |
void | registerMUCInvitationHandler (MUCInvitationHandler *mih) |
void | removeMUCInvitationHandler () |
void | addPresenceExtension (StanzaExtension *se) |
bool | removePresenceExtension (int type) |
const StanzaExtensionList & | presenceExtensions () const |
virtual void | handleTag (Tag *tag) |
virtual void | handleCompressedData (const std::string &data) |
virtual void | handleDecompressedData (const std::string &data) |
virtual void | handleReceivedData (const ConnectionBase *connection, const std::string &data) |
virtual void | handleConnect (const ConnectionBase *connection) |
virtual void | handleDisconnect (const ConnectionBase *connection, ConnectionError reason) |
virtual void | handleEncryptedData (const TLSBase *base, const std::string &data) |
virtual void | handleDecryptedData (const TLSBase *base, const std::string &data) |
virtual void | handleHandshakeResult (const TLSBase *base, bool success, CertInfo &certinfo) |
Public Member Functions inherited from TagHandler |
virtual | ~TagHandler () |
Public Member Functions inherited from ConnectionDataHandler |
virtual | ~ConnectionDataHandler () |
Public Member Functions inherited from CompressionDataHandler |
virtual | ~CompressionDataHandler () |
Public Member Functions inherited from TLSHandler |
virtual | ~TLSHandler () |
Public Member Functions inherited from IqHandler |
virtual | ~IqHandler () |
virtual bool | handleIq (const IQ &iq)=0 |
virtual void | handleIqID (const IQ &iq, int context)=0 |
This class implements a basic Jabber Client.
It supports SASL Authentication as well as TLS (Encryption), which can be switched on/off separately. They are used automatically if the server supports them.
To use, create a new Client instance and feed it connection credentials, either in the Constructor or afterwards using the setters. You should then register packet handlers implementing the corresponding Interfaces (ConnectionListener, PresenceHandler, MessageHandler, IqHandler, SubscriptionHandler), and call connect() to establish the connection to the server.
- Note
- While the MessageHandler interface is still available (and will be in future versions) it is now recommended to use the new MessageSession for any serious messaging.
Simple usage example:
using namespace gloox;
void TestProg::doIt()
{
Client* j =
new Client(
"user@server/resource",
"password" );
}
{
}
However, you can skip the presence handling stuff if you make use of the RosterManager.
By default, the library handles a few (incoming) IQ namespaces on the application's behalf. These include:
- jabber:iq:roster: by default the server-side roster is fetched and handled. Use rosterManager() and RosterManager to interact with the Roster.
- XEP-0092 (Software Version): If no version is specified, a name of "based on gloox" with gloox's current version is announced.
- XEP-0030 (Service Discovery): All supported/available services are announced. No items are returned.
- Note
- As of gloox 0.9, by default a priority of 0 is sent along with the initial presence.
-
As of gloox 0.9, initial presence is automatically sent. Presence: available, Priority: 0. To disable sending of initial Presence use setPresence() with a value of Unavailable prior to connecting.
SASL Authentication
Besides the simple, IQ-based authentication (XEP-0078), gloox supports several SASL (Simple Authentication and Security Layer, RFC 2222) authentication mechanisms.
- DIGEST-MD5: This mechanism is preferred over all other mechanisms if username and password are provided to the Client instance. It is secure even without TLS encryption.
- PLAIN: This mechanism is used if DIGEST-MD5 is not available. It is not secure without encryption.
- ANONYMOUS This mechanism is used if neither username nor password are set. The server generates random, temporary username and resource and may restrict available services.
- EXTERNAL This mechanism is currently only available if client certificate and private key are provided. The server tries to figure out who the client is by external means – for instance, using the provided certificate or even the IP address. (The restriction to certificate/key availability is likely to be lifted in the future.)
Of course, all these mechanisms are not tried unless the server offers them.
- Author
- Jakob Schroeter js@ca.nosp@m.maya.nosp@m..net
Definition at line 98 of file client.h.