initial commit

This commit is contained in:
mikhail "synzr" 2025-12-25 01:37:49 +05:00
commit 9d20827c46
2469 changed files with 470994 additions and 0 deletions

View file

@ -0,0 +1,193 @@
/*
* Copyright (C) 2003 Justin Karneges
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#ifndef XMPP_CLIENT_H
#define XMPP_CLIENT_H
#include <QObject>
#include <QStringList>
#include "xmpp_jid.h"
#include "xmpp_status.h"
#include "xmpp_discoitem.h"
class QString;
class QDomElement;
class QDomDocument;
namespace XMPP {
class ClientStream;
class Features;
class FileTransferManager;
class IBBManager;
class JidLinkManager;
class LiveRoster;
class LiveRosterItem;
class Message;
class Resource;
class ResourceList;
class Roster;
class RosterItem;
class S5BManager;
class Stream;
class Task;
}
namespace XMPP
{
class Client : public QObject
{
Q_OBJECT
public:
Client(QObject *parent=0);
~Client();
bool isActive() const;
void connectToServer(ClientStream *s, const Jid &j, bool auth=true);
void start(const QString &host, const QString &user, const QString &pass, const QString &resource);
void close(bool fast=false);
Stream & stream();
QString streamBaseNS() const;
const LiveRoster & roster() const;
const ResourceList & resourceList() const;
void send(const QDomElement &);
void send(const QString &);
QString host() const;
QString user() const;
QString pass() const;
QString resource() const;
Jid jid() const;
void rosterRequest();
void sendMessage(const Message &);
void sendSubscription(const Jid &, const QString &, const QString& nick = QString());
void setPresence(const Status &);
void debug(const QString &);
QString genUniqueId();
Task *rootTask();
QDomDocument *doc() const;
QString OSName() const;
QString timeZone() const;
int timeZoneOffset() const;
QString clientName() const;
QString clientVersion() const;
QString capsNode() const;
QString capsVersion() const;
QString capsExt() const;
void setOSName(const QString &);
void setTimeZone(const QString &, int);
void setClientName(const QString &);
void setClientVersion(const QString &);
void setCapsNode(const QString &);
void setCapsVersion(const QString &);
void setIdentity(DiscoItem::Identity);
DiscoItem::Identity identity();
void setFeatures(const Features& f);
const Features& features() const;
void addExtension(const QString& ext, const Features& f);
void removeExtension(const QString& ext);
const Features& extension(const QString& ext) const;
QStringList extensions() const;
S5BManager *s5bManager() const;
IBBManager *ibbManager() const;
JidLinkManager *jidLinkManager() const;
void setFileTransferEnabled(bool b);
FileTransferManager *fileTransferManager() const;
QString groupChatPassword(const QString& host, const QString& room) const;
bool groupChatJoin(const QString &host, const QString &room, const QString &nick, const QString& password = QString(), int maxchars = -1, int maxstanzas = -1, int seconds = -1, const Status& = Status());
void groupChatSetStatus(const QString &host, const QString &room, const Status &);
void groupChatChangeNick(const QString &host, const QString &room, const QString &nick, const Status &);
void groupChatLeave(const QString &host, const QString &room);
signals:
void activated();
void disconnected();
//void authFinished(bool, int, const QString &);
void rosterRequestFinished(bool, int, const QString &);
void rosterItemAdded(const RosterItem &);
void rosterItemUpdated(const RosterItem &);
void rosterItemRemoved(const RosterItem &);
void resourceAvailable(const Jid &, const Resource &);
void resourceUnavailable(const Jid &, const Resource &);
void presenceError(const Jid &, int, const QString &);
void subscription(const Jid &, const QString &, const QString &);
void messageReceived(const Message &);
void debugText(const QString &);
void xmlIncoming(const QString &);
void xmlOutgoing(const QString &);
void groupChatJoined(const Jid &);
void groupChatLeft(const Jid &);
void groupChatPresence(const Jid &, const Status &);
void groupChatError(const Jid &, int, const QString &);
void incomingJidLink();
void beginImportRoster();
void endImportRoster();
private slots:
//void streamConnected();
//void streamHandshaken();
//void streamError(const StreamError &);
//void streamSSLCertificateReady(const QSSLCert &);
//void streamCloseFinished();
void streamError(int);
void streamReadyRead();
void streamIncomingXml(const QString &);
void streamOutgoingXml(const QString &);
void slotRosterRequestFinished();
// basic daemons
void ppSubscription(const Jid &, const QString &, const QString&);
void ppPresence(const Jid &, const Status &);
void pmMessage(const Message &);
void prRoster(const Roster &);
void s5b_incomingReady();
void ibb_incomingReady();
public:
class GroupChat;
private:
void cleanup();
void distribute(const QDomElement &);
void importRoster(const Roster &);
void importRosterItem(const RosterItem &);
void updateSelfPresence(const Jid &, const Status &);
void updatePresence(LiveRosterItem *, const Jid &, const Status &);
class ClientPrivate;
ClientPrivate *d;
};
}
#endif